Shadowsocks-rust
临时备用方案,遇到科学上网工具不可用时临时顶替一下。
服务器端运行在国外的 vps 机器上,速度比较慢,但聊胜于无。
选择 Shadowsocks-rust 是因为这个安装起来比较简单,凑合用一下。
下载
下载地址:
https://github.com/shadowsocks/shadowsocks-rust/releases
找到最新版本,下载 linux 版本的,比如 shadowsocks-v1.23.5.x86_64-unknown-linux-gnu.tar.xz。
wget https://github.com/shadowsocks/shadowsocks-rust/releases/download/v1.23.5/shadowsocks-v1.23.5.x86_64-unknown-linux-gnu.tar.xz
tar xvf shadowsocks-v1.23.5.x86_64-unknown-linux-gnu.tar.xz
解压缩出来文件:
$ ls
sslocal
ssserver
ssurl
ssmanager
ssservice
服务器端
安装ssserver
直接复制文件即可:
sudo mv ssserver /usr/local/bin/
配置ssserver
创建配置文件:
sudo mkdir -p /etc/shadowsocks-rust
sudo vi /etc/shadowsocks-rust/config.json
文件内容为:
{
"server": "0.0.0.0",
"server_port": 8388,
"password": "STRONG_PASSWORD",
"method": "aes-128-gcm"
}
密码自行修改,后面连接时要用到。
运行ssserver
手工运行,执行命令:
sudo ssserver -c /etc/shadowsocks-rust/config.json
如果希望开机自动启动,创建 systemd 服务文件:
sudo vi /etc/systemd/system/shadowsocks-rust.service
内容为:
[Unit]
Description=Shadowsocks-Rust Server
After=network.target
[Service]
ExecStart=/usr/local/bin/ssserver -c /etc/shadowsocks-rust/config.json
Restart=on-failure
User=root
LimitNOFILE=51200
[Install]
WantedBy=multi-user.target
重新加载 systemd:
sudo systemctl daemon-reload
启动:
sudo systemctl start shadowsocks-rust
设置开机自启:
sudo systemctl enable shadowsocks-rust
查看状态:
sudo systemctl status shadowsocks-rust
客户端
安装sslocal
直接复制文件即可:
sudo mv sslocal /usr/local/bin/
配置sslocal
创建配置文件:
sudo mkdir -p /etc/shadowsocks-rust
sudo vi /etc/shadowsocks-rust/config.json
文件内容为:
{
"server": "46.202.xx.xx",
"server_port": 8388,
"password": "xxxxxxxxxx",
"method": "aes-128-gcm",
"local_address": "127.0.0.1",
"local_port": 1080
}
密码和端口需要和服务器端一致。local_address 设置为 127.0.0.1,local_port 设置为 1080,这样sslocal 就会在本地监听 1080 端口,然后通过这个端口进行代理。
运行sslocal
手工运行,执行命令:
sudo sslocal -c /etc/shadowsocks-rust/config.json
如果希望开机自动启动,创建 systemd 服务文件:
sudo vi /etc/systemd/system/shadowsocks-rust-client.service
内容为:
[Unit]
Description=Shadowsocks-Rust Client
After=network.target
[Service] ExecStart=/usr/local/bin/sslocal -c /etc/shadowsocks-rust/config.json Restart=on-failure User=root LimitNOFILE=51200
[Install]
WantedBy=multi-user.target
重新加载 systemd:
sudo systemctl daemon-reload
启动:
sudo systemctl start shadowsocks-rust-client
设置开机自启:
sudo systemctl enable shadowsocks-rust-client
查看状态:
sudo systemctl status shadowsocks-rust-client
配置代理
vi ~/.zshrc
增加以下内容:
alias proxyon-shadowsocks='export all_proxy=socks5://127.0.0.1:1080;export http_proxy=http://127.0.0.1:1080;export https_proxy=http://127.0.0.1:1080;export no_proxy=127.0.0.1,localhost,local,.local,.lan,192.168.0.0/16,10.0.0.0/16'
alias proxyoff='unset all_proxy http_proxy https_proxy no_proxy'
保存退出。
日常使用
平时不使用时,执行 proxyoff 命令关闭代理。
使用时执行 proxyon 命令开启代理。
附录:Shadowsocks各组件功能说明
sslocal / ssserver / ssurl / ssmanager / ssservice 是 Shadowsocks 项目中的核心二进制可执行文件,各自承担不同的角色。
Shadowsocks 采用客户端-服务器架构。简单来说,sslocal
是客户端,ssserver
是服务端,而其他工具则用于辅助管理、分享和系统集成。
1. sslocal
- Shadowsocks 本地客户端
核心功能: 作为 Shadowsocks 客户端运行在用户的本地设备上。
详细解释:
- 职责:它负责与远端的
ssserver
进行加密通信。 - 工作流程:
- 在本地启动一个 SOCKS5 代理服务器(默认监听
127.0.0.1:1080
)。 - 当你的浏览器或其他应用配置为使用这个 SOCKS5 代理时,它们发出的网络流量会被发送到
sslocal
。 sslocal
会将这些流量用 Shadowsocks 协议进行加密,然后转发给配置中指定的ssserver
。- 同时,它也接收从
ssserver
返回的加密数据,进行解密后,再通过 SOCKS5 代理返回给最初的应用程序。
- 在本地启动一个 SOCKS5 代理服务器(默认监听
简单比喻:它就像你家里的一个“加密信使”,负责把普通的信件(你的网络流量)加密后寄出去,并把收到的加密回信解密后交给你。
常用场景:在个人电脑、手机或路由器上运行,用于科学上网。
2. ssserver
- Shadowsocks 服务器
核心功能: 作为 Shadowsocks 服务端运行在防火墙之外的远程服务器上(例如 VPS)。
详细解释:
- 职责:它是流量的中转站,负责解密来自客户端的流量,并将其转发到真正的目标网站,反之亦然。
- 工作流程:
- 监听一个特定的端口,等待
sslocal
的连接。 - 收到来自
sslocal
的加密数据后,使用预设的密码和加密方法进行解密,得到原始的网络请求(例如访问google.com
的请求)。 - 将这个原始请求发送到互联网上的目标地址。
- 收到目标地址的响应后,再用同样的加密方式加密,发回给
sslocal
。
- 监听一个特定的端口,等待
简单比喻:它就像你在国外的“代理邮局”,负责接收“加密信使”发来的加密信件,解密后投递给真正的收件人(如 Google),并把回信加密后再寄回给你的“加密信使”。
常用场景:部署在境外的云服务器上,作为翻墙的出口节点。
3. ssurl
- Shadowsocks 链接工具
核心功能: 用于生成和解析 Shadowsocks 的分享链接。
详细解释:
- 生成链接:可以将一个服务器的配置信息(服务器地址、端口、密码、加密方法等)编码成一个标准的
ss://
链接。这种链接易于分享,用户只需扫描二维码或点击链接即可导入配置。 - 解析链接:也可以将一个
ss://
链接解码,显示出明文的服务器配置信息,方便你手动检查或配置。
常用场景:
- 服务器管理员生成配置链接分发给用户。
- 用户从别人那里获得一个
ss://
链接时,可以先用它来检查配置详情。
示例:
bash
# 生成一个链接
ssurl -e -s 1.2.3.4 -p 8388 -m aes-256-gcm -k my_password
# 解码一个链接
ssurl -d ‘ss://YWVzLTI1Ni1nY206bXlfcGFzc3dvcmQ@1.2.3.4:8388‘
4. ssmanager
- Shadowsocks 管理器
核心功能: 一个用于管理多用户/多端口的服务端守护进程。
详细解释:
- 目标用户:主要面向服务提供商或需要为多个用户(每个用户有独立的端口和密码)提供服务的场景。
- 工作模式:它本身不处理具体的 Shadowsocks 流量加密和解密,而是作为一个管理器和流量路由器。
- 通信方式:它通过一个 Unix Domain Socket 或 TCP 接口 接收管理命令(例如添加用户、删除用户)。
- 优势:允许动态地添加、修改和删除端口与密码,而无需重启服务。这比直接运行
ssserver
(配置写死在文件里,改动需要重启)要灵活得多。
常用场景:商业化的 Shadowsocks 服务后端,或者自己搭建需要灵活配置的多用户代理服务。
5. ssservice
- Shadowsocks 系统服务
核心功能: 这是一个在 Windows 系统 上特有的工具。
详细解释:
- 目的:为了将
sslocal
或ssserver
以 Windows 系统服务 的形式在后台运行。 - 解决的问题:在 Windows 中,普通的命令行程序在用户注销后就会被关闭。通过
ssservice
将其安装为系统服务,可以实现在开机后自动启动、在后台无窗口运行、即使用户注销也不中断。 - 本质:它本身不是一个独立的代理核心,而是一个“服务包装器”,用来托管和运行
sslocal.exe
或ssserver.exe
。
常用场景:在 Windows 服务器上长期稳定地运行 ssserver
,或者在 Windows 电脑上让 sslocal
在后台开机自启。
总结表格
二进制文件 | 角色 | 主要功能 | 典型运行位置 |
---|---|---|---|
sslocal |
客户端 | 本地 SOCKS5 代理,加密/解密流量 | 用户自己的设备 |
ssserver |
服务端 | 接收/转发流量,解密/加密流量 | 远程服务器/VPS |
ssurl |
工具 | 生成和解析 ss:// 分享链接 |
任何需要生成或检查配置的地方 |
ssmanager |
服务端管理器 | 动态管理多用户、多端口配置 | 远程服务器/VPS |
ssservice |
Windows服务工具 | 将其他组件作为Windows系统服务运行 | Windows 系统 |