nwfilter規則

nwfilter目的是讓管理員在host上控制vm的每塊網卡。同一個nwfilter規則可以被不同vm重複使用,也可以每個VM創建不同的filter規則。

它的默認路徑在/etc/libvirt/nwfilter/

默認libvirt安裝好後會加載一些規則,用戶也可以自定義規則。

自定義的規則編寫好後使用下面命令加載

virsh nwfilter-define 規則文件路徑

取消規則(有虛擬機使用時無法取消)

virsh nwfilter-undefine 規則名

查看已經加載的nwfilter規則

virsh nwfilter-list

編譯規則:

virsh nwfilter-edit windows (編輯保存後就立刻生效)

也可以vi 直接編輯規則的xml的文件,編輯完成後nwfilter-define後生效

 

 

規則鏈:
nwfilter支持的網卡模式bridge和network

所有規則鏈都入口都爲頂部的root在xml中這樣寫
<filter name='clean-traffic' chain='root'>

規則鏈支持的協議:root,stp,mac,vlan,ipv4,ipv6,arp,rarp

鏈名前綴以協議開頭,xml示例如:

<filter name='' chain='arp' priority=''>
<uuid></uuid>
<rule action='' direction='' priority=''>
<mac match='' srcmacaddr="/>
</rule>
<rule action='' direction='' priority=''>
<arp match='' arpsrcmacaddr=''/>
</rule>
</filter>

優先級priority的值越小優先級越高,優先級範圍-1000 到 1000,優先級越小(越高)的就越靠前。
默認優先級:
stp -810
mac -800
vlan -750
ipv4 -700
ipv6 -600
arp -500
rarp -400

規則變量
目前保留兩個變量MAC和IP,可以指定規則匹配具體的MAC和IP,同一個規則可以有多個IP
  <devices>
    <interface type='bridge'>
      <mac address='00:16:3e:5d:c7:9e'/>
      <filterref filter='clean-traffic'>
        <parameter name='IP' value='10.0.0.1'/>
        <parameter name='IP' value='10.0.0.2'/>
        <parameter name='IP' value='10.0.0.3'/>
      </filterref>
    </interface>
  </devices>

如果沒有指定IP,libvirt會自動偵測IP,建議明確指定,會少一些開銷。
value可以接收的值有具體的IP,any,dhcp,none

 

規則匹配處理
規則指定匹配到相關數據包後東站使用action來制定,每條規則都必須由action,action的動作如下:
drop 丟棄數據包
reject 返回ICMP包並拒絕
accept 允許
return 返回規則鏈上級繼續下一項檢查
continue 直接繼續下一條規則的檢測

規則的數據包走向,關鍵字direction,該關鍵字必須
下面的in和out是針對vm來說,in是進入vm的數據包,out是從VM裏面出來的數據包
in 進入
out 流出
inout 進和出

每條規則可以指定優先級priority關鍵字,如果不指定默認爲500
規則可以定義匹配的state關鍵字match
可選項statematch可以選的值0或者false

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章