1

I have a CentOS-based host and a KVM Debian-based virtual machine on it. A host has an Ethernet bridge on its external network interface, this bridge is used by 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

The bridge has two IPs, one external and another one from a virtual LAN between the host and the guest. It acts as a default gateway for the guest. STP is turned off on the bridge.

The problem is that the guest got an odd routing rule somehow:

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 is a default gateway of the host and I can't find this IP anywhere in static routing tables on the guest:

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 

I wonder how this was possible at all and what should we do to prevent situations like this? Of course, ip route flush cache saved us but we definitely want to eliminate problem itself not to blindly flush the routing cache periodically.

Alex
  • 7,939
  • 6
  • 38
  • 52
  • 1
    ICMP redirects, http://linux-ip.net/html/routing-icmp.html Your solution is quite unusual, normally one wouldn't bridge to a real interface but setup routing and masquerading on the host. – AndreasM Oct 22 '13 at 12:30
  • @AndreasM Please convert your comment to the answer and I will accept it as a solution, you were absolutely right! – Alex Oct 16 '14 at 05:29

1 Answers1

1

(Converting my comment to an answer)

ICMP redirects, see linux-ip.net/html/routing-icmp.html

Your solution is quite unusual, normally one wouldn't bridge to a real interface but setup routing and masquerading on the host.

AndreasM
  • 1,083
  • 8
  • 13