KVM/Libvirt 桥接/路由网络在较新的客户内核上不起作用

KVM/Libvirt 桥接/路由网络在较新的客户内核上不起作用

我有一台运行 Debian 6 的专用服务器,带有 Libvirt (0.9.11.3) 和 Qemu-KVM (qemu-kvm-1.0+dfsg-11,Debian)。
在使用较新内核 (>2.6.38) 的 KVM 客户机中,我无法让桥接/路由网络正常工作。不过,NATted 网络工作正常。
较旧的内核也可以正常工作。
主机内核的版本为 3.2.0-2-amd64,较旧的主机内核也存在此问题。
主机 (ip removed) 的内容如下/etc/network/interfaces

# 环回设备:
自动档
iface lo inet 环回

# 桥
自动 br0
iface br0 inet 静态
  地址 176.9.xx.xx
  广播 176.9.xx.xx
  网络掩码 255.255.255.224
  网关 176.9.xx.xx
  点点 176.9.xx.xx
  bridge_ports eth0
  bridge_stp 关闭
  bridge_maxwait 0
  bridge_fd 0
  up route add -host 176.9.xx.xx dev br0 # 虚拟机 IP
  后期 mii-tool -F 100baseTx-FD br0

# 访问子网的默认路由
上行路由添加-net 176.9.xx.xx 网络掩码 255.255.255.224 gw 1​​76.9.xx.xx br0

ifconfig -a主机上的输出:

br0 链路封装:以太网 HWaddr 54:04:a6:8a:66:13  
          inet 地址:176.9.xx.xx Bcast:176.9.xx.xx 掩码:255.255.255.224
          inet6 地址:fe80::5604:a6ff:fe8a:6613/64 范围:链接
          上行广播运行多播 MTU:1500 度量:1
          RX 数据包:20216729 错误:0 丢弃:0 超限:0 帧:0
          TX 数据包:19962220 错误:0 丢弃:0 超限:0 载波:0
          碰撞:0 txqueuelen:0
          RX 字节数:14144528601 (13.1 GiB) TX 字节数:7990702656 (7.4 GiB)

eth0 链路封装:以太网 HWaddr 54:04:a6:8a:66:13  
          上行广播运行多播 MTU:1500 度量:1
          RX 数据包:26991788 错误:0 丢弃:12066 超限:0 帧:0
          TX 数据包:19737261 错误:270082 丢弃:0 超限:0 载体:270082
          碰撞:1686317 txqueuelen:1000
          RX 字节:15459970915 (14.3 GiB) TX 字节:6661808415 (6.2 GiB)
          中断:17 内存:fe500000-fe520000

lo 链路封装:本地环回  
          inet 地址:127.0.0.1 掩码:255.0.0.0
          inet6 地址:::1/128 范围:主机
          上行环回运行 MTU:16436 度量:1
          RX 数据包:6240133 错误:0 丢弃:0 超限:0 帧:0
          TX 数据包:6240133 错误:0 丢弃:0 超限:0 载波:0
          碰撞:0 txqueuelen:0
          RX 字节数:6081956230 (5.6 GiB) TX 字节数:6081956230 (5.6 GiB)

virbr0 链路封装:以太网 HWaddr 52:54:00:79:e4:5a                                                                                                                                                                                                                        
          inet 地址:192.168.100.1 广播:192.168.100.255 掩码:255.255.255.0                                                                                                                                                                                                   
          上行广播运行多播 MTU:1500 度量:1                                                                                                                                                                                                                   
          RX 数据包:225016 错误:0 丢弃:0 超限:0 帧:0                                                                                                                                                                                                              
          TX 数据包:412958 错误:0 丢弃:0 超限:0 载波:0                                                                                                                                                                                                            
          碰撞:0 txqueuelen:0                                                                                                                                                                                                                                            
          RX 字节:16284276 (15.5 MiB) TX 字节:687827984 (655.9 MiB)                                                                                                                                                                                                         

virbr0-nic 链路封装:以太网 HWaddr 52:54:00:79:e4:5a                                                                                                                                                                                                                       
          广播多播 MTU:1500 度量:1                                                                                                                                                                                                                              
          RX 数据包:0 错误:0 丢弃:0 溢出:0 帧:0                                                                                                                                                                                                                   
          TX 数据包:0 错误:0 丢弃:0 超限:0 载波:0                                                                                                                                                                                                                 
          碰撞:0 txqueuelen:500                                                                                                                                                                                                                                          
          RX 字节:0 (0.0 B) TX 字节:0 (0.0 B)                                                                                                                                                                                                                               

