首页 > 代码库 > libvirt网络过滤规则简单总结
libvirt网络过滤规则简单总结
libvirt网络过滤规则, 一个过滤规则定义的示例:
< filter name=‘no-ip-spoold‘chain=‘ipv4‘ >
< uuid >fce8ae33-e69e-83bf-262e-30786c1f8072< /uuid >
< rule action=‘drop‘ direction=‘out‘ priority=‘500‘ >
< ip match=‘no‘ srcipaddr=‘192.168.1.1‘/ >
< /rule >
< filterref filter=‘no-mac-spoofing‘/ >
< /filter >
根元素 < filter >的主要属性包括“name"和“chain”,子元素主要包括“< uuid >”、“< filterref >”、“< rule >”等。“name”属性定义该过滤规则的名称,“chain”属性定义该过滤器所在的链,过滤链用于组织过滤规则。目前,可用的chain只有root、ipv4、ipv6、arp和rarp。子元素"< rule > "定义一条规则。“<filterref >”可以直接引用其它定义好的过滤器。在这个例子中,规则匹配“IP”协议,因此,过滤器在“IPV4”链中。
在XML定义中,一条过滤规则就是一个rule节点,rule节点主要有三个属性:
“action”:可以是“drop”,表示丢弃;
“reject”,拒绝但同时生成一个ICMP拒绝消息;
“accept”表示允许通过;
“return”返回到调用该过滤器的上一级过滤器进行配;
“continue”跳到下一条规格进行匹配。
“direction”:数据包到方向,可以是“in”,入方向;“out”,出方向;“inout",双方向。
“priority”:相对于其它规则的顺序,值越低,优先级越高,取值范围为-1000到1000。如果缺省,自动赋值500。
“statematch ”:连接状态匹配,缺省为‘true‘,还可以选择‘false‘忽略连接状态。
过滤规则在做匹配时,所有条件都须同时满足,即进行逻辑与。
过滤规则支持的协议,即“rule”标签下的内容(例如上面例子中的ip):
Mac
srcmacaddr MAC_ADDR 源MAC地址
srcmacmask MAC_MASK 源MAC地址掩码
dstmacaddr MAC_ADDR 目标MAC地址
dstmacmask MAC_MASK 目标MAC地址掩码
protocolid STRING 第三层协议的ID,可以是arp, rarp, ipv4, ipv6
comment STRING
Vlan
srcmacaddr MAC_ADDR 源MAC地址
srcmacmask MAC_MASK 源MAC地址掩码
dstmacaddr MAC_ADDR 目标MAC地址
dstmacmask MAC_MASK 目标MAC地址掩码
vlanid UINT16 (0x0-0xfff, 0 - 4095) VLANID
encap-protocol String 封装的第三层协议ID,可以是arp, ipv4, ipv6
comment STRING
IPv4
srcmacaddr MAC_ADDR 源MAC地址
srcmacmask MAC_MASK 源MAC地址掩码
dstmacaddr MAC_ADDR 目标MAC地址
dstmacmask MAC_MASK 目标MAC地址掩码
srcipaddr IP_ADDR 源IP地址
srcipmask IP_MASK 源IP地址掩码
dstipaddr IP_ADDR 目标IP地址
dstipmask IP_MASK 目标IP地址掩码
protocol UINT8, STRING 第四层协议到标识,可以是tcp,udp, udplite, esp, ah, icmp, igmp, sctp
srcportstart UINT16 源端口范围的开始值
srcportend UINT16 源端口范围的结束值
dstportstart UINT16 目标端口范围的开始值
dstportend UINT16 目标端口范围的结束值
dscp UINT8 (0x0-0x3f, 0 - 63) 服务区分代码点
comment STRING
TCP/UDP/SCTP
srcmacaddr MAC_ADDR 源MAC地址
srcipaddr IP_ADDR 源IP地址
srcipmask IP_MASK 源IP地址掩码
dstipaddr IP_ADDR 目标IP地址
dstipmask IP_MASK 目标IP地址掩码
srcipfrom IP_ADDR 源IP地址范围的开始值
srcipto IP_ADDR 源IP地址范围的结束值
dstipfrom IP_ADDR 目标IP地址范围的开始值
dstipto IP_ADDR 目标IP地址范围的结束值
srcportstart UINT16 源端口范围的开始值
srcportend UINT16 源端口范围的结束值
dstportstart UINT16 目标端口范围的开始值
dstportend UINT16 目标端口范围的结束值
dscp UINT8 (0x0-0x3f, 0 - 63) 服务区分代码点
comment STRING
state STRING 逗号分隔的列表,可以是NEW,ESTABLISHED,RELATED,INVALID,NONE
flags STRING 只适用于TCP,逗号分隔的列表,可以是SYN,ACK,URG,PSH,FIN,RST,NONE,ALL
ICMP
该类规则chain的参数被忽略
srcmacaddr MAC_ADDR 源MAC地址
srcmacmask MAC_MASK 源MAC地址掩码
dstmacaddr MAC_ADDR 目标MAC地址
dstmacmask MAC_MASK 目标MAC地址掩码
srcipaddr IP_ADDR 源IP地址
srcipmask IP_MASK 源IP地址掩码
dstipaddr IP_ADDR 目标IP地址
dstipmask IP_MASK 目标IP地址掩码
srcipfrom IP_ADDR 源IP地址范围的开始值
srcipto IP_ADDR 源IP地址范围的结束值
dstipfrom IP_ADDR 目标IP地址范围的开始值
dstipto IP_ADDR 目标IP地址范围的结束值
type UINT16 ICMP类型
code UINT16 ICMP代码
dscp UINT8 (0x0-0x3f, 0 - 63) 服务区分代码点
comment (Since 0.8.5) STRING
state STRING 逗号分隔的列表,可以是NEW,ESTABLISHED,RELATED,INVALID,NONE
IGMP, ESP, AH, UDPLITE, ‘ALL‘
该类规则chain的参数被忽略
srcmacaddr MAC_ADDR 源MAC地址
srcmacmask MAC_MASK 源MAC地址掩码
dstmacaddr MAC_ADDR 目标MAC地址
dstmacmask MAC_MASK 目标MAC地址掩码
srcipaddr IP_ADDR 源IP地址
srcipmask IP_MASK 源IP地址掩码
dstipaddr IP_ADDR 目标IP地址
dstipmask IP_MASK 目标IP地址掩码
srcipfrom IP_ADDR 源IP地址范围的开始值
srcipto IP_ADDR 源IP地址范围的结束值
dstipfrom IP_ADDR 目标IP地址范围的开始值
dstipto IP_ADDR 目标IP地址范围的结束值
dscp UINT8 (0x0-0x3f, 0 - 63) 服务区分代码点
comment (Since 0.8.5) STRING
state STRING 逗号分隔的列表,可以是NEW,ESTABLISHED,RELATED,INVALID,NONE。
阅读原文
libvirt网络过滤规则简单总结