- 论坛徽章:
- 0
|
小弟有一台LINUX服务器,近日做SNAT时遇到难题.望各位赐教
1.系统结构以及预期目标 服务器担当的角色是路由转发 iptables 为1.2.5 系统为RED HAT AS1.2 kernel为1.2.4-9
系统允许路由转发 echo 1 > /proc/sys/net/ipv4/ip_forward
网卡 eth1绑定2个IP地址
eth1 172.168.0.1 (内网)
eth1:0 111.222.0.1 (外网)
需要达到的预期目标: 预期目标是使192.168.0.100与目标建立连接
192.168.0.100 <==> 172.168.0.1 <= SNAT转换 => 111.222.0.1 <==> 目标地址
通过设置SNAT进行源地址进行转换
iptables -t nat -A POSTROUTING -o eth1 -p tcp -j SNAT --to-source 111.222.0.1
但现在遇到些异常,192.168.0.100能连接到目标地址,但无法正常建立连接.通过TCPDUMP检查,发觉是发往目标主机包的来源地址是192.168.0.100,而不是111.222.0.1 ,所以无法成功建立连接.
23:34:00.823530 192.168.0.100.49020 > target ip..dst_port: S 2726709737:2726709737(0) win 5840 <mss 1400,sackOK,timestamp 1650878381 0,nop,wscale 0> (DF) [tos 0x10]
23:34:00.823660 target ip.dst_port> 192.168.0.100.49020: S 276057944:276057944(0) ack 2726709738 win 5792 <mss 1460,sackOK,timestamp 1842841271 1650878381,nop,wscale 0> (DF)
究其原因是该服务器上没有实现SNAT转换.
但是在172.168.0.x网段内的其他服务器进行的测试,将目标主机路由设置为172.168.0.1却能正常完成SNAT转换,成功建立连接. 请各位帮忙 看看大概问题会产生出在那里?
我开始觉得是IPTABLES的版本比较低的问题,但通过测试172.168.0.x网段内的其他主机的目标服务器路由指向,却又能正常完成SNAT转换,所有有点想不明白了. |
|