本節咱們來看如何在實驗環境中實施和配置以下 VLAN 網絡
web
編輯 /etc/network/interfaces,配置 eth0.十、brvlan十、eth0.20 和 brvlan20。
網絡
下面用 vmdiff 展現了對 /etc/network/interfaces 的修改 測試
重啓宿主機,ifconfig 各個網絡接口 spa
用 brctl show 查看當前 Linux Bridge 的配置。 eth0.10 和 eth0.20 分別掛在 brvlan10 和 brvlan20上 了 3d
在宿主機中已經提早建立好了虛機 VM1 和 VM2,如今都處於關機狀態 orm
在 virt-manager 中將 VM1 的虛擬網卡掛到 brvlan10 上。
blog
啓動 VM1
接口
查看 Bridge,發現 brvlan10 已經鏈接了一個 vnet0 設備 it
經過 virsh 確認這就是 VM1 的虛擬網卡。 class
相似的,將 VM2 的網卡掛在 brvlan20 上
啓動 VM2
查看 Bridge,發現 brvlan20 已經鏈接了一個 vnet1 設備
經過 virsh 確認這就是 VM2 的虛擬網卡。
爲了驗證 VLAN10 和 VLAN20 之間的隔離,咱們爲 VM1 和 VM2 配置同一網段的 IP。
配置 VM1 的 IP
配置 VM2 的 IP
Ping 測試結果: VM1 與 VM2 是不通的
緣由以下: 1. VM2 向 VM1 發 Ping 包以前,須要知道 VM1 的 IP 192.168.100.10 所對應的 MAC 地址。VM2 會在網絡上廣播 ARP 包,其做用就是問 「誰知道 192.168.100.10 的 MAC 地址是多少?」 2. ARP 是二層協議,VLAN 的隔離做用使得 ARP 只能在 VLAN20 範圍內廣播,只有 brvlan20 和 eth0.20 能收到,VLAN10 裏的設備是收不到的。VM1 沒法應答 VM2 發出的ARP包。 3. VM2 拿不到 VM1 vnet0 的 MAC 地址,也就 Ping 不到 VM1。
如今對 KVM 的網絡虛擬化作個總結。
物理交換機存在多個 VLAN,每一個 VLAN 擁有多個端口。 同一 VLAN 端口之間能夠交換轉發,不一樣 VLAN 端口之間隔離。 因此交換機其包含兩層功能:交換與隔離。
Linux 的 VLAN 設備實現的是隔離功能,但沒有交換功能。 一個 VLAN 母設備(好比 eth0)不能擁有兩個相同 ID 的 VLAN 子設備,所以也就不可能出現數據交換狀況。
Linux Bridge 專門實現交換功能。 將同一 VLAN 的子設備都掛載到一個 Bridge 上,設備之間就能夠交換數據了。
總結起來,Linux Bridge 加 VLAN 在功能層面完整模擬現實世界裏的二層交換機。
eth0 至關於虛擬交換機上的 trunk 口,容許 vlan10 和 vlan20 的數據經過 eth0.10,vent0 和 brvlan10 均可以看着 vlan10 的 access 口 eth0.20,vent1 和 brvlan20 均可以看着 vlan20 的 access 口