|
|

楼主 |
发表于 2005-8-22 10:19:02
|
显示全部楼层
光有那一条还不行。通过潜心研究文档,偶终于大彻大悟 需要使用这两条iptables命令:
iptables -t nat -A PREROUTING --protocol tcp --destination 218.x.x.x --dport 21 -j DNAT --to-destination 192.168.0.1:21
iptables -t nat -A POSTROUTING --protocol tcp --source 192.168.0.0/24 --destination 192.168.0.1 --dport 21 -j SNAT --to-source 218.x.x.x
背景:偶的外网卡eth0,内网卡eth1,218.x.x.x是公网IP(eth0),192.168.0.0/24是内网地址,其中192.168.0.1就是FTP服务器的IP;已经通过从YaST界面的防火墙配置了通过masquerade访问internet
现用命令iptables -t nat -L -v -n可看到如下结果:
Chain PREROUTING (policy ACCEPT 85147 packets, 7697K bytes)
pkts bytes target prot opt in out source destination
22 1104 DNAT tcp -- * * 0.0.0.0/0 218.x.x.x tcp dpt:21 to:192.168.0.1:21
Chain POSTROUTING (policy ACCEPT 104 packets, 12059 bytes)
pkts bytes target prot opt in out source destination
21814 1407K MASQUERADE all -- * eth0 192.168.0.0/24 0.0.0.0/0
12 588 SNAT tcp -- * * 192.168.0.0/24 192.168.0.1 tcp dpt:21 to:218.x.x.x
偶一行行说说自己的理解,不对之处请赐教(本周是偶学sles9的第3周,真心向各位前辈学习):
第1行:任何地方发来的到218.x.x.x:21的包,将起目标地址修改为192.168.0.1:21
第2行:内网发到eth0任何协议的任何包都将其“化妆”成公网IP(这个是从YaST设置防火墙得到的结果)
第3行:从内网发到192.168.0.1:21的包,将其源地址修改为218.x.x.x:21
这样,内、外网都可通过这个公网IP访问FTP服务器。 |
|