|
|
看了~端口转发:iptables在网络中的一个经典应用
有一点疑问
其中 文中"Eth0:连接ADSL,即ppp0接口"
eth0 就是eth0 并没即是ppp0接口的说法
用ifconfig可以看到各个接口的状态,如果说eth0即是ppp0,那么ifup-ppp0时,eth0的地址就会是公网的地址
而其中关于端口转发的三条规则,小第就不是很明白第二条和第三条是怎么回事
文中
1. iptables -t nat -A PREROUTING -p tcp -m tcp --dport 881 -j DNAT --to-destination 10.10.2.200:881 ;将881请求转发至10.10.2.00:881端口
2. iptables -t nat -A POSTROUTING -s 10.10.0.0/16 -d 10.10.2.200 -p tcp -m tcp --dport 881 -j SNAT --to-source 10.10.1.1
3. iptables –A INPUT –p tcp –dport 881 –i ppp0 –j ACCEPT
iptables有三个表 1.nat 表 2.filter 表 3. mangle 表
1.nat是做地址转换的,2.filter是用来过滤,3.mangle是用来改包的
nat表中内建了三条链包括是 1.PREROUTING 2.POSTROUTING 3.OUTPUT
1.PREROUTING是在包刚进入接口后,在路由之前,修改目的地址
2.POSTROUTING是在包准备离开接口之前,在路由只后,修改源地址
3.小弟还不知道怎么用
filer表中也内建了三条链是1.INPUT 2.FORWARD 3.OUTPUT
1.INPUT是包进入本机接口的过滤,只是本机(路由器)跟其他机子没有一点关系
2.FORWARD是包转发的过滤,filter表中就这条跟内网的机器发生关系
3.OUTPUT是包离开本机接口的过滤,也只是本机(路由器)跟其他机子没一点关系
第1条rule是把ppp0上881端口监听到的的包转发给10.10.2.200上881端口
我的写法也差不多
iptables -t nat -A PREROUTING -p tcp -i ppp0 --dport 881 -j DNAT --to-destination 10.10.2.200:881
第2条rule,nat的PREROUTING和POSTROUTING链并不象filter表上的链开放端口时填写rule是有去有回.
开ssh的22端口要在INPUT链上写上
iptables -A INPUT -s 192.168.2.16 -p tcp -i eth1 --dport 22 -j ACCEPT
也需要在OUTPUT链上对应的写上
iptables -A OUTPUT -d 192.168.2.16 -p tcp -o eth1 --sport 22 -j ACCEPT
而利用POSTROUTING打开地址转换,只需要加上这条
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o ppp0 -j MASQUERADE
所以第二条是多余的
第3条 PREROUTING ,POSTROUTING 和内网发生地址转换是属于包的转发,而INPUT是路由器自己的接口的过滤,INPUT跟转发没关系.因为转发的过滤是在FORWARD上做的.所以第三条就不知所云了.
迷途的小弟,请高手指点下精华中的第二条和第三条rule是怎么回事 |
|