Skip to content

Shadowsocks

项目状态: ⚠️ 已废弃(原版) | 推荐度: ⭐⭐ | 世代: 第三代 | 历史地位: ⭐⭐⭐⭐⭐

快速概览

Shadowsocks(简称 SS)是一个由中国开发者 clowwindy 创建的开源代理工具,在 2012-2017 年间成为中国大陆最流行的翻墙工具。它以配置简单、轻量高效著称,开创了"混淆代理"时代,对后续工具产生了深远影响。

⚠️ 重要提示: 原版 Shadowsocks 协议已被 GFW 识别,在中国大陆基本不可用。本文档主要用于历史参考和技术学习。

核心特性

  • 📝 配置简单: JSON 配置文件,一看就懂
  • 轻量高效: 资源占用极低,性能优秀
  • 🌐 跨平台: 支持所有主流操作系统
  • 🔓 开源免费: GPL 协议,完全开源
  • 📚 文档丰富: 教程和客户端生态完善

关键指标

指标评分说明
性能⭐⭐⭐⭐轻量级,性能优秀
安全性⭐⭐⭐AEAD 加密,但协议简单
稳定性⭐⭐⭐早期稳定,后期易被封
隐蔽性⭐⭐流量特征明显,易被识别
易用性⭐⭐⭐⭐⭐配置最简单的代理工具
文档⭐⭐⭐⭐⭐文档和教程非常完善
社区⭐⭐⭐⭐曾经最活跃的翻墙社区

历史意义

重要里程碑

2012年4月 - 诞生

  • clowwindy 在 V2EX 发布 Shadowsocks
  • 填补了 VPN 被封后的空白
  • 开创了"混淆代理"时代

2012-2015 - 黄金时期

  • 成为中国最流行的翻墙工具
  • 衍生出众多实现版本(Python, libev, Go, Rust)
  • 客户端生态蓬勃发展

2015年8月 - 转折点

  • 作者 clowwindy 被警方约谈
  • 删除 GitHub 仓库和所有相关讨论
  • 停止开发,社区接手维护

2017年 - 被识别

  • GFW 开始大规模识别 SS 流量
  • 大量服务器被封
  • 用户开始转向 V2Ray、Trojan 等新工具

2022年 - Shadowsocks 2022

  • 发布新版本协议规范
  • 修复安全问题,增强抗识别能力
  • 尝试复兴,但采用率有限

对行业的影响

  1. 技术启蒙: 让普通用户了解代理技术
  2. 生态建设: 建立了完整的客户端生态体系
  3. 社区文化: 形成了开源、分享的翻墙社区文化
  4. 后续工具: V2Ray、Trojan 等都受其影响

技术原理

基本架构

客户端                          服务端                      目标网站
  │                              │                            │
  │── SOCKS5 连接 ──────────────→│                            │
  │                              │                            │
  │── SS 加密数据 ─────────────→│                            │
  │    (AES/ChaCha20)            │                            │
  │                              │── 解密 ──→ HTTP 请求 ────→│
  │                              │                            │
  │←── 加密响应 ─────────────────│←── 响应数据 ──────────────│
  │                              │                            │

工作流程

  1. 本地代理: 客户端监听本地 SOCKS5 端口(如 1080)
  2. 加密: 使用配置的密码和加密算法加密数据
  3. 传输: 将加密数据发送到 SS 服务器
  4. 解密: 服务器解密数据
  5. 转发: 服务器代表客户端访问目标网站
  6. 返回: 加密响应数据返回给客户端

加密算法演进

第一代 (2012-2014) - 流加密:
├── RC4-MD5 (已废弃,不安全)
├── AES-256-CFB
└── BF-CFB

第二代 (2016-2017) - AEAD 加密:
├── AES-256-GCM
├── AES-128-GCM
└── ChaCha20-IETF-Poly1305 (推荐)

第三代 (2022+) - Shadowsocks 2022:
├── 2022-blake3-aes-128-gcm
├── 2022-blake3-aes-256-gcm
└── 2022-blake3-chacha20-poly1305

