17.14.10. 支持的协议
以下小节列出了并提供了有关网络过滤子系统支持的协议的一些详细信息。这类流量规则作为嵌套节点在规则节点中提供。根据规则过滤的流量类型,属性会有所不同。上例演示了 ip 流量过滤节点中有效的单一属性
srcipaddr
。以下小节展示了哪些属性有效,以及它们期望的数据类型。可用的数据类型如下:
- UINT8:8 位整数;范围 0-255
- UINT16:16 位整数;范围 0-65535
- MAC_ADDR:以点十进制格式的 MAC 地址,如 00:11:22:33:44:55
- MAC_MASK:MAC 地址格式的 MAC 地址掩码,如 FF:FF:FF:FC:00:00
- IP_ADDR:以带点十进制格式的 IP 地址,如 10.1.2.3
- IP_MASK:IP 地址掩码使用点十进制格式(255.255.248.0)或 CIDR 掩码(0-32)
- IPV6_ADDR:以数字格式的 IPv6 地址,如 FFFF::1
- IPV6_MASK:以数字格式的 IPv6 掩码(FFFF:FFFF:FC00::)或 CIDR 掩码(0-128)
- 字符串:一个字符串
- BOOLEAN: 'true', 'yes', '1' or 'false', 'no', '0'
- IPSETFLAGS:最多 6 个 'src' 或 'dst' 元素的 ipset 的源和目的地标志选择来自数据包标头的源或目标部分的功能,例如: src,src,dst。这里提供的 'selectors' 数量取决于引用的 ipset 类型
除了
IP_MASK
或 IPV6_MASK
之外的每个属性外,可以使用值 no 的 match 属性来求反。多个指定属性可以分组在一起。以下 XML 片段显示使用抽象属性的示例。
[...] <rule action='drop' direction='in'> <protocol match='no' attribute1='value1' attribute2='value2'/> <protocol attribute3='value3'/> </rule> [...]
规则的行为会评估规则,并在给定协议属性的边界内查看它。因此,如果单个属性值与规则中提供的值不匹配,则在评估过程中将跳过整个规则。因此,在上述示例中,仅当协议属性
attribute1
不匹配 value1
和 protocol 属性属性2 不匹配 value 2
且协议属性
属性3 与 value3
匹配时,才会丢弃传入流量。
17.14.10.1. MAC(Ethernet)
协议 ID:mac
这个类型的规则应该进入 root 链。
属性名称 | datatype | 定义 |
---|---|---|
srcmacaddr | MAC_ADDR | 发件人的 MAC 地址 |
srcmacmask | MAC_MASK | 应用到发送者的 MAC 地址的掩码 |
dstmacaddr | MAC_ADDR | 目的地的 MAC 地址 |
dstmacmask | MAC_MASK | 应用到目的地的 MAC 地址的掩码 |
protocolid | UINT16(0x600-0x selfLink), STRING | 第 3 层协议 ID。有效字符串包括 [arp, rarp, ipv4, ipv6] |
注释 | 字符串 | 最多 256 个字符的文本字符串 |
过滤器可以编写如下:
[...] <mac match='no' srcmacaddr='$MAC'/> [...]