iptables是否有能力指定规则的第一个或最后一个匹配? 如果这样怎么样?
其次,当指定规则时,是否存在隐式删除,或者下面仅提供该function?
iptables --policy INPUT DROP iptables --policy OUTPUT DROP iptables --policy FORWARD DROP
第一场比赛有很强的performance。 首次匹配允许扫描一旦数据包匹配就停止。 出于这个原因,通常把ESTABLISHED,RELATED规则放在链条的顶端。 如果没有第一个匹配规则,每个数据包将需要与每个适用链中的每个规则相匹配,随着规则集的增长,这个规则将变得越来越昂贵。 繁忙的防火墙可能会有更大的规则集,并可能有最后一场比赛的性能问题。
用最后的比赛方式阅读规则集可能很困难,因为一旦你find第一场比赛,你不知道你是否完成。 随着规则集规模的增长,这又变得更加困难。
在先前的规则之后添加规则是可能的,但是它在先前添加的规则之前出现。 这是通过使用iptables -I来添加规则而不是iptables -A 。 使用您希望绕过的规则的索引将规则集中在一起。 如果您正在修改正在运行的一组规则,则此方法可能会完成您需要执行的操作。 我build议订购你的规则,以便他们与第一场比赛一起工作。
我使用Shorewall构build我的规则集,通常使用以下顺序添加我的规则。
内置的链条有一个可以接受,拒绝或丢弃的策略。 这适用于没有规则匹配的情况。 用户定义的链有一个隐含RETURN策略,可以通过使用匹配所有数据包的所需操作的规则结束链来覆盖。
iptables在第一场比赛的基础上运作,我不相信有任何方法来改变这一点。 您如何设置您的规则取决于您是否希望包容性或默认排他性。
例如,如果您运行一个您希望每个人都可以访问的networking服务器(除了150.0.0.0/8类中的任何人),则默认情况下会将您的规则设置为包容性。
iptables -A INPUT -p tcp -s 150.0.0.0/8 -dport 80 -j DROP iptables --policy INPUT ACCEPT
如果你想设置你的服务器是独占的,你需要像这样设置它。
iptables -A INPUT -p tcp -s 150.0.0.0/8 -dport 80 -j ACCEPT iptables --policy INPUT DROP
我认为我的规则例子应该回答你关于DROP的问题。 如果您在规则上添加-j DROP,则会放弃该匹配。