我在 VMWare 中有一个带有 2 台虚拟机的虚拟网络。
A:未连接到互联网,但连接到B
B:连接到互联网和 A(A 的接口是 192.168.16.2)
我必须创建一个 SOCKS 代理来将所有 TCP(和 HTTP/S)流量从 A 重定向到 B。
这样,A就可以使用互联网了。
为此,我在 A 上安装了 REDSOCKS,并采用了以下配置(redsocks.conf):
base {
log_debug = on;
log_info = on;
log = "stderr";
daemon = on;
redirector = iptables;
}
redsocks {
local_ip = 127.0.0.1;
local_port = 12345;
ip = 192.168.16.2;
port = 1337;
type = socks5;
login = "Bmachine";
password = "Bmachine";
}
我开始用
sudo redsocks -c redsocks.conf
然后我使用以下命令在 B 上启动 ssh:
ssh -N -D 0.0.0.0:1337 127.0.0.1
为了将所有流量重定向到代理,我在 A 上执行以下命令:
sudo iptables -t nat -N REDSOCKS
sudo iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN
sudo iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 12345
sudo iptables -t nat -A OUTPUT -p tcp --dport 443 -j REDSOCKS
sudo iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDSOCKS
sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDSOCKS
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDSOCKS
这就是全部了,但是当我尝试使用互联网或从 A 打开 Firefox 时,我什么也访问不到,互联网无法工作。
答案1
您需要在 A 上运行 ssh 命令
ssh -N -D 1337 b_username@ip_of_b
然后你可以配置你的网络浏览器或设置环境变量指向该代理:127.0.0.1:1337
如果您想使用 redsocks,以便所有发往端口 80 或 443 的 TCP 流量都被定向到代理,那么您可以更新配置:
redsocks {
local_ip = 127.0.0.1;
local_port = 12345;
ip = 127.0.0.1;
port = 1337;
type = socks5;
}
旁注:如果您不通过 A 隧道传输流量,那么您也不需要 iptables 中的 PREROUTING 规则。