三种方式将本机流量中转至 VPS:SSH 动态代理 Redsocks Dante

想让本机通过 VPS 出口访问互联网?这篇文章将介绍三种实战可用的方案,从简单到进阶,助你快速完成流量转发配置,兼容各种工具如 curl、proxychains、浏览器插件等。


✅ 方案一:SSH -D(动态端口转发)

  1. VPS 需先接入目标网络(如 HackTheBox 靶场的 OpenVPN 网络)
  2. Kali 中建立本地 socks5 隧道
1
ssh -D 0.0.0.0:9051 -C -q -N root@<vps>
  1. 测试是否成功代理:
1
curl --socks5 127.0.0.1:9051 http://cip.cc
  1. 若涉及 UDP 通信(如使用靶场的 DNS/UDP 服务),可以通过 socat 建立 UDP 转发:
1
2
3
4
5
# VPS 上
socat UDP4-LISTEN:9052,fork UDP4:10.10.10.10:9052

# Kali 上
socat UDP4-LISTEN:9052,fork UDP4:<vps>:9052
  1. 测试对靶场 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 代理。

  1. 先开启 SSH 动态代理(与上相同)
1
ssh -D 0.0.0.0:9051 -C -q -N root@<vps>
  1. 编辑 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;
}
  1. 启动 redsocks:
1
sudo redsocks -c /etc/redsocks.conf

检查监听端口:

1
netstat -tunlp | grep 9052
  1. 配置 proxychains 使用 HTTP 代理:

编辑 /etc/proxychains4.conf​:

1
2
3
4
5
dynamic_chain
proxy_dns

[ProxyList]
http 127.0.0.1 9052
  1. 测试:
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 服务器。

  1. 安装 Dante
1
sudo apt install dante-server
  1. 编辑配置文件:
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
}
  1. 创建用于 socks5 登录的本地账户:
1
2
3
sudo adduser proxyuser
# 设置密码:xxxxxxxxxxxxxx
sudo usermod -s /usr/sbin/nologin proxyuser # 禁止 SSH 登录
  1. 启动服务:
1
2
sudo pkill danted
sudo danted -f /etc/danted.conf
  1. 测试连通性(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   # 或 export http_proxy=...

如需补充 clash、tun2socks、iptables 转发等更进阶的流量劫持玩法,也欢迎留言交流!

无法访问靶场:

VPS 开启IP转发(如果用 NAT/路由转发)

确认 /etc/sysctl.conf​ 中有这一行:

1
net.ipv4.ip_forward=1

然后执行:

1
sudo sysctl -p

确保VPS能正确转发流量。