![如何将流量从一个 IP 透明地重定向到另一个 IP?](https://linux22.com/image/638321/%E5%A6%82%E4%BD%95%E5%B0%86%E6%B5%81%E9%87%8F%E4%BB%8E%E4%B8%80%E4%B8%AA%20IP%20%E9%80%8F%E6%98%8E%E5%9C%B0%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%E5%8F%A6%E4%B8%80%E4%B8%AA%20IP%EF%BC%9F.png)
我想将端口 1111 上的所有传入流量重定向到端口 1111 上的另一台服务器,用作透明代理。在谷歌搜索后,我尝试使用iptables
,但它没有按预期工作。
root@glider:~# sysctl net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1
root@glider:~# iptables -t nat -A PREROUTING -p tcp --dport 1111 -j DNAT --to-destination 10.2.4.44:1111
root@glider:~# iptables -t nat -A POSTROUTING -j MASQUERADE
root@glider:~# telnet localhost 1111
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
root@glider:~# telnet 10.2.4.44 1111
Trying 10.2.4.44...
Connected to 10.2.4.44.
Escape character is '^]'.
我正在使用 Kubuntu 14.04 LTS。
答案1
该PREROUTING
链用于传入数据包,但不用于本地生成的数据包。为了测试它,您不应该连接到本地主机。相反,您应该从其他主机测试连接。
将nat
规则应用到所有接口可能会有问题。我建议您将规则限制为仅在需要的接口上应用。
规则DNAT
应该有-i <interface name>
或-d <ip address>
,MASQUERADE
规则应该有-o <interface name>
。