推荐算法: ChaCha20-IETF-Poly1305

  • 安全性高(AEAD 认证加密)
  • 性能优秀(ARM 设备尤其快)
  • 现代密码学

为什么被淘汰

1. 协议特征明显

流量特征:

SS 连接特点:
- 固定的握手模式
- 可预测的数据包大小
- 缺乏随机性

机器学习可以识别这些模式。

2. 无流量混淆

与 HTTPS 流量对比:

特征HTTPSShadowsocks
TLS 握手✅ 标准握手❌ 无握手
证书✅ CA 签名❌ 无证书
SNI✅ 域名❌ 无 SNI
ALPN✅ HTTP/2 等❌ 无 ALPN

GFW 可以通过这些差异识别 SS 流量。

3. 主动探测脆弱

GFW 的探测方法:

1. 发现可疑 IP:端口
2. 主动连接测试
3. 发送错误密码
4. 观察服务器响应

SS 服务器对错误密码的响应模式容易被识别。

4. 统计分析

时间特征:

  • 连接持续时间
  • 数据包发送频率
  • 流量大小分布

行为特征:

  • 长时间保持连接
  • 突发流量模式
  • 端口使用模式

配置指南(仅供参考)

服务端配置

安装 shadowsocks-libev:

bash
# Debian/Ubuntu
sudo apt update
sudo apt install shadowsocks-libev

# 或编译安装
git clone https://github.com/shadowsocks/shadowsocks-libev.git
cd shadowsocks-libev
sudo apt install --no-install-recommends build-essential autoconf libtool \
  libssl-dev libpcre3-dev libev-dev asciidoc xmlto automake
./autogen.sh
./configure
make && sudo make install

配置文件 (/etc/shadowsocks-libev/config.json):

json
{
  "server": "0.0.0.0",
  "server_port": 8388,
  "password": "your-strong-password",
  "timeout": 300,
  "method": "chacha20-ietf-poly1305",
  "fast_open": true,
  "workers": 1,
  "prefer_ipv6": false,
  "no_delay": true,
  "mode": "tcp_and_udp"
}

启动服务:

bash
sudo systemctl start shadowsocks-libev
sudo systemctl enable shadowsocks-libev

客户端配置

配置文件示例:

json
{
  "server": "your-server-ip",
  "server_port": 8388,
  "password": "your-strong-password",
  "method": "chacha20-ietf-poly1305",
  "local_address": "127.0.0.1",
  "local_port": 1080,
  "timeout": 300,
  "fast_open": true
}

分享链接格式:

ss://加密算法:密码@服务器:端口#备注

# Base64 编码格式
ss://base64(method:password@server:port)#备注

示例:

ss://chacha20-ietf-poly1305:mypassword@example.com:8388#MyServer

增强方案(提升隐蔽性)

虽然原版 SS 已被识别,但通过插件可以增强隐蔽性:

1. simple-obfs (HTTP/TLS 混淆)

bash
# 服务端
ss-server -c config.json \
  --plugin obfs-server \
  --plugin-opts "obfs=tls;obfs-host=www.bing.com"

# 客户端
ss-local -c config.json \
  --plugin obfs-local \
  --plugin-opts "obfs=tls;obfs-host=www.bing.com"

2. v2ray-plugin (WebSocket)

json
{
  "plugin": "v2ray-plugin",
  "plugin_opts": "server;tls;host=yourdomain.com;cert=/path/to/cert.pem;key=/path/to/key.pem"
}

3. kcptun (UDP 加速)

适合高丢包网络环境。

注意: 即使使用这些插件,SS 在中国大陆的可用性仍然有限。


Shadowsocks 2022

新协议改进

主要变化:

  1. 强制 AEAD: 只支持 AEAD 2022 加密
  2. 重放保护: 防止重放攻击
  3. 完整性校验: 更强的数据完整性验证
  4. 时间戳: 增加时间戳验证
  5. 更好的密钥管理: 使用 Base64 编码的固定长度密钥

