我使用的firewall是用这个脚本:
http://www.malibyte.net/iptables/scripts/fwscripts.html.里面的端口转发.部分不大合理,原脚本如下: 建材
if [. $PORT_FORWARD -gt 0 ]; th.en 建材
if [ -f /etc/.firewall/firewal.l.nat ]; then健康
.. while read IP_PORT; do投资
. # extract the protocols., IPs and ports 杀毒
NAT_TYPE=$(ec.ho "$IP_PORT" | awk. '{print $1}').
NAT_EXT_PORT=$(echo "$IP_PORT" .| awk '{print $2}'.)( 游戏 )
N.AT_INT_IP=$(echo "$IP_PORT" | .awk '{print $3}')域名
NAT_INT_PORT=$(echo "$IP._PO.RT" | awk '{print $4}').
. # write the r.ules! 健康
. # this. is the prerouting dnat.
. iptables -A PREROUTING -t nat -p $NAT_TYPE -d $EXTERNAL_IP --dpor.t $NAT_.EXT_PORT -j DNAT \--- 印刷
--to-destination $NAT_INT_IPNAT_INT_PORThttp://upload.bbs.csuboy.com/Mon_1004/126_6958_00bc4ff17adaaa0.gif[/img]服务器
要求的firewall..nat格式为 美容
TCP 21 19.2.168.0.1 21电脑
现在有2个问题就是1:不能控制源IP和源端口(就是比如我想只给源I.P是218.77.0.0/16 网络和源端口是 5000以上的才允许.DNAT到内部服务就不能做到..电脑
问题2:
TCP 21 192.168..0.1 21用这个做FTP的DNAT时不能和服务器建立port连接,也就.是不能使用主动式FTP,得再加条TCP .20 192.168.0.1 20做2.0端口的DNAT才行,这样来又有了新的问题就是如果服务器运行基于IP虚拟主机时或再DN.AT另外一台FTP时再用TCP 2100 192.168.0.2 21 TCP 20 192.168.0.2 20这个就不起做用了,因为第一条规则已经匹配到192.168.0.1了?[成人用品]
以上的要求如果这个用iptables.输.入就非常容易了, 婚庆
iptables -t nat -A PREROUTING -d EX.TERNAL_IP -p tcp. --d.port 20:21 -j DNAT --to 192.168.0.1教育
iptables -I FORWARD -.d 192.168.0.1 -i eth1 -o et..h0 -p tcp --dport 20:21 -j ACCEPT.
iptab.les -I. FORWARD -s 192.168.0.1 -.i eth0 -o eth1 -p tcp --sport 20:21 -m state --state RELATED,ESTABLISHED -j ACCEPT外贸
手工用iptables命令做PREROUTI.NG只用了一条规则,脚本要用2条.在.FORWARD链脚本.也要4条规则,因为20,21分别单独来DNAT.这样效率上就差了,因为iptables要检查的规则就多了. 女人
在DNAT另外一台机器也容易
iptables -t n..at -A PREROUTING -d. EXTERNAL_IP -p tcp -m multiport --dport 20,2100 -j DNAT --to 192.168.0.2.
FOR.WARD链也同理放行就可以了. 建材
这里我要问的是以上的脚本能改.成在firewall.nat这个文.件里用这样的格式:域名
sourc.eIP protocol sourcePORT NAT_INT_IP NAT_INT_.PORT.
如果这样行得通后怎样可以在source.PORT指定20:.21(这个默认.好象可以) 但NAT_INT_PORT如果指定为20:21后在看执行规则只有20有效? 建材
还有-m m.ultiport 20,2100这.个可以指定吗? 美容