Xen

Xen-4.0 的網橋配置中的 domU 上沒有網路

  • July 3, 2013

我用網橋配置創建了一個非常標準的 Xen-4.0 domU。但是,沒有數據包從虛擬機發送到網橋 (pet0) 所連接的網路。從來賓我可以 ping 虛擬機管理程序,但不能 ping 它之外的任何東西。

IP 地址:

  • x.x.x.121–管理程序佛
  • x.x.x.162– 虛擬機,xen6

怎麼了?這是一個非常標準的網路配置。使用另一個管理程序完全相同的配置工作(相同的作業系統,相同的版本,相同的配置),但與其他機器它沒有。

症狀看起來與類似,但是,我的網路配置看起來不錯。有任何想法嗎?

xen6:~$ ping -c 1 xxx121
PING xxx121 (xxx121) 56(84) 個字節的數據。
來自 xxx121 的 64 個字節:icmp_req=1 ttl=64 time=0.093 ms

--- xxx121 ping 統計 ---
1個包發送,1個接收,0%丟包,時間0ms
rtt 最小值/平均值/最大值/mdev = 0.093/0.093/0.093/0.000 毫秒
buddha$ sed -n '/^[^#].*\(\(network\)\|\(vif\)\)/p' xend-config.sxp
(網路腳本網路橋)
(萬歲腳本萬歲橋)
佛# ifconfig -a
eth0 鏈路封裝:乙太網 HWaddr 00:30:48:5a:05:fa 
inet 地址:xxx121 廣播:xxx255 遮罩:255.255.255.0
inet6 地址:fe80::230:48ff:fe5a:5fa/64 範圍:連結
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX 數據包:6082 錯誤:0 丟棄:0 超限:0 幀:0
TX 數據包:1138 錯誤:0 丟棄:0 超限:0 運營商:0
碰撞:0 發送隊列:0
RX 字節:573467 (560.0 KiB) TX 字節:230756 (225.3 KiB)

lo 鏈路封裝:本地環回 
inet 地址:127.0.0.1 遮罩:255.0.0.0
inet6 地址::::1/128 範圍:主機
上環回執行 MTU:16436 指標:1
RX 數據包:26 個錯誤:0 丟棄:0 超限:0 幀:0
TX 數據包:26 錯誤:0 丟棄:0 超限:0 運營商:0
碰撞:0 發送隊列:0
RX 字節:2428 (2.3 KiB) TX 字節:2428 (2.3 KiB)

peth0 鏈路封裝:乙太網 HWaddr 00:30:48:5a:05:fa 
inet6 地址:fe80::230:48ff:fe5a:5fa/64 範圍:連結
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX 數據包:6218 錯誤:0 丟棄:0 超限:0 幀:0
TX 數據包:1141 錯誤:0 丟棄:0 超限:0 運營商:0
碰撞:0 txqueuelen:1000
RX 字節:693978 (677.7 KiB) TX 字節:235320 (229.8 KiB)
中斷:26

vif1.0 鏈路封裝:乙太網 HWaddr fe:ff:ff:ff:ff:ff 
inet6 地址:fe80::fcff:ffff:feff:ffff/64 範圍:連結
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX 數據包:3 錯誤:0 丟棄:0 超限:0 幀:0
TX 數據包:4369 錯誤:0 丟棄:43 超限:0 運營商:0
碰撞:0 發送隊列:32
RX 字節:84 (84.0 B) TX 字節:487332 (475.9 KiB)
buddha# xm 網路列表 xen6
Idx 是 MAC 地址。處理狀態 evt-ch tx-/rx-ring-ref BE-path
0 0 00:16:3E:F3:0F:D9 0 4 15 769 /768 /local/domain/0/backend/vif/1/0

佛#brctl show
網橋名稱 網橋 ID 啟用 STP 的介面
eth0 8000.0030485a05fa 沒有 peth0
vif1.0
xen6# ifconfig -a
eth0 鏈路封裝:乙太網 HWaddr 00:16:3e:f3:0f:d9 
inet 地址:xxx162 廣播:xxx255 遮罩:255.255.255.0
inet6 地址:fe80::216:3eff:fef3:fd9/64 範圍:連結
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX 數據包:6870 錯誤:0 丟棄:0 超限:0 幀:0
TX 數據包:209 錯誤:0 丟棄:0 超限:0 運營商:0
碰撞:0 txqueuelen:1000
RX 字節:628821 (614.0 KiB) TX 字節:31636 (30.8 KiB)
中斷:17

