在构建较长的 iptables 规则时,每行使用一个较长的脚本还是使用表,哪种方式更有效率?性能如何?它对数据包丢失和未跟踪的数据包有影响吗?
例子:
每行一个脚本
iptables -A INPUT -i wlan0 -p tcp --sport 80 -j ACCEPT
使用表格
iptables -N table1 iptables -A INPUT -i wlan0 -j tbl1 iptables -A table1 -p tcp --sport 80 -j ACCEPT
答案1
在第二个示例中,您定义了一个名为 table1 的新链,并将传入的数据包路由到新链以便对链执行匹配。
例如,如果您在该链上执行的处理相当繁重并且您不想让所有传入的数据包都受到它的约束,那么这可能是一个很好的策略。
但在你的例子中,
- wlan0 接口上的所有传入流量都被发送到新链(这甚至包括已建立连接的数据包!)
- 该链上的处理很简单 - 只需通过源端口和目标端口进行匹配。
因此,在这个简单的例子中,定义新链并将所有内容路由到它的额外复杂性是不必要的和多余的,并且如果您能够测量性能差异,可能会导致性能降低。
除非您有更多的规则或更繁重的处理,否则性能实际上不会对您产生影响。