我想将端口 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>
。