mlxahcf 发表于 2014-04-28 10:40

iptables端口转发

现在我有A B C 三台机器,A(10.0.0.4) B(10.0.0.3) C(10.0.0.2)现在我想通过B上做IPTABLES 端口转发,让A能够telnet通C的9004端口。以下为我的IPTABLES配置:
iptables -t nat -A PREROUTING -p tcp-m tcp--dport 9004 -j DNAT --to-destination 10.0.0.2:9004
iptables -t nat -A POSTROUTING -p tcp -m tcp--dport 9004 -j SNAT --to-source 10.0.0.3
可是我在A机器上telnet 10.0.0.3 9004不通,不知道为什么
B上net.ipv4.ip_forward = 1已经开了,请大侠帮我看下

lcmust 发表于 2014-04-28 12:05

回复 1# mlxahcf


   iptables -t nat -A POSTROUTING -p tcp -m tcp--dport 9004 -j SNAT --to-source 10.0.0.3
   10.0.0.2是通过10.0.0.3回转数据包到10.0.0.4时,其中的源端口号是9004,应该将--dport修改为--sport
   iptables -t nat -A POSTROUTING -p tcp -m tcp--sport 9004 -j SNAT --to-source 10.0.0.3

另外,请在 C(10.0.0.2) 机器上添加路由:通过B(10.0.0.3)访问A(10.0.0.4)
   route add 10.0.0.4mask 255.255.255.255 10.0.0.3   (windows下)
   ip route add10.0.0.4 via 10.0.0.3 dev eth0   (LINUX下)
之后,10.0.0.2才会通过10.0.0.3回转数据包到10.0.0.4,否则10.0.0.2收到来自源数据IP 10.0.0.4的访问数据,发现是同一网段,会直接用10.0.0.4的MAC转发,不通过10.0.0.3,这种情况下,10.0.0.4访问10.0.0.3的数据包,返回来的却是10.0.0.2的IP,所以TCP建立3次握手不会成功。

mlxahcf 发表于 2014-04-28 12:14

可以了,这是非常感谢啊
页: [1]
查看完整版本: iptables端口转发