virsh 网络设置_KVM使用Network Filters进行虚拟机网络管理 | leon的博客
1.1 Network Filters介紹
Network filtering XML為虛擬化系統(tǒng)管理員提供了一種網(wǎng)絡(luò)流量的過濾規(guī)則,系統(tǒng)管理員可以通過配置過濾參數(shù)實(shí)施和管理對(duì)虛擬機(jī)網(wǎng)絡(luò)流量的接受和轉(zhuǎn)發(fā),由于過濾規(guī)則不能繞過直接進(jìn)入虛擬機(jī)內(nèi),使得一個(gè)filter對(duì)虛擬用戶的訪問控制具有強(qiáng)制性。
Network filtering 子系統(tǒng)允許每一個(gè)虛擬機(jī)的網(wǎng)絡(luò)過濾表可以被單獨(dú)配置,我們可以在啟動(dòng)時(shí)配置虛擬機(jī)的訪問控制過濾表,也可以在虛擬器運(yùn)行時(shí)對(duì)虛擬機(jī)的規(guī)則進(jìn)行修改,后者可以通過修改network filter XML的方式進(jìn)行。
Libvirt 允許多臺(tái)虛擬機(jī)共用一個(gè),當(dāng)filter被修改時(shí)所有運(yùn)行的虛擬機(jī)都會(huì)自動(dòng)更新filter的過濾規(guī)則。
Network filtering XML部署在KVM Server上可以實(shí)現(xiàn):虛擬網(wǎng)絡(luò)隔離、入侵防護(hù)、批量管理等功能,Openstack的網(wǎng)絡(luò)控制就是基于Networkl filter。
1.2 實(shí)現(xiàn)原理
chain類型:所有過濾規(guī)則都被組織到一個(gè)過濾鏈中,數(shù)據(jù)包經(jīng)過這些過濾鏈被選擇進(jìn)入虛擬機(jī)或是DROP掉,鏈都有不同的優(yōu)先級(jí),root鏈的優(yōu)先級(jí)最高。所有的數(shù)據(jù)包必須先經(jīng)過root鏈后才可能繼續(xù)到其他過濾規(guī)則中匹配。
priority優(yōu)先級(jí)的設(shè)定:所有鏈都被連接到root鏈中,優(yōu)先級(jí)的值越小,優(yōu)先級(jí)越高,用戶可以定義自己的優(yōu)先級(jí)數(shù)值,取值范圍(100,1000)下邊是官方提供的默認(rèn)優(yōu)先級(jí):
1.3 過濾規(guī)則語(yǔ)法
1.3.1 示例規(guī)則
[root@KVM ~]# virsh nwfilter-dumpxml no-ip-spoofing
f1f35512-7ef2-46f9-8c29-2b59f2905d69
1.3.2 filte字段
name:唯一,指定filter的名稱,后面引用時(shí)使用
chain:指定鏈類型,目前已經(jīng)存在的鏈有:
root
mac (since 0.9.8)
stp (spanning tree protocol) (since 0.9.8)
vlan (802.1Q) (since 0.9.8)
arp, rarp
ipv4
ipv6
priority:指定優(yōu)先級(jí)
uuid:唯一值
rule:指定規(guī)則具體內(nèi)容
1.3.3 rule規(guī)則
action:必選項(xiàng),指定動(dòng)作:drop,reject,accept,return,continue
direction:必選項(xiàng),傳入:in,傳出:out,傳入和傳出:inout
priority:可選項(xiàng),優(yōu)先級(jí)
statematch:可選的,默認(rèn)是true,即開啟匹配的底層連接狀態(tài),0或false關(guān)閉
內(nèi)容:根據(jù)選擇的鏈不同,使用不同的參數(shù)規(guī)則匹配,具體參見官方文檔
1.4 相關(guān)命令
1.4.1 查看過濾規(guī)則
[root@KVM ~]# virsh nwfilter-list
UUID ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Name
------------------------------------------------------------------
efd8cd06-e22d-4916-92cb-2f40e4dcbe22 ?allow-arp
bc4e01e3-c972-4bf7-b380-c261138d142d ?allow-dhcp
25392b41-bda1-47c5-9473-8c0f6f2711c9 ?allow-dhcp-server
b7d7f239-ed03-4810-bb29-ad1877ef2487 ?allow-incoming-ipv4
fd4b35db-23ad-46c2-8fc4-0b883cdc3d7f ?allow-ipv4
eb60ceeb-ffbb-413d-ac35-291fab167484 ?clean-traffic
ba723fc5-970b-404e-997a-3fd186af4a1a ?clean-traffic-gateway
cdbcdf81-9e2b-4480-861b-6b1577e57546 ?no-arp-ip-spoofing
010f7cfd-c8e9-4ace-8841-436428b03ada ?no-arp-mac-spoofing
c9fb871f-23e2-4358-96ec-c287a4b5c50d ?no-arp-spoofing
97cf25e0-6d2a-498e-9c8a-dfffeec5b88e ?no-ip-multicast
f1f35512-7ef2-46f9-8c29-2b59f2905d69 ?no-ip-spoofing
67154bef-f80e-4889-9288-c2a68972d244 ?no-mac-broadcast
d4a91993-299b-460f-a094-5194d5ed4071 ?no-mac-spoofing
eacd541b-6e64-477f-bfe2-8e6ec815fea1 ?no-other-l2-traffic
1b2bf173-2d26-45eb-bf93-a2bd808c88ad ?no-other-rarp-traffic
26efad9c-d18b-490d-aeba-9b8df5e9aaa4 ?qemu-announce-self
f89283ba-4fc0-4682-a200-77ad87a0be8c ?qemu-announce-self-rarp
1.4.2 定義過濾規(guī)則
[root@KVM ~]# virsh nwfilter-define 規(guī)則名稱
1.4.3 編輯過濾規(guī)則
[root@KVM ~]# virsh nwfilter-edit 規(guī)則名稱
1.4.4 查看規(guī)則具體內(nèi)容
[root@KVM ~]# virsh nwfilter-dumpxml 規(guī)則名稱
1.4.5 刪除過濾規(guī)則
[root@KVM ~]# virsh nwfilter-undefine 規(guī)則名稱
1.4.6 查看系統(tǒng)有沒有生效的規(guī)則
[root@KVM ~]# ebtables -t nat -L
1.4.7 使規(guī)則立即生效
[root@KVM ~]# virsh update-device 虛擬機(jī)名稱 規(guī)則名稱
1.5 編寫自己的過濾規(guī)則(禁止tpot訪問局域網(wǎng)其他服務(wù)器)
1.5.1 編寫規(guī)則文件
[root@KVM ~]# vim /etc/libvirt/nwfilter/tpot.xml
a37a0fc1-2926-4f83-beb9-681d942f7027
【規(guī)則說明】:
name='tpot':規(guī)則名稱為tpot
chain='ipv4':使用ipv4鏈進(jìn)行過濾
action='drop' direction='out':出方向禁止規(guī)則
match='yes':匹配時(shí)執(zhí)行action過濾規(guī)則;或者設(shè)置為no,不匹配時(shí)執(zhí)行action
dstipaddr='$IP:目標(biāo)IP地址,匹配地址為參數(shù)形式,后面在引用的時(shí)候定義
dstipmask='255.255.255.0':目標(biāo)IP子網(wǎng)掩碼
提示:KVM過濾規(guī)則默認(rèn)保存位置:/etc/libvirt/nwfilter/
1.5.2 定義規(guī)則
[root@KVM ~]# virsh nwfilter-define /etc/libvirt/nwfilter/tpot.xml
1.5.3 引用規(guī)則
[root@KVM ~]# virsh edit Debian-Tpot
1.5.4 啟動(dòng)虛擬機(jī)
[root@KVM ~]# virsh start Debian-Tpot
1.5.5 *查看定義后的過濾規(guī)則
[root@KVM ~]# virsh nwfilter-dumpxml tpot
a37a0fc1-2926-4f83-beb9-681d942f7027
1.5.6 *查看生效規(guī)則
[root@KVM ~]# ebtables -t nat -L
Bridge table: nat
Bridge chain: PREROUTING, entries: 1, policy: ACCEPT
-i vnet35 -j libvirt-I-vnet35
Bridge chain: OUTPUT, entries: 0, policy: ACCEPT
Bridge chain: POSTROUTING, entries: 0, policy: ACCEPT
Bridge chain: libvirt-I-vnet35, entries: 1, policy: ACCEPT
-p IPv4 -j I-vnet35-ipv4
Bridge chain: I-vnet35-ipv4, entries: 3, policy: ACCEPT
-p IPv4 --ip-dst 192.168.1.0/24 -j DROP
1.6 參考資料
總結(jié)
以上是生活随笔為你收集整理的virsh 网络设置_KVM使用Network Filters进行虚拟机网络管理 | leon的博客的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springboot中得注解_Sprin
- 下一篇: 降雨插值_ArcGIS计算土壤侵蚀模数(