一个轻量的 SOCKS5 代理,用于通过单一端口转发多个数据库连接。
通过堡垒机访问多个内网数据库时,传统 SSH 端口转发需要为每个数据库建立单独隧道。本工具用一个 SOCKS5 代理替代多个端口转发,通过域名映射到真实 IP。
开发者 → SSH隧道(1080) → 堡垒机(SOCKS5代理) → 多个数据库
cargo build --release
sudo cp target/release/socks5-proxy /usr/local/bin/# config.toml
[proxy]
listen = "127.0.0.1:1080"
timeout = 30
max_connections = 1000
log_level = "info"
[backends]
"mysql.local" = "10.1.1.10:3306"
"redis.local" = "10.1.1.20:6379"
"pg.local" = "10.1.1.30:5432"
[security]
allowed_ips = [] # 空=允许所有,或 ["127.0.0.1", "192.168.1.0/24"]# 堡垒机上启动代理
socks5-proxy config.toml
# 本地建立 SSH 动态转发
ssh -D 1080 -N user@bastion
# 通过 proxychains 连接数据库
proxychains4 mysql -h mysql.local -u root -p
proxychains4 redis-cli -h redis.local| 配置项 | 说明 | 默认值 |
|---|---|---|
proxy.listen |
监听地址 | 127.0.0.1:1080 |
proxy.timeout |
连接超时(秒) | 30 |
proxy.max_connections |
最大并发连接 | 1000 |
proxy.log_level |
日志级别 | info |
security.allowed_ips |
IP白名单 | [] |
Linux (systemd):
sudo cp scripts/socks5-proxy.service /etc/systemd/system/
sudo systemctl enable --now socks5-proxymacOS (launchd):
cp scripts/com.socks5-proxy.plist ~/Library/LaunchAgents/
launchctl load ~/Library/LaunchAgents/com.socks5-proxy.plistcargo build # 编译
cargo test # 测试
cargo run -- config.toml # 运行MIT