Skip to content

Docker 安装 ShadowSocks 服务端或客户端

基本概念

关于 shadowsocks/ssserver-rustshadowsocks/sslocal-rust,它们分别是 Shadowsocks Rust 版本的服务端客户端程序。下面这个表格能帮你快速了解它们的核心区别和用途:

对比项ssserver-rust (服务端)sslocal-rust (客户端)
核心角色代理服务的提供者,部署在远程服务器上代理服务的使用者,运行在本地设备上
主要功能监听端口,接收/解密客户端请求,转发至目标网站,并返回数据接收本地程序的网络请求,加密后转发给服务端,并接收返回数据
运行位置通常在有公网IP的服务器(如VPS)用户本地电脑、手机、路由器等
典型使用提供翻墙或内网穿透能力为浏览器、游戏等本地应用配置代理

组件功能与使用场景

  • ssserver-rust:它是 Shadowsocks 代理链条的起点。你需要在防火墙后或受网络限制的远程服务器上部署它,由其负责处理所有客户端的连接请求和数据中转。

  • sslocal-rust:它是你本地设备和远程服务器之间的桥梁。它启动后会在本地创建一个代理服务器(通常是 SOCKS5 代理),当你将应用(如浏览器)的网络流量指向它时,它便会负责后续与 ssserver 的加密通信。

注意:默认情况下,Docker 容器无法访问 IPv6。

服务端

使用以下命令为特定的加密方法(例如:aes-256-gcmaes-128-gcm)生成一个安全且加密的密码:

使用 openssl 生成密钥

shell
# 生成 32 字节(256位)的随机密钥(aes-256-gcm)
openssl rand -base64 32

# 生成 16 字节(128位)的随机密钥(aes-128-gcm)
openssl rand -base64 16

# 输出示例(aes-256-gcm):
L2JZ6K4fo9YTvj9ZM1pBcG2e7R3zV9K90T/Wj+k5NBw=

服务端配置文件:server.json

json
{
    "server": "0.0.0.0",
    "server_port": 8388,
    "password": "L2JZ6K4fo9YTvj9ZM1pBcG2e7R3zV9K90T/Wj+k5NBw=",
    "method": "aes-256-gcm"
}
  • "server":"0.0.0.0":表示服务端监听所有连接。
  • "server_port":在服务器上为客户端连接开放的连接端口。
  • "method":推荐使用 aes-256-gcm,它在安全和性能之间取得了良好平衡。
shell
# 从 github 的 docker 仓库拉取 ssserver-rust 镜像
docker pull ghcr.io/shadowsocks/ssserver-rust:v1.23.4

# 启动容器
docker run --name shadowsocks-server \
  --restart always \
  --network vpn \
  -p 8388:8388/tcp \
  -p 8388:8388/udp \
  -v /opt/shadowsocks/server.json:/etc/shadowsocks-rust/config.json \
  -itd ghcr.io/shadowsocks/ssserver-rust:v1.23.4

客户端

客户端配置文件:client.json。其中需要指定远程服务器的信息。

json
{
    "server": "my_server_ip",
    "server_port": 8388,
    "password": "L2JZ6K4fo9YTvj9ZM1pBcG2e7R3zV9K90T/Wj+k5NBw=",
    "method": "aes-256-gcm",
    "local_address": "127.0.0.1",
    "local_port": 1080
}

成功启动后,你就可以在本地使用 127.0.0.1:1080 这个 SOCKS5 代理地址了。

shell
# 从 github 的 docker 仓库拉取 sslocal-rust 镜像
docker pull ghcr.io/shadowsocks/sslocal-rust:v1.23.4

docker run --name sslocal-rust \
  --restart always \
  --network vpn \
  -p 1080:1080/tcp \
  -v /opt/shadowsocks/client.json:/etc/shadowsocks-rust/config.json \
  -itd ghcr.io/shadowsocks/sslocal-rust:v1.23.4