2008年6月8日星期日

iptables优化

配置新的ftp做好iptables后,被网络协会的学长骂ftp连接效率大大降低。原来iptables需要优化而我竟然一直没有注意到么,我很伤心于是苦练优化。
google了若干篇文献之后发现简单的iptables优化实在是简单和泛滥得很的一个议题。对于不太长的规则表,最简单而有效的优化策略就是按照规则被引用的频率进行排序、使用 -m state 和用户自定义规则链。我目前所作的,就是对21, 4021和它们对应的被动端口配置filter表,而优化的策略就是:
1. 在针对IP和端口进行过滤之前加上语句
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

2. 把这4种端口分别写进4个用户自定义规则链,并且在INPUT中引用这4个规则链,如下:
# new chain for port 21
/sbin/iptables -N allow21
/sbin/iptables -A allow21 -p tcp -s 123.45.670.0/24 --dport 21 -j ACCEPT
/sbin/iptables -A allow21 -p tcp -s 123.45.671.0/24 --dport 21 -j ACCEPT
/sbin/iptables -A allow21 -p tcp -s 123.45.672.0/24 --dport 21 -j ACCEPT
/sbin/iptables -A allow21 -p tcp -s 123.45.673.0/24 --dport 21 -j ACCEPT
/sbin/iptables -A allow21 -p tcp -s 123.45.675.0/24 --dport 21 -j ACCEPT
# allow connection to port 21
/sbin/iptables -A INPUT -p tcp --dport 21 -j allow21

按照我的设想,这样做有两个好处。其一就是把用户端的动作进行了分解,登录时和下载时只需要遍历一个自定义链,再加上-m state的帮助,性能应该可以得到提升。其二就是INPUT表实际上只包含4条规则而最常用到的21端口又排在最前面,这样也可以减少遍历的次数。

3. 本来原先是对eth0和eth1两张网卡分别进行了设置,后来发现并不需要如此高而不实的安全性,干脆就省掉对网络界面的定义了。

经我自己测试,效能反正有提高就是了。至于是不是能就此完工,就看那位学长是不是满意了。

没有评论: