我有一个运行Debian 6的专用服务器,Libvirt(0.9.11.3)和Qemu-KVM(qemu-kvm-1.0 + dfsg-11,Debian)。
我有一个问题,使桥接/路由networking工作在更新的内核(> 2.6.38)的KVM客人。 NATtednetworking工作正常。
较老的内核也工作得很好。
主机内核版本是3.2.0-2-amd64,问题也出现在较旧的主机内核上。
主机的/etc/network/interfaces (ip被删除)的内容:
#环回设备: 汽车 iface lo inet loopback #桥 自动br0 iface br0 inet static 地址176.9.xx.xx 广播176.9.xx.xx networking掩码255.255.255.224 网关176.9.xx.xx pointopoint 176.9.xx.xx bridge_ports eth0 bridge_stpclosures bridge_maxwait 0 bridge_fd 0 up route add -host 176.9.xx.xx dev br0#VM IP post-up mii-tool -F 100baseTx-FD br0 #默认路由访问子网 up route add -net 176.9.xx.xx netmask 255.255.255.224 gw 176.9.xx.xx br0
主机上ifconfig -a的输出:
br0 Link encap:Ethernet HWaddr 54:04:a6:8a:66:13
inet addr:176.9.xx.xx Bcast:176.9.xx.xx Mask: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 Link encap:Ethernet 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
链路封装:本地环回
inet addr:127.0.0.1掩码:255.0.0.0
inet6 addr::: 1/128范围:主机
UP LOOPBACK RUNNING 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 Link encap:Ethernet HWaddr 52:54:00:79:e4:5a
inet addr:192.168.100.1 Bcast:192.168.100.255 Mask: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链接encap:以太网HWaddr 52:54:00:79:e4:5a
BROADCAST MULTICAST 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 Link encap:Ethernet HWaddr fe:54:00:ed:6a:43
inet6 addr: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 Link encap:Ethernet 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 Link encap:Ethernet 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)
guest虚拟机的/etc/network/interfaces ,在这种情况下运行Ubuntu 12.04(ip被移除):
#此文件描述您的系统上可用的networking接口
#以及如何激活它们。 有关更多信息,请参阅接口(5)。
#环回networking接口
汽车
iface lo inet loopback
auto eth0
iface eth0 inet static
地址176.9.xx.xx
networking掩码255.255.255.248
网关176.9.xx.xx#主机IP
pointopoint 176.9.xx.xx#主机IP
dns-nameservers 8.8.8.8 8.8.4.4
来宾上ifconfig -a的输出:
eth0 Link encap:Ethernet HWaddr 52:54:cd:83:eb:aa
inet addr:176.9.xx.xx Bcast:0.0.0.0 Mask: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)
链路封装:本地环回
inet addr:127.0.0.1掩码:255.0.0.0
inet6 addr::: 1/128范围:主机
UP LOOPBACK RUNNING 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.7ms 从static.174.82.xx.xx.clients.your-server.de(176.9.xx.xx):icmp_seq = 2redirect主机(新的下一个: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 = 2ttl = 55时间= 15.1ms 从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%丢包,时间3002ms rtt min / avg / max / mdev = 14.797 / 14.983 / 15.170 / 0.223ms,pipe道2
static.174.82.xx.xx.clients.your-server.de (176.9.xx.xx)是主机的IP地址。
我已经尝试过的每个客户操作系统都遇到过这个问题,比如Fedora,Ubuntu(服务器/桌面)以及带有升级内核的Debian。 我也尝试编译客户内核自己,无济于事。
我没有任何问题重新编译内核,虽然主机不能承受任何停机时间。
任何关于这个问题的想法都非常受欢迎。
编辑:我可以从客人内部ping主机。
好的,我自己find了解决办法。 显然, Hetzner wiki上的文章并不完整。 redirect仍在发送,导致Hetzner(我们有我们的服务器)阻止stream量。 我不确定客户端运行的是什么内核版本,如果有人能解释我非常希望听到这个消息。
您可以通过执行以下命令来了解是否遇到同样的问题:
用于`find / proc / -iname send_redirects`中的文件; 做echo $ file; 猫$文件; DONE
其输出如下所示:
的/ proc / SYS /网/的IPv4 / conf目录/所有/ send_redirects 0 的/ proc / SYS /网/的IPv4 / conf目录/默认/ send_redirects 1 的/ proc / SYS /网/的IPv4 / conf目录/ LO / send_redirects 1 的/ proc / SYS /网/的IPv4 / conf目录/为eth0 / send_redirects 0 的/ proc / SYS /网/的IPv4 / conf目录/ BR 0 / send_redirects 1 的/ proc / SYS /网/的IPv4 / conf目录/ vnet1 / send_redirects 1 的/ proc / SYS /网/的IPv4 / conf目录/ vnet0 / send_redirects 1 的/ proc / SYS /网/的IPv4 / conf目录/ virbr0 / send_redirects 1 的/ proc / SYS /网/的IPv4 / conf目录/ virbr0网卡/ send_redirects 1 的/ proc / SYS /网/的IPv4 / conf目录/ vnet2 / send_redirects 1 的/ proc / SYS /网/的IPv4 / conf目录/ vnet3 / send_redirects 1
我不得不承认我不知道哪一个应该是0,但是我已经把它们全部设置为0,现在它工作的很好,所以我将把它留在那里。
用于`find / proc / -iname send_redirects`中的文件; 做echo 0> $ file; DONE
我有同样的问题,感谢您分享您的解决scheme。 我认为只需要在物理和网桥接口(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