|
|
发表于 2006-3-30 00:14:48
|
显示全部楼层
Post by Recoilest
请教
还是这个问题,又做了一个星期的测试.
发现 如果SNAT 的话,有些时候内网直接连接内网地址端口服务不能连接,例如:
telnet 192.168.0.100 22,竟然没有回应,有时候非常正常.
你是在什么环境下没有回应的??一点情况没有透露~
Post by Recoilest
但是如果用MASQUERADE一直没有问题.
iptables -t nat POSTROUTING -p tcp -s 192.168.0.100 -d 192.168.0.0/24 --sport 110 -j MASQUERADE
不解?
这个有什么不解的?源地址为192.168.0.100,目的地址为192.168.0.0/24,源端口为110的数据包,在通过本机转发后,SNAT为动态源地址和源端口。
Post by Recoilest
同时还想请教一个问题.有一些文档说POSTROUTING链是在路由之后的.我做了一个实验和这个理论好象有一些冲突,也可能是我理解不够深入
环境:
linux slackware ,kernel 2.6.13,补丁过equal
if0 add:221.0.0.1
if1 add:218.0.0.1
if2 add:218.0.0.2
if3 add:192.168.0.1
如果在linux本地路由表中增加下静态路由
route add -net 10.88.0.0/16 gw 221.0.0.1
在iptables脚本中增加:
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0.0.0.0 -j SNAT --to 218.0.0.1-218.0.0.2
那么在192.168.0.0/24 网络中的任意终端运行下:
ping 10.88.0.254
如果10.88.0.254允许icmp ping.并且网络也正常,防火墙也允许icmp出入包.
数据请问是从哪个接口出去的呢? 是否" OSTROUTING链是在路由之后的"?
route add -net 10.88.0.0/16 gw 221.0.0.1这样写没什么错误,但是建议你写成“route add -net 10.88.0.0/16 gw 221.0.0.1 dev if0”,这样可以明确指定通过接口if0出去。
按照你上述的iptabls语句,在192.168.0.0/24网络中ping 10.88.0.254会从if0接口出去,并修改源地址为218.0.0.1-218.0.0.2地址池中的随机一个。 |
|