配置示例:

json
{
  "server": "0.0.0.0",
  "server_port": 8388,
  "method": "2022-blake3-chacha20-poly1305",
  "password": "base64-encoded-32-byte-key",
  "fast_open": true
}

生成密钥:

bash
# 生成 32 字节密钥
openssl rand -base64 32

优势:

  • 修复了原版的安全漏洞
  • 更难被识别(理论上)
  • 性能依然优秀

现状:

  • 采用率较低
  • 长期抗封锁能力待验证
  • 不如 Xray/Trojan 成熟

实现版本对比

版本语言性能内存占用维护状态推荐度
ss-pythonPython⭐⭐❌ 停止
ss-libevC⭐⭐⭐⭐⭐极低✅ 维护中⭐⭐⭐
ss-rustRust⭐⭐⭐⭐⭐✅ 活跃⭐⭐⭐⭐
ss-goGo⭐⭐⭐⭐⚠️ 停滞⭐⭐

推荐: shadowsocks-rust(如果必须使用 SS)


客户端生态

Shadowsocks 的一大贡献是建立了完善的客户端生态:

Windows

  • Shadowsocks-Windows: 官方客户端,简单易用
  • v2rayN: 支持多协议,推荐
  • Clash for Windows: 规则强大

macOS

  • ShadowsocksX-NG: 官方客户端
  • ClashX: 更现代的选择

Android

  • Shadowsocks-Android: 官方客户端
  • SagerNet: 功能强大,支持多协议

iOS

  • Shadowrocket: 付费,功能全面
  • Quantumult X: 高级用户首选
  • Potatso: 免费选择

路由器

  • OpenWrt + shadowsocks-libev
  • Merlin + shadowsocks

遗留问题

Shadowsocks 的设计决策导致了一些根本性问题:

  1. 协议简单: 缺乏复杂的握手和混淆机制
  2. 无前向保密: 密码泄露后历史流量可被解密
  3. 固定模式: 流量模式容易被统计分析识别
  4. 无主动探测防护: 容易被探测识别

这些问题在后续工具(V2Ray, Trojan, Xray)中得到了解决。


学习价值

虽然已被淘汰,Shadowsocks 仍有学习价值:

1. 代理原理

  • SOCKS5 协议
  • 加密传输
  • TCP/UDP 转发

2. 简洁设计

  • 配置文件设计
  • 客户端-服务端架构
  • 插件系统

3. 开源协作

  • 多语言实现
  • 社区驱动开发
  • 生态系统建设

4. 历史教训

  • 安全性的重要性
  • 流量混淆的必要性
  • 抗主动探测设计

迁移建议

如果你仍在使用 Shadowsocks,建议迁移到:

首选方案

  1. Xray (VLESS + Reality)

    • 性能更好
    • 隐蔽性极强
    • 配置稍复杂但值得
  2. Trojan

    • 稳定性最好
    • 配置相对简单
    • 长期可靠
  3. Hysteria 2

    • 移动网络优选
    • 弱网环境性能好

迁移步骤

  1. 选择新工具并学习配置
  2. 部署新服务器(建议使用新 IP)
  3. 测试新服务可用性
  4. 迁移客户端配置
  5. 停用旧 SS 服务器

参考资源

官方资源

学习资源

历史文章


致敬

感谢 clowwindy 和所有 Shadowsocks 贡献者,他们的工作:

  • 🌟 让数百万人能够访问自由互联网
  • 📚 推动了翻墙技术的发展
  • 🤝 建立了开源翻墙社区的文化
  • 💡 启发了后续的优秀工具

虽然技术已被超越,但其精神永存。


⚠️ 最后提醒: 在中国大陆,强烈建议使用 Xray、Trojan 等现代工具,而不是 Shadowsocks。本文档主要用于历史学习和技术参考。

基于 MIT 许可发布