KVM 客户机上的路由突然中断

KVM 客户机上的路由突然中断

我有一台基于 CentOS 的主机和一台基于 KVM Debian 的虚拟机。主机在其外部网络接口上有一个以太网桥,该桥由 KVM 使用:

br0       Link encap:Ethernet  HWaddr 00:25:90:01:5E:92  
          inet addr:5.XX.XX.84  Bcast:5.XX.XX.255  Mask:255.255.255.0
          inet6 addr: fe80::fc54:ff:feaf:95b3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2893439068 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2943859744 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:3109906781642 (2.8 TiB)  TX bytes:3271403241664 (2.9 TiB)

br0:0     Link encap:Ethernet  HWaddr 00:25:90:01:5E:92  
          inet addr:10.228.0.1  Bcast:10.228.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

网桥有两个 IP,一个是外部 IP,另一个是主机和客户机之间的虚拟 LAN。它充当客户的默认网关。网桥上的 STP 已关闭。

问题是客人以某种方式得到了一条奇怪的路由规则:

root@new:~# ip route get 50.31.164.148
50.31.164.148 via 5.XX.XX.81 dev eth0  src 10.228.0.250 
    cache  ipid 0x0dfb rtt 4.781s rttvar 4.297s ssthresh 7 cwnd 9
root@new:~# 

5.XX.XX.81是主机的默认网关,但我在客户机的静态路由表中找不到此 IP:

root@new:~# ip route list
default via 10.228.0.1 dev eth0 
10.116.0.0/16 via 10.116.0.146 dev tun0 
10.116.0.146 dev tun0  proto kernel  scope link  src 10.116.0.145 
10.228.0.0/24 dev eth0  proto kernel  scope link  src 10.228.0.250 

我想知道这怎么可能发生,我们应该怎么做才能防止这种情况发生?当然,这ip route flush cache拯救了我们,但我们肯定希望消除问题本身,而不是盲目地定期刷新路由缓存。

答案1

(将我的评论转换为答案)

ICMP 重定向,请参阅linux-ip.net/html/routing-icmp.html

您的解决方案非常不寻常,通常不会桥接至真实接口,而是在主机上设置路由和伪装。

相关内容