vnet0 链路封装:以太网 HWaddr fe:54:00:93:4e:68                                                                                                                                                                                                                        
          inet6 地址:fe80::fc54:ff:fe93:4e68/64 范围:链接                                                                                                                                                                                                                    
          上行广播运行多播 MTU:1500 度量:1                                                                                                                                                                                                                   
          RX 数据包:607670 错误:0 丢弃:0 超限:0 帧:0                                                                                                                                                                                                              
          TX 数据包:5932089 错误:0 丢弃:0 超限:0 载波:0                                                                                                                                                                                                           
          碰撞:0 txqueuelen:500                                                                                                                                                                                                                                          
          RX 字节:83574773 (79.7 MiB) TX 字节:1092482370 (1.0 GiB)                                                                                                                                                                                                          

vnet1 链路封装:以太网 HWaddr fe:54:00:ed:6a:43                                                                                                                                                                                                                        
          inet6 地址:fe80::fc54:ff:feed:6a43/64 范围:链接                                                                                                                                                                                                                    
          上行广播运行多播 MTU:1500 度量:1                                                                                                                                                                                                                   
          RX 数据包:922132 错误:0 丢弃:0 超限:0 帧:0                                                                                                                                                                                                              
          TX 数据包:6342375 错误:0 丢弃:0 超限:0 载波:0                                                                                                                                                                                                           
          碰撞:0 txqueuelen:500
          RX 字节数:251091242(239.4 MiB)TX 字节数:1629079567(1.5 GiB)

vnet2 链路封装:以太网 HWaddr fe:54:00:0d:cb:3d  
          inet6 地址:fe80::fc54:ff:fe0d:cb3d/64 范围:链接
          上行广播运行多播 MTU:1500 度量:1
          RX 数据包:9461 错误:0 丢弃:0 超限:0 帧:0
          TX 数据包:665189 错误:0 丢弃:0 超限:0 载波:0
          碰撞:0 txqueuelen:500
          RX 字节:4990275 (4.7 MiB) TX 字节:49229647 (46.9 MiB)

vnet3 链路封装:以太网 HWaddr fe:54:cd:83:eb:aa  
          inet6 地址:fe80::fc54:cdff:fe83:ebaa/64 范围:链接
          上行广播运行多播 MTU:1500 度量:1
          RX 数据包:1649 错误:0 丢弃:0 超限:0 帧:0
          TX 数据包:12177 错误:0 丢弃:0 超限:0 载波:0
          碰撞:0 txqueuelen:500
          RX 字节:77233(75.4 KiB)TX 字节:2127934(2.0 MiB)

在本例中,来宾/etc/network/interfaces运行的是 Ubuntu 12.04 (ip 已删除):

# 此文件描述了系统上可用的网络接口
# 以及如何激活它们。有关更多信息,请参阅interfaces(5)。

# 环回网络接口
自动档
iface lo inet 环回

自动 eth0
iface eth0 inet 静态
        地址 176.9.xx.xx
        网络掩码 255.255.255.248
        网关 176.9.xx.xx #主机IP
        pointopoint 176.9.xx.xx #主机 IP
        dns 名称服务器 8.8.8.8 8.8.4.4

ifconfig -a来宾上的输出:

eth0 链路封装:以太网 HWaddr 52:54:cd:83:eb:aa  
          inet 地址:176.9.xx.xx Bcast:0.0.0.0 掩码:255.255.255.255
          inet6 地址:fe80::5054:cdff:fe83:ebaa/64 范围:链接
          上行广播运行多播 MTU:1500 度量:1
          RX 数据包:14190 错误:0 丢弃:0 超限:0 帧:0
          TX 数据包:1768 错误:0 丢弃:0 超限:0 载波:0
          碰撞:0 txqueuelen:1000
          RX 字节:2614642 (2.6 MB) TX 字节:82700 (82.7 KB)

