我试着将一个特定的ip:port转发到linux机器上的一个特定的ip:port。 我用下面的命令使用iptables:
iptables -t nat -A OUTPUT -p tcp -d 10.0.2.5 --dport 80 -j DNAT --to-destination 69.31.21.42:80
10.0.2.5是我select查看命令是否有效的任意地址,而69.31.21.42是公共网站的地址。 然后我证实了转发工作:我运行nmap -p 80 10.0.2.5并得到了一个积极的结果。 非常好迄今。 不过,我试着运行nmap -p 81 10.0.2.5 ,也得到了肯定的结果。 这不是我所期望的,因为我只希望端口80被转发。 我运行iptables -t nat -L ,注意到整个10.0.2.5主机的确映射到了69.31.21.42:80:
Chain OUTPUT (policy ACCEPT) target prot opt source destination DNAT tcp -- anywhere ip-10-0-2-5.ec2.internal tcp dpt:http to:69.31.21.42:80
我的iptables命令中缺less什么? 为什么不是--dport工作?
你需要使用POSTROUTING链来做你想做的事情。
iptables -t nat -A POSTROUTING -p tcp -d 10.0.2.5 --dport 80 -j SNAT --to 69.31.21.42:80
人iptables
and POSTROUTING (for altering packets as they are about to go out)
首先请知道,不能转发TCP IP:端口到另一个IP:端口。 这是唯一可能的UDP和有一个单独的Perl脚本。
是的,你可以直接转发到另一台机器,而不是一个特定的端口。