Shadowsocks
Shadowsocks 协议,兼容大部分其它版本的实现。
目前兼容性如下:
- 支持 TCP 和 UDP 数据包转发,其中 UDP 可选择性关闭;
- 推荐的加密方式:
- 2022-blake3-aes-128-gcm
- 2022-blake3-aes-256-gcm
- 2022-blake3-chacha20-poly1305
- 其他加密方式
- aes-256-gcm
- aes-128-gcm
- chacha20-poly1305 或称 chacha20-ietf-poly1305
- xchacha20-poly1305 或称 xchacha20-ietf-poly1305
- none 或 plain
Shadowsocks 2022 新协议格式提升了性能并带有完整的重放保护,解决了旧协议的以下安全问题:
- Shadowsocks AEAD 加密方式设计存在严重漏洞,无法保证通信内容的可靠性
- 原有 TCP 重放过滤器误报率随时间增加
- 没有 UDP 重放保护
- 可用于主动探测的 TCP 行为
警告
"none" 不加密方式下流量将明文传输。为确保安全性, 不要在公共网络上使用。
OutboundConfigurationObject
{
"servers": [
{
"email": "love@xray.com",
"address": "127.0.0.1",
"port": 1234,
"method": "加密方式",
"password": "密码",
"uot": true,
"UoTVersion": 2,
"level": 0
}
]
}
servers
: [ServerObject]
一个数组,代表一组 Shadowsocks 服务端设置, 其中每一项是一个 ServerObject。
ServerObject
{
"email": "love@xray.com",
"address": "127.0.0.1",
"port": 1234,
"method": "加密方式",
"password": "密码",
"uot": true,
"UoTVersion": 2,
"level": 0
}
邮件地址,可选,用于标识用户
address
: address
Shadowsocks 服务端地址,支持 IPv4、IPv6 和域名。必填。
port
: number
Shadowsocks 服务端端口。必填。
method
: string
必填。
password
: string
必填。
uot
: bool
启用udp over tcp
。
UoTVersion
: number
UDP over TCP
的实现版本。
当前可选值:1
, 2
- Shadowsocks 2022
使用与 WireGuard 类似的预共享密钥作为密码。
使用 openssl rand -base64 <长度>
以生成与 shadowsocks-rust 兼容的密钥,长度取决于所使用的加密方法。
加密方法 | 密钥长度 |
---|---|
2022-blake3-aes-128-gcm | 16 |
2022-blake3-aes-256-gcm | 32 |
2022-blake3-chacha20-poly1305 | 32 |
在 Go 实现中,32 位密钥始终工作。
- 其他加密方法
任意字符串。不限制密码长度,但短密码会更可能被破解,建议使用 16 字符或更长的密码。
level
: number
用户等级,连接会使用这个用户等级对应的 本地策略。
level
的值, 对应 policy 中 level
的值。 如不指定, 默认为 0。