3 个版本
0.1.2 | 2023年9月7日 |
---|---|
0.1.1 | 2023年3月27日 |
0.1.0 | 2023年2月25日 |
#1585 in 网络编程
430KB
10K SLoC
shoes
shoes 是用 Rust 编写的多协议代理服务器。
支持的协议
- HTTP/HTTPS (TCP, QUIC)
- SOCKS5 (TCP, QUIC)
- Vmess (TCP, QUIC, UDP-over-TCP)
- AEAD 和 Legacy 模式
- 支持的加密算法
- aes-128-gcm
- chacha20-poly1305
- Vless (TCP, QUIC)
- Snell v3 (TCP, QUIC, UDP-over-TCP)
- 支持的加密算法
- aes-128-gcm
- aes-256-gcm
- chacha20-ietf-poly1305
- 支持的加密算法
- Shadowsocks (TCP, QUIC)
- 支持的加密算法
- aes-128-gcm
- aes-256-gcm
- chacha20-ietf-poly1305
- 2022-blake3-aes-128-gcm
- 2022-blake3-aes-256-gcm
- 2022-blake3-chacha20-ietf-poly1305
- 支持的加密算法
- Trojan (TCP, QUIC)
- 支持的加密算法
- aes-128-gcm
- aes-256-gcm
- chacha20-ietf-poly1305
- 支持的加密算法
功能
所有支持的协议都可以与以下功能结合使用
- TLS 支持 基于 SNI 的转发
- Websocket 隐藏 (Shadowsocks SIP003)
- 上游代理支持:通过其他代理服务器路由连接
- 转发规则(允许列表/阻止列表):根据 IP 或主机名阻止或重定向连接
- 热重载:更新的配置将自动重新加载
- 子网掩码和代理组
示例
以下是一个运行 WSS vmess 和 shadowsocks 服务器,所有请求都通过 SOCKS 代理路由的示例
# Listen on all IPv4 interfaces, port 443 (HTTPS)
- address: 0.0.0.0:443
transport: tcp
# Use TLS as the first protocol layer
protocol:
type: tls
# Set a default target, for any (or no) SNI
default_target:
cert: cert.pem
key: key.pem
# ..which goes to a websocket server
protocol:
type: ws
# .. where we have different supported proxy protocols, based on HTTP request path and headers.
targets:
- matching_path: /vmess
matching_headers:
X-Secret-Key: "secret"
protocol:
type: vmess
# allow any cipher, which means: none, aes-128-gcm, or chacha20-poly1305.
cipher: any
user_id: b0e80a62-8a51-47f0-91f1-f0f7faf8d9d4
- matching_path: /shadowsocks
protocol:
type: shadowsocks
cipher: 2022-blake3-aes-256-gcm
password: Hax8btYlNao5qcaN/l/NUl9JgbwapfqG5QyAtH+aKPg=
rules:
# Allow clients to connect to all IPs
- mask: 0.0.0.0/0
action: allow
# Forward all requests through a local SOCKS server.
client_proxy:
address: 127.0.0.1:5000
protocol:
type: socks
username: socksuser
password: secretpass
有关其他 YAML 配置示例,请参阅 示例目录。
安装
在 GitHub 发布 上提供 x86_64 和 Apple aarch64 的预编译二进制文件。
否则,如果您系统上安装了较新的 Rust 和 cargo,可以使用 cargo
安装 shoes。
cargo install shoes
使用方法
shoes [OPTIONS] <YAML CONFIG PATH> [YAML CONFIG PATH] [..]
OPTIONS:
-t, --threads NUM
Set the number of worker threads. This usually defaults to the number of CPUs.
-d, --dry-run
Parse the config and exit.
配置格式
抱歉,尚未编写 YAML 配置格式的正式文档。您可以参考 示例,或者如果您需要帮助,可以打开一个问题。
路线图
- 代理客户端链式连接
- SOCKS 和 Shadowsocks UDP 支持
类似项目
-
shadowsocks-rust:shadowsocks 的 Rust 版本
-
v2ray-core:用 Go 编写的功能齐全的代理平台
依赖项
~22–38MB
~645K SLoC