背景
前写了一篇 Shadowsocks-libev 的设置步骤 博文,但晚上突然看到 Github 里的描述,发现后续的开发已经转移到 Rust 分支上了。 Shadowsocks-Rust 不需要手动编译,安装步骤相对来说比较简单。
系统环境准备
apt install -y --no-install-recommends \
gettext \
build-essential \
autoconf \
libtool \
libpcre3-dev \
asciidoc \
xmlto \
libev-dev \
libudns-dev \
libc-ares-dev
接下来的 libmbedtls、libsodium
依赖需要手动编译安装,直接复制下面的命令即可:
# libmbedtls
wget -qO- https://github.com/Mbed-TLS/mbedtls/archive/refs/tags/v3.3.0.tar.gz | tar xzv
cd mbedtls-3.3.0
make SHARED=1 CFLAGS=-fPIC && make DESTDIR=/usr install
# libsodium
wget -qO- https://download.libsodium.org/libsodium/releases/libsodium-1.0.18.tar.gz | tar xzv
cd libsodium-1.0.18
./configure --prefix=/usr && make && make install
下载 Shadowsocks-Rust
这里我选择把程序存放在 /root/shadowsocks
文件夹,你可以依据个人喜好配置:
#创建目录
cd ~ && mkdir shadowsocks && cd shadowsocks
#下载、解压 Shadowsocks-Rust
wget -qO- \
https://github.com/shadowsocks/shadowsocks-rust/releases/download/v1.15.3/shadowsocks-v1.15.3.x86_64-unknown-linux-gnu.tar.xz | \
tar xJf -
上面的命令一定要复制完全
执行上方命令后,你会在目录里看到这几个文件:
- sslocal
- ssmanager
- ssserver
- ssservice
- ssurl
创建配置文件
这里选择在 /root/shadowsocks
目录创建:
cd ~/shadowsocks && nano config.json
配置文件大同小异,这里直接复制上一篇文章的配置:
{
"server":"127.0.0.1", #本地监听地址
"mode":"tcp_only", #TCP、UDP 设置
"server_port":8888, #服务器端口
"local_port":1080,
"password":"password", #密码
"timeout":86400,
"method":"chacha20-ietf-poly1305", #加密方式
}
配置 V2Ray-Plugin
V2Ray-Plugin 是常用的混淆插件,这里选用 teddysun 维护的项目:
wget -qO- https://github.com/teddysun/v2ray-plugin/releases/download/v5.3.0/v2ray-plugin-linux-amd64-v5.3.0.tar.gz | tar xzv
mv v2ray-plugin_linux_amd64 /usr/bin/v2ray-plugin
最后在上一步的配置文件尾部加入两行配置:
{
"server":"127.0.0.1", #本地监听地址
"mode":"tcp_only", #TCP、UDP 设置
"server_port":8888, #服务器端口
"local_port":1080,
"password":"password", #密码
"timeout":86400,
"method":"chacha20-ietf-poly1305", #加密方式
#加入下面两行
"plugin":"v2ray-plugin",
"plugin_opts":"server;host=<你的域名>;path=/random;mux=0",
}
需要把“#”及后方的文字删除
配置 Shadowsocks 系统服务
如果不进行配置,在系统重启之后软件不会自启动。输入如下命令进入编辑:
nano /etc/systemd/system/shadowsocks.service
输入如下内容:
[Unit]
Description=Shadowsocks server
After=network.target
[Service]
ExecStart=/root/shadowsocks/ssserver -c /root/shadowsocks/config.json
Restart=always
[Install]
WantedBy=multi-user.target
保存之后,执行下面的命令启用并运行 Shadowsocks 服务:
systemctl enable shadowsocks && systemctl start shadowsocks
配置 Nginx 反代
Nginx 配置文件示例如下:
server {
listen 443 ssl;
ssl_certificate /path/to/cer; #证书位置
ssl_certificate_key /path/to/key; #密钥位置
ssl_session_timeout 3m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY13>
ssl_conf_command Ciphersuites TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256;
ssl_conf_command Options PrioritizeChaCha;
ssl_prefer_server_ciphers on;
server_name <你的域名>;
location /random {
proxy_redirect off;
proxy_pass http://127.0.0.1:8888;
proxy_set_header Host $http_host;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
注意要提前申请好 TLS 证书,同时要保证
proxy_pass
后的端口与你 config.json
配置文件中的端口一致Clash 客户端配置
在配置文件中,我个人的配置如下:
...
proxies:
- name: <自定义服务器名称>
type: ss
server: <你的域名>
port: 443
cipher: chacha20-ietf-poly1305
password: <服务器密码>
plugin: v2ray-plugin
plugin-opts:
mode: websocket
tls: true
host: <你的域名>
path: /random
mux: 0 #这里的 mux: 0 是为了兼容 Quantumult X 软件。
...
接下来就享受愉快的上网体验吧!