- 论坛徽章:
- 0
|
原帖由 tomorrow0530 于 2006-9-14 17:55 发表
做流量控制,打算用iptables+tc, 都已经开始了
结果今天被质疑iptables的效率
理由如下:
iptables 基于规则, 没有匹配上规则就会一直往下, 直到所有规则.
问题在于对于每一条规则, 包都要从ip头, tcp头或udp头, 一层层解析(或者说是指针偏移)
就是说前一次解析出的结果, 对 下一次没有任何意义!!!!!!
上头的建议就是希望从下至上的7层解析只做一次!
这我要如何反驳?
心想, 能设计iptables/netfilter的牛人应该考虑过这个问题,要不也不会选择这个方式
但能力有限,想不明白. 还望各位大虾指点迷经
为何 iptables 的 rule 都会先写这行叙述在前面不是没道理的
- iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
复制代码
了解一下 ESTABLISHED 就不会被该问题困住了.
另外若是跑的 iptables rule 很长的话, 一般要搭配 -N 建立不同的 chain 来跳跃呼叫使用, 这样效率才会好.
比方常见一般例子说明:
- iptables -A INPUT -p tcp -s 192.168.1.1 -p tcp --dport 25 -j DROP
- iptables -A INPUT -p tcp -s 192.168.1.10 -p tcp --dport 25 -j DROP
- iptables -A INPUT -p tcp -s 192.168.1.20 -p tcp --dport 25 -j DROP
- iptables -A INPUT -p tcp -s 192.168.1.30 -p tcp --dport 25 -j DROP
复制代码
这个通常可以改成:
- iptables -N BAN_INPUT_PORT25
- iptables -A BAN_INPUT_PORT25 -p tcp -s 192.168.1.1 -j DROP
- iptables -A BAN_INPUT_PORT25 -p tcp -s 192.168.1.10 -j DROP
- iptables -A BAN_INPUT_PORT25 -p tcp -s 192.168.1.20 -j DROP
- iptables -A BAN_INPUT_PORT25 -p tcp -s 192.168.1.30 -j DROP
- iptables -A INPUT -p tcp --dport 25 -j BAN_INPUT_PORT25
复制代码
==
[ 本帖最后由 kenduest 于 2006-9-14 20:37 编辑 ] |
|