服务端
Centos7
# 安装依赖包
yum install python-setuptools && easy_install pip
# 安装Shadowsocks服务端
pip install shadowsocks
Debian / Ubuntu
# 安装依赖包
apt-get install python-pip
# 安装Shadowsocks服务端
pip install shadowsocks
配置文件
# 单SS账号配置
cat > /etc/shadowsocks.json << 'EOF'
{
"server":"0.0.0.0",
"server_port":8388,
"local_address": "127.0.0.1",
"local_port":1080,
"password":"mypassword",
"timeout":300,
"method":"aes-256-cfb",
"fast_open": false
}
EOF
# 多SS账号配置
cat > /etc/shadowsocks.json << 'EOF'
{
"server":"0.0.0.0",
"port_password":{
"8381":"xxxxxxx",
"8382":"xxxxxxx",
"8383":"xxxxxxx",
"8384":"xxxxxxx"
},
"timeout":300,
"method":"aes-256-cfb",
"fast_open": false
}
EOF
配置说明
字段 | 说明 |
---|
server | ss服务端监听地址 |
server_port | ss服务端监听端口 |
local_address | 本地监听地址 |
local_port | 本地监听端口 |
password | 账号秘密 |
timeout | 超时时间,单位秒 |
method | 加密方法,默认aes-256-cfb |
fast_open | 使用TCP_FASTOPEN, true / false |
workers | workers数,只支持Unix/Linux系统 |
启动
# 前台启动
ssserver -c /etc/shadowsocks.json
# 后台启动与停止
ssserver -c /etc/shadowsocks.json -d start
ssserver -c /etc/shadowsocks.json -d stop
# 开机自启动
echo "ssserver -c /etc/shadowsocks.json -d start " >> /etc/rc.local
# 日志文件的输出位置
tail -100f /var/log/shadowsocks.log
客户端下载地址
Windows
https://github.com/shadowsocks/shadowsocks-windows/releases
Mac OS X
https://github.com/shadowsocks/ShadowsocksX-NG/releases
Linux
https://github.com/shadowsocks/shadowsocks-qt5/wiki/Installation
https://github.com/shadowsocks/shadowsocks-qt5/releases
IOS
https://itunes.apple.com/app/apple-store/id1070901416?pt=2305194&ct=shadowsocks.org&mt=8
https://github.com/shadowsocks/shadowsocks-iOS/releases
Android
https://play.google.com/store/apps/details?id=com.github.shadowsocks
https://github.com/shadowsocks/shadowsocks-android/releases
遇到问题
安装时
# pip安装shadowsocks时遇到以下问题
[root@vpn ~]# pip install shadowsocks
Collecting shadowsocks
Could not fetch URL https://pypi.python.org/simple/shadowsocks/: There was a problem confirming the ssl certificate: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:618) - skipping
Could not find a version that satisfies the requirement shadowsocks (from versions: )
No matching distribution found for shadowsocks
# 解决SSL 证书验证问题
[root@vpn ~]# pip install shadowsocks --trusted-host pypi.python.org --trusted-host pypi.org --trusted-host files.pythonhosted.org
升级时
# 升级时遇到以下问题
[root@vpn ~]# pip install --upgrade shadowsocks
Could not fetch URL https://pypi.python.org/simple/shadowsocks/: There was a problem confirming the ssl certificate: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:618) - skipping
Requirement already up-to-date: shadowsocks in /usr/lib/python2.7/site-packages
# 解决方法1:忽略SSL证书验证
pip install --upgrade shadowsocks --trusted-host pypi.python.org --trusted-host pypi.org --trusted-host files.pythonhosted.org
# 解决方法2:手动更新Shadowsocks
# 下载最新版本的 Shadowsocks
wget https://github.com/shadowsocks/shadowsocks/archive/master.zip
unzip master.zip
cd shadowsocks-master
# 安装
python setup.py install
修改加密方式时
# 讲默认的加密方式aes-256-cfb修改为其他加密方式时,启动ss服务日志出现以下错误
[root@vpn ~]# ssserver -c /etc/shadowsocks.json -d start
INFO: loading config from /etc/shadowsocks.json
2024-07-29 09:25:28 INFO loading libcrypto from libcrypto.so.3
Traceback (most recent call last):
File "/usr/local/bin/ssserver", line 33, in <module>
sys.exit(load_entry_point('shadowsocks==3.0.0', 'console_scripts', 'ssserver')())
File "/usr/local/lib/python3.9/site-packages/shadowsocks/server.py", line 34, in main
config = shell.get_config(False)
File "/usr/local/lib/python3.9/site-packages/shadowsocks/shell.py", line 355, in get_config
check_config(config, is_local)
File "/usr/local/lib/python3.9/site-packages/shadowsocks/shell.py", line 210, in check_config
cryptor.try_cipher(config['password'], config['method'],
File "/usr/local/lib/python3.9/site-packages/shadowsocks/cryptor.py", line 51, in try_cipher
Cryptor(key, method, crypto_path)
File "/usr/local/lib/python3.9/site-packages/shadowsocks/cryptor.py", line 98, in __init__
self.cipher = self.get_cipher(
File "/usr/local/lib/python3.9/site-packages/shadowsocks/cryptor.py", line 130, in get_cipher
return m[METHOD_INFO_CRYPTO](method, key, iv, op, self.crypto_path)
File "/usr/local/lib/python3.9/site-packages/shadowsocks/crypto/openssl.py", line 151, in __init__
AeadCryptoBase.__init__(self, cipher_name, key, iv, op, crypto_path)
File "/usr/local/lib/python3.9/site-packages/shadowsocks/crypto/aead.py", line 162, in __init__
load_sodium(path)
File "/usr/local/lib/python3.9/site-packages/shadowsocks/crypto/aead.py", line 81, in load_sodium
libsodium = util.find_library('sodium', 'sodium_increment',
File "/usr/local/lib/python3.9/site-packages/shadowsocks/crypto/util.py", line 80, in find_library
path = ctypes.util.find_library(name)
File "/usr/lib64/python3.9/ctypes/util.py", line 330, in find_library
_get_soname(_findLib_gcc(name)) or _get_soname(_findLib_ld(name))
File "/usr/lib64/python3.9/ctypes/util.py", line 147, in _findLib_gcc
if not _is_elf(file):
File "/usr/lib64/python3.9/ctypes/util.py", line 99, in _is_elf
with open(filename, 'br') as thefile:
FileNotFoundError: [Errno 2] No such file or directory: b'liblibsodium.a'
# 日志可能出现如下提示
load libsodium failed with path None
2024-06-08 04:25:24 INFO connecting www.google.com:443 from 120.245.113.36:34460
load libsodium failed with path None
load libsodium failed with path None
# 解决:安装libsodium库
# Centos
sudo yum install libsodium -y
yum install libsodium-devel -y
# Debian/Ubuntu
sudo apt-get install libsodium23
安装pip时
# 遇到以下错误,原因是在某些旧版Linux系统上,easy_install 和 setuptools 没有被更新,无法找到最新的包
[root@vpn ~]# easy_install pip
Searching for pip
Reading https://pypi.python.org/simple/pip/
Couldn't find index page for 'pip' (maybe misspelled?)
Scanning index of all packages (this may take a while)
Reading https://pypi.python.org/simple/
No local packages or download links found for pip
error: Could not find suitable distribution for Requirement.parse('pip')
# 解决
# 下载 get-pip.py 脚本,这里我们需要python2的
# python2
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py
# 补充一个python3的
# python3
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
# 运行脚本安装pip
python get-pip.py
函数引用错误
# 启动如下错误
[root@vpn ~]# ssserver -c /etc/shadowsocks.json -d start
AttributeError: /lib/x86_64-linux-gnu/libcrypto.so.1.1: undefined symbol: EVP_CIPHER_CTX_cleanup
# 这是由于在openssl 1.1.0中废弃了 EVP_CIPHER_CTX_cleanup() 函数而引入了EVE_CIPHER_CTX_reset() 函数所导致的
# 解决
定位到openssl.py文件,修改调用函数
vim ******local/lib/python3.9/site-packages/shadowsocks/crypto/openssl.py
搜索 cleanup 并将其替换为 reset
%s/cleanup/reset/g