如何将 http 请求转发到代理服务器?

如何将 http 请求转发到代理服务器?

我有一个 Internet Linux 服务器,并且我的客户端计算机(运行 Windows)通过 SSH 隧道访问该服务器的互联网。

现在由于某种原因,该服务器只能通过端口 8118 的 http 代理(在另一台服务器上运行)访问互联网。结果,我的客户端计算机失去了互联网连接。

我尝试通过在 nat 表(iptables)中添加 OUTPUT 规则将端口 80 重定向到 8118,但是不起作用。

如何让我的客户端计算机上网?

答案1

您应该能够使用 iptables 来实现这一点,但您可能只想使用转发规则将所有 80 个流量转发到代理。试试这个:

首先确保允许转发:

cat /proc/sys/net/ipv4/ip_forward

如果没有,它应该返回1,作为 root 运行:

echo 1 > /proc/sys/net/ipv4/ip_forward

现在您需要为 NAT 表设置规则,您需要转发正确的端口和伪装。

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination [server_ip]:8118
iptables -t nat -A POSTROUTING -p tcp -d [server_ip] --dport 8118 -j MASQUERADE

另外还需要添加转发规则:

 iptables -A FORWARD -p tcp -d [server_ip] --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

相关内容