协议知识
Shadowsocks 协议速读:最常见的老牌协议
Shadowsocks 出现得早、实现多,几乎所有客户端都支持。
先看结论
Shadowsocks 协议(简称 SS)设计简单:用预共享的密码和指定的加密方式加密流量,没有 TLS 握手。几乎所有客户端都支持,ss:// 链接是它最常见的节点表达方式。
关键字段
- cipher
- 加密方式,如 aes-128-gcm、aes-256-gcm、chacha20-ietf-poly1305 等 AEAD 方式;2022 版本使用新的一组加密方式。
- password
- 共享密码,客户端和服务端一致。
- plugin
- 可选插件,用于混淆或额外封装,需要客户端支持。
常见问题
- 加密方式写错:表现为连接建立但数据读不出来。
- 服务端使用了 2022 版本,而客户端不支持。
- 插件参数缺失或不匹配。
怎么看 ss:// 链接
ss:// 链接里通常包含加密方式、密码、服务器、端口,编码方式因版本不同而异。一般情况下直接让客户端导入,不需要手动拆。
加密方式怎么选,怎么看
Shadowsocks 用预共享的密码和指定的加密方式来保护流量,客户端和服务端的加密方式必须一致。现在常见的是 AEAD 一类的加密方式,它们同时提供加密与完整性校验;更新的 2022 版本引入了新的一组加密方式与更严格的设计。作为用户,你不需要自己挑选加密方式,只要使用订阅里提供的那一个,并确认客户端支持它。如果客户端提示不支持某种加密方式,多半是版本过旧。
插件是做什么的
部分 Shadowsocks 节点会带插件,用于在原有协议外再包一层,比如混淆或 WebSocket 传输。有插件的节点,需要客户端也支持相应的插件,并且插件的参数(模式、主机名、路径)要与服务端完全一致。参数里任何一处不同,都会表现为连接建立后数据不通。遇到带插件的节点连不上,首先检查插件相关的参数是否被完整导入。
| 常见现象 | 可能原因 |
|---|---|
| 节点导入后加密方式显示为空 | 客户端不识别该加密方式或链接格式 |
| 能连上但读不出数据 | 加密方式或密码与服务端不一致 |
| 带插件的节点连不上 | 插件不被支持,或插件参数不匹配 |
关于「Shadowsocks协议」的常见问题
SS 还够用吗?
许多服务商仍然提供。是否合适取决于整体方案,不能只看协议名。
SS 和 SSR 一样吗?
不一样。SSR 是另一个衍生项目,现在的订阅里更常见的是标准的 Shadowsocks。
ss:// 链接可以手工修改吗?
不建议。链接里的内容是编码过的,手工修改很容易出错。需要换参数时,让服务商提供新的链接,或在客户端界面里逐项修改。
Shadowsocks是什么?SS加密方式怎么选?
Shadowsocks 是一种轻量的加密代理协议,用密码和加密方法配置。SS加密方式应选择服务端明确支持的现代 AEAD 类方法,客户端与服务端必须一致,否则无法连接。