通过 SOCKS 代理重定向所有 http 和 https 流量

通过 SOCKS 代理重定向所有 http 和 https 流量

我在 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 规则。

相关内容