lo 鏈路封裝:本地環回 
inet 地址:127.0.0.1 遮罩:255.0.0.0
inet6 地址::::1/128 範圍:主機
上環回執行 MTU:16436 指標:1
RX 數據包:1 錯誤:0 丟棄:0 超限:0 幀:0
TX 數據包:1 錯誤:0 丟棄:0 超限:0 運營商:0
碰撞:0 發送隊列:0
RX 字節:80 (80.0 B) TX 字節:80 (80.0 B)
xen6:~$ ping -c 1 xxx121
PING xxx121 (xxx121) 56(84) 個字節的數據。
來自 xxx121 的 64 個字節:icmp_req=1 ttl=64 time=0.081 ms

--- xxx121 ping 統計 ---
1個包發送,1個接收,0%丟包,時間0ms
rtt 最小值/平均值/最大值/mdev = 0.081/0.081/0.081/0.000 毫秒

這是乙太網控制器:

02:05.0 乙太網控制器:Broadcom Corporation NetXtreme BCM5704 千兆乙太網(rev 10)
子系統:Super Micro Computer Inc 設備 1648
標誌:匯流排主機,66MHz,中等開發,延遲 64,IRQ 26
fc9f0000 的記憶體(64 位,不可預取)[大小=64K]
[disabled] 處的擴展 ROM
能力:[40] PCI-X 非橋接設備
功能:[48] 電源管理版本 2
能力:[50] 重要產品數據
能力:[58] MSI:啟用-計數=1/8 可屏蔽-64 位+
正在使用的核心驅動程序:tg3

我在某處(不記得在哪裡)讀到 IPMI 造成網路問題。所以我禁用了 IPMI。

motiejus @ buddha> uname -a
Linux buddha 2.6.32-5-xen-amd64 #1 SMP Mon Jan 16 20:48:30 UTC 2012 x86_64 GNU/Linux
motiejus@buddha> lsb_release -a
分銷商 ID:Debian
說明:Debian GNU/Linux 6.0.4(擠)
發布:6.0.4
代號:擠

從 pastebin-data 更新(路由資訊和 ping 結果):

Xen6:
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface  
x.x.x.0    0.0.0.0         255.255.255.0   U         0 0          0 eth0   
0.0.0.0         x.x.x.1    0.0.0.0         UG        0 0          0 eth0   

Buddha:
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface    
x.x.x.0    0.0.0.0         255.255.255.0   U         0 0          0 eth0     
0.0.0.0         x.x.x.1    0.0.0.0         UG        0 0          0 eth0     

xen6:~$ ping -c1 x.x.x.1
PING x.x.x.1 (x.x.x.1) 56(84) bytes of data.

--- x.x.x.1 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

buddha# tcpdump -nni eth0 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode                    
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes                      
22:51:01.977068 IP x.x.x.162 > x.x.x.1: ICMP echo request, id 2632, seq 1, length 64

However, x.x.x.1 does not receive the ICMP request.

buddha# ping -c1 x.x.x.1
PING x.x.x.1 (x.x.x.1) 56(84) bytes of data.         
64 bytes from x.x.x.1: icmp_req=1 ttl=255 time=0.403 ms   

--- x.x.x.1 ping statistics ---                           
1 packets transmitted, 1 received, 0% packet loss, time 0ms    
rtt min/avg/max/mdev = 0.403/0.403/0.403/0.000 ms 

您的網路部門是否啟用了“基於 MAC”的安全性?這聽起來好像只有物理線路上的第一個傳出 MAC 被接受。

我記得我的問題是一樣的。打開 arp 記憶體解決了我的問題,也可能對你有用。

將這些行插入到/etc/sysctl.conf

net.ipv4.ip_forward = 1
net.ipv4.conf.eth0.proxy_arp = 1

我使用路由網路所以沒有peth0,也許你需要啟用它:

net.ipv4.conf.peth0.proxy_arp = 1

引用自:https://unix.stackexchange.com/questions/34333