首页 > 代码库 > 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网络过滤规则简单总结