![如何将 http 请求转发到代理服务器?](https://linux22.com/image/1433478/%E5%A6%82%E4%BD%95%E5%B0%86%20http%20%E8%AF%B7%E6%B1%82%E8%BD%AC%E5%8F%91%E5%88%B0%E4%BB%A3%E7%90%86%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%9F.png)
我有一个 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