【问题标题】:Does IPTable parameter order affect performance?IPTable 参数顺序会影响性能吗?
【发布时间】:2014-10-30 16:51:32
【问题描述】:
请问下面的iptable规则
iptables -I FORWARD -p tcp -m set --match-set HUUUGE_SET dst --dport 80 -j REJECT
比这个效率低
iptables -I FORWARD -p tcp --dport 80 -m set --match-set HUUUGE_SET dst -j REJECT
对于 dport != 80 的数据包。
换句话说,您指定参数的顺序是否与检查它们的顺序相同,或者 iptables 是否具有某种预定/优化的参数检查顺序。
谢谢!
【问题讨论】:
标签:
optimization
firewall
iptables
【解决方案1】:
AFAIK,iptables 的参数将被编组到一个结构中,以馈送到netfilter 内核模块,因此参数的顺序完全不会影响性能。
这是一个测试:
# iptables -N test
# iptables -A test -p tcp --dport 80 -s 10.0.0.1 -j DROP
# iptables -A test -p tcp -s 10.0.0.2 --dport 80 -j DROP
# iptables-save | grep test
:test - [0:0]
-A test -s 10.0.0.1/32 -p tcp -m tcp --dport 80 -j DROP
-A test -s 10.0.0.2/32 -p tcp -m tcp --dport 80 -j DROP
#
如您所见,无论您键入匹配参数的顺序如何,iptables-save(它转储当前在内存中活动的 netfilter 规则集)都会“规范化”该顺序。