iptables第一场比赛最后一场比赛

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我的规则集,通常使用以下顺序添加我的规则。

  • build立,相关(由ShoreWall自动完成)
  • 延迟敏感协议(NTP等)。
  • 所需的协议(DNS等)。
  • 重用的协议(HTTP,SMTP,IMAP等)。
  • 不常用的协议。

内置的链条有一个可以接受,拒绝或丢弃的策略。 这适用于没有规则匹配的情况。 用户定义的链有一个隐含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,则会放弃该匹配。