三种方式将本机流量中转至 VPS:SSH 动态代理 Redsocks Dante
想让本机通过 VPS 出口访问互联网?这篇文章将介绍三种实战可用的方案,从简单到进阶,助你快速完成流量转发配置,兼容各种工具如 curl、proxychains、浏览器插件等。
✅ 方案一:SSH -D(动态端口转发)
- VPS 需先接入目标网络(如 HackTheBox 靶场的 OpenVPN 网络)
- Kali 中建立本地 socks5 隧道
1
| ssh -D 0.0.0.0:9051 -C -q -N root@<vps>
|
- 测试是否成功代理:
1
| curl --socks5 127.0.0.1:9051 http://cip.cc
|
- 若涉及 UDP 通信(如使用靶场的 DNS/UDP 服务),可以通过 socat 建立 UDP 转发:
1 2 3 4 5
| socat UDP4-LISTEN:9052,fork UDP4:10.10.10.10:9052
socat UDP4-LISTEN:9052,fork UDP4:<vps>:9052
|
- 测试对靶场 HTTP 服务的访问:
1
| curl --socks5 127.0.0.1:9051 http://10.10.10.10/whoami
|
✅ 方案二:redsocks + SSH-D,实现 HTTP 代理兼容 proxychains
SSH 动态代理不能直接被 proxychains 调用。解决方案是通过 redsocks 将 socks5 转换为 http 代理。
- 先开启 SSH 动态代理(与上相同)
1
| ssh -D 0.0.0.0:9051 -C -q -N root@<vps>
|
- 编辑 redsocks 配置:
1
| sudo nano /etc/redsocks.conf
|
内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| base { log_debug = on; log_info = on; daemon = on; redirector = iptables; }
redsocks { local_ip = 127.0.0.1; local_port = 9052; ip = 127.0.0.1; port = 9051; type = socks5; }
|
- 启动 redsocks:
1
| sudo redsocks -c /etc/redsocks.conf
|
检查监听端口:
1
| netstat -tunlp | grep 9052
|
- 配置 proxychains 使用 HTTP 代理:
编辑 /etc/proxychains4.conf
:
1 2 3 4 5
| dynamic_chain proxy_dns
[ProxyList] http 127.0.0.1 9052
|
- 测试:
1
| proxychains curl http://ipinfo.io
|
成功返回 VPS 出口 IP 即配置完成。
🧠 总结流程如下:
1 2 3 4 5 6 7 8 9 10 11
| 你的程序 ↓ proxychains 劫持请求 ↓ redsocks 转换为 socks5 ↓ SSH-D socks5 代理(本地) ↓ 加密传输至 VPS ↓ 公网访问
|
✅ 方案三:Dante,完整 socks5 服务器
SSH 和 redsocks 的方案都不是真正的 socks5 完整协议实现,若你需要账号密码认证、UDP 支持等高级特性,推荐使用 Dante 构建 socks5 服务器。
- 安装 Dante
1
| sudo apt install dante-server
|
- 编辑配置文件:
1
| sudo nano /etc/danted.conf
|
内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| logoutput: /var/log/danted.log
internal: eth0 port = 9052 external: eth0
method: username user.notprivileged: nobody
client pass { from: 0.0.0.0/0 to: 0.0.0.0/0 log: connect disconnect }
pass { from: 0.0.0.0/0 to: 0.0.0.0/0 protocol: tcp udp log: connect disconnect method: username }
|
- 创建用于 socks5 登录的本地账户:
1 2 3
| sudo adduser proxyuser
sudo usermod -s /usr/sbin/nologin proxyuser
|
- 启动服务:
1 2
| sudo pkill danted sudo danted -f /etc/danted.conf
|
- 测试连通性(Kali 本机):
1
| curl --proxy socks5h://proxyuser:password@<vps>:<端口号> http://ipinfo.io
|
🧹 遇到问题?请检查本地代理设置
有时代理变量未清除会影响测试:
1 2
| unset ALL_PROXY all_proxy http_proxy https_proxy HTTP_PROXY HTTPS_PROXY env | grep -i proxy
|
恢复代理:
1
| source /etc/profile.d/proxy.sh
|
如需补充 clash、tun2socks、iptables 转发等更进阶的流量劫持玩法,也欢迎留言交流!
无法访问靶场:
VPS 开启IP转发(如果用 NAT/路由转发)
确认 /etc/sysctl.conf
中有这一行:
然后执行:
确保VPS能正确转发流量。