关于iptables的转发的疑惑
本人新学Iptables,看到网上很多用两个网卡,分别接内网和外网的时候写forward规则,例如下面这个:
iptables -A PREROUTING -i eth0 -d 202.110.123.100 -j DNAT --to 192.168.1.100
iptables -A PREROUTING -i eth0 -d 202.110.123.200 -j DNAT --to 192.168.1.200
其次,对防火墙接收到的源ip地址为192.168.1.100和192.168.1.200的数据包进行源NAT(SNAT):
iptables -A POSTROUTING -o eth0 -s 192.168.1.100 -j SNAT --to 202.110.123.100
iptables -A POSTROUTING -o eth0 -s 192.168.1.200 -j SNAT --to 202.110.123.200
这样,所有目的ip为202.110.123.100和202.110.123.200的数据包都将分别被转发给192.168.1.100和192.168.1.200;而所有来自192.168.1.100和192.168.1.200的数据包都将分 别被伪装成由202.110.123.100和202.110.123.200,从而也就实现了ip映射。
那么系统将地址映射完成后,是如何知道数据应该从哪个网卡发出去呢?
是不是如果用nat表,数据从一个网卡进,系统必然会用另一个网卡作为出?要是这样的话那机器有两个以上的网卡怎么办?谢谢
[ 本帖最后由 juffun 于 2009-8-29 14:48 编辑 ]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
-o eth0 不就是出口吗
iptables -A POSTROUTING -o eth0 -s 192.168.1.200 -j SNAT --to 202.110.123.200
这个语句的意思是说:从eth0发出的源地址是192.168.1.200的映射为202.110.123.200呢?还是说源地址为192.168.1.200的数据从eth0发出并把其映射为202.110.123.200?
谢谢啦
源地址为192.168.1.200的数据从eth0出去,把其映射为202.110.123.200
有个NAT映射表
这个你配置都是错误的
iptables -A PREROUTING -i eth0 -d 202.110.123.100 -j DNAT --to 192.168.1.100
iptables -A PREROUTING -i eth0 -d 202.110.123.200 -j DNAT --to 192.168.1.200
只需要上述配置就行了,在linux kernel内部建立一个nat表,当数据包回来的时候,自动转化地址
不需要再转化源地规则
如果再转化!!!
[ 本帖最后由 hejin_some 于 2009-11-2 10:33 编辑 ]
6楼正确,只需要指定一次的语句就可行
数据包从哪个网卡进,哪个网卡出不是iptables来决定,而是走路由表里的路由。
iptables NAT只是地址的转换,并有一个转换的映射表。