本文介紹了Xen橋接網絡及出故障時可采用的工具和方法:
Xen橋接網絡非常靈活,然而邏輯和管理方面也還算簡單。
橋接裝置
- bridge, 網橋;一般起名為:xenbr0, xenbr1, etc.
- vif, 虛拟網絡接口;一般起名為:vif0.0,vif0.1, etc.
- veth/eth, 虛拟網絡裝置;一般起名為:eth0, etc.
橋接工具
- /etc/xen/script/network-bridge, 網橋操作腳本
- /etc/xen/script/vif-bridge, 虛拟接口操作腳本
- brctl 工具,事實上以上兩個腳本均調用了它
排查步驟
- brctl show; 再看橋接是否OK。
- ethtool peth; 先看實體網卡通不通。
- ifconfig vif; 看各虛拟接口是否正常。
- ifconfig eth/veth; 看看虛拟網絡裝置是否正常。
連結
- Xen Networking
Xen網絡聯接方式
Xen 提供了 3 種虛拟網絡模型來供客戶機通路實體裝置——橋接、路由和 NAT。在橋接模式中,虛拟網絡接口(vif)在外部區域網路是可見的,在路由模型中,vif 在外部區域網路是不可見的,但是 IP 是可見的。在 NAT 模型中,vif 在外部區域網路不可見,它也沒有一個外部可見的 IP 位址。
在橋接模式下, brctl 工具被用來建立軟體方式的橋接接口,一個實體網絡接口然後附加到橋上。Xen 客戶機域的後端 vif 能被附加到這個橋上。當橋接口接收到來自實體接口的包時,實體網絡接口将依據各域的虛拟網卡的 MAC 位址轉發它們到不同的域上。
在路由模型下将使用 iptables 機制來進行路由。由實體接口所收到的所有的包将被驅動域的網絡 IP 層所處理。驅動域(dom0)查找路由表條目并将包轉發到不同的客戶機 IP 位址。在路由模式下,驅動域連接配接 2 個不同的網段:内部由客戶機使用的網段和連接配接外部網絡的網段。
在驅動域作為一個 NAT 網關時,驅動域仍然作為一個路由器,但是更進一步映射一個它自己的 IP 位址和端口到一個客戶機的 IP 位址和端口。客戶機的 IP 位址隐藏在驅動域後面對外部網絡不可見。
Linux 防火牆提供了 iptables ,而 bridge-utils 則提供了 etables 來進行基本的 MAC 位址過濾。也可以指定一個實體網卡給一個域使用。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicGcq5CNxMTNyETOxkDMxAjMh9CX5ADMx8Fa052bt9CXzRnbl1GajFGd0F2LcRXZu5CNxMTMwgjL3d3dvw1LcpDc0RHaiojIsJye.jpg)
Xen網絡結構相當靈活,适當配置可以“輕松”實作dom0/domU與實體網絡三者之間的複雜拓撲。
橋接模式
圖一、Xen 橋接模式示意圖
下圖是個橋接的例子。
veth0、vif0.0 是 dom0 的網絡接口。veth0 被重命名為 eth0。xenbr0 接口是軟橋接接口。vif1.0 是運作的客戶機的後端網絡接口
peth0、xenbr0、vif0.0、vif1.0 都共享同樣的 MAC 位址 FE:FF:FF:FF:FF:FF,它是以太網的廣播位址。這意味着實際的網絡接口、dom0 的回環接口、客戶機的後端接口都向 xenbr0 廣播。當實體網卡接收到包時,它直接發送到橋接接口 xenbr0,這個橋接接口通過包的 MAC 位址決定将包轉發到哪個域的後端接口。是以 peth0 不需要 IP,隻需要 MAC 位址。實體接口的原先 IP 已經被告知給 eth0——驅動域的虛拟前端接口。
xenbr0 通過 MAC 位址是 00:11:25:F6:15:22 或者是 00:16:3e:45:e7:12 來決定包轉發到 eth0 或者 vif1.0。客戶域相應的前端接口被命名為 eth0。從 dom0 的角度看,客戶機中 eth0 實際是 vif1.0。
brctl 指令的顯示:
- [[email protected]]# brctl show
- bridge name bridge id STP enabled interfaces
- xenbr0 8000.feffffffffff no vif1.0
- peth0
- vif0.0
參考連結
- XenNetworking-XenSource