lo 链路封装:本地环回  
          inet 地址:127.0.0.1 掩码:255.0.0.0
          inet6 地址:::1/128 范围:主机
          上行环回运行 MTU:16436 度量:1
          RX 数据包:954 错误:0 丢弃:0 超限:0 帧:0
          TX 数据包:954 错误:0 丢弃:0 超限:0 载波:0
          碰撞:0 txqueuelen:0
          RX 字节:176679 (176.6 KB) TX 字节:176679 (176.6 KB)

ping -c4来宾的输出:

PING google.nl (173.194.35.151) 56(84) 字节数据。
来自 muc03s01-in-f23.1e100.net (173.194.35.151) 的 64 字节:icmp_req=1 ttl=55 时间=14.7 毫秒
来自 static.174.82.xx.xx.clients.your-server.de (176.9.xx.xx): icmp_seq=2 重定向主机(新下一跳:static.161.82.9.176.clients.your-server.de (176.9.82.161))
来自 muc03s01-in-f23.1e100.net (173.194.35.151) 的 64 字节:icmp_req=2 ttl=55 时间=15.1 毫秒
来自 static.198.170.9.176.clients.your-server.de (176.9.170.198) icmp_seq=3 目标主机无法访问
来自 static.198.170.9.176.clients.your-server.de (176.9.170.198) icmp_seq=4 目标主机无法访问

--- google.nl ping 统计 ---
发送 4 个数据包,接收 2 个数据包,+2 个错误,50% 数据包丢失,时间 3002 毫秒
rtt 最小值/平均值/最大值/mdev = 14.797/14.983/15.170/0.223 毫秒,管道 2

static.174.82.xx.xx.clients.your-server.de (176.9.xx.xx)主机的 IP。
我尝试过的每个客户操作系统都遇到了这个问题,包括 Fedora、Ubuntu(服务器/桌面)和升级了内核的 D​​ebian。我也尝试过自己编译客户内核,但无济于事。
重新编译内核没有问题,但主机不能承受任何停机时间。
非常欢迎对这个问题提出任何想法。

编辑:我可以从客户机内部 ping 通主机。

答案1

好的,我自己找到了解决方案。显然,Hetzner 维基尚未完成。重定向仍在发送,导致 Hetzner(我们的服务器所在地)阻塞了流量。我不确定这与客户机运行的内核版本有何关系,如果有人可以解释,我非常想听听。

您可以通过执行以下命令来检查是否遇到同样的问题:

对于`find /proc/-iname send_redirects`中的文件;执行 echo $file;cat $file;完成

输出类似以下内容:

/proc/sys/net/ipv4/conf/all/send_redirects
0
/proc/sys/net/ipv4/conf/default/send_redirects
1
/proc/sys/net/ipv4/conf/lo/send_redirects
1
/proc/sys/net/ipv4/conf/eth0/send_redirects
0
/proc/sys/net/ipv4/conf/br0/send_redirects
1
/proc/sys/net/ipv4/conf/vnet1/send_redirects
1
/proc/sys/net/ipv4/conf/vnet0/send_redirects
1
/proc/sys/net/ipv4/conf/virbr0/send_redirects
1
/proc/sys/net/ipv4/conf/virbr0-nic/send_redirects
1
/proc/sys/net/ipv4/conf/vnet2/send_redirects
1
/proc/sys/net/ipv4/conf/vnet3/send_redirects
1

我必须承认我不知道哪些应该为 0,哪些不应该为 0,但我已将它们全部设置为 0,现在它运行良好,所以我就保留它。

对于'find /proc/-iname send_redirects'中的文件;执行 echo 0 > $file;完成

答案2

我遇到了同样的问题,谢谢分享您的解决方案。我认为仅在物理和桥接接口(eth0 和 br0)上才需要设置。您可以通过将其设置为 /etc/sysctl.d/ 来使更改持久化

#/etc/sysctl.d/10-no-icmp-redirects.conf
# Hetzner says:
# Because of our network setup, the Host machine could send ICMP
# "redirect" messages to all guests, telling them to find the Hetzner
# gateway directly.  That is impossible: Hetzner would throw away the
# traffic from the virtual interfaces because of their non registered
# MAC addresses (ie different from the main interface).
net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.eth0.send_redirects=0
net.ipv4.conf.br0.send_redirects=0
net.ipv4.conf.default.send_redirects=0

相关内容