17.14.2. 过滤链


过滤规则在过滤链中进行组织。这些链可以看作具有树结构,并将规则过滤为单个链(branches)中的条目。
数据包在根链中启动过滤评估,然后在其它链中继续评估,从这些链返回回根链,或者由其中一个遍历链的过滤规则丢弃或接受。
libvirt 的网络过滤系统会自动为每个虚拟机的网络接口创建独立 root 链,用户选择激活流量过滤。用户可以编写过滤规则,这些规则直接以根链中实例化,或者创建特定于协议的过滤链,以便有效地评估协议特定规则。
存在以下链:
  • root
  • mac
  • STP(跨树协议)
  • VLAN
  • ARP 和 rarp
  • ipv4
  • ipv6
评估 mac、stp、vlan、arp、rarp、ipv4 或 ipv6 协议的多个链只能使用链名称中的协议名称创建为前缀。

例 17.3. ARP 流量过滤

这个示例允许指定名称 arp-xyz 或 arp-test 的接口,并在这些链中评估其 ARP 协议数据包。
以下过滤器 XML 显示了 arp 链中过滤 ARP 流量的示例。
<filter name='no-arp-spoofing' chain='arp' priority='-500'>
  <uuid>f88f1932-debf-4aa1-9fbe-f10d3aa4bc95</uuid>
  <rule action='drop' direction='out' priority='300'>
    <mac match='no' srcmacaddr='$MAC'/>
  </rule>
  <rule action='drop' direction='out' priority='350'>
    <arp match='no' arpsrcmacaddr='$MAC'/>
  </rule>
  <rule action='drop' direction='out' priority='400'>
    <arp match='no' arpsrcipaddr='$IP'/>
  </rule>
  <rule action='drop' direction='in' priority='450'>
    <arp opcode='Reply'/>
    <arp match='no' arpdstmacaddr='$MAC'/>
  </rule>
  <rule action='drop' direction='in' priority='500'>
    <arp match='no' arpdstipaddr='$IP'/>
  </rule>
  <rule action='accept' direction='inout' priority='600'>
    <arp opcode='Request'/>
  </rule>
  <rule action='accept' direction='inout' priority='650'>
    <arp opcode='Reply'/>
  </rule>
  <rule action='drop' direction='inout' priority='1000'/>
</filter>
在 arp 链中将 ARP 特定规则放在一个rp 链中,而不是根链中的特定规则,即 ARP 以外的数据包协议不需要由 ARP 协议的特定规则评估。这提高了流量过滤的效率。但是,必须注意,必须只注意给定协议的过滤规则到链中,因为不会评估其他规则。例如,没有在 ARP 链中评估 IPv4 规则,因为 IPv4 协议数据包不会遍历 ARP 链。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.