I have a machine set up running KVM and a bridge on eth0 with the ip address for the machine. The machine has an IP address in a range with no more ip adresses free. I am trying to make a second subnet available for KVM guests to use for their IP addresses.
network -- eth0 --- bridge0 --|
(x.x.x.75/26) |-- guest0:eth0 (x.x.y.213/28)
|
|-- guest1:eth0 (x.x.y.214/28)
I created the bridge by creating a ifcfg-bridge0 file on the host and it generally seems to be working, however I cannot initiate a connection from the outside world to the guest. What's odd is that the guest has internet access, so obviously the return packets get where they're going, but new connections cannot be established. The example case for this is that if I connect to one of the guests with VNC, I can execute wget http://google.com/
and I get the page.
On both the host and the guest iptables has been flushed so there's not iptables rules. On the host the output of the route command is
host# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
x.x.x.64 0.0.0.0 255.255.255.224 U 0 0 0 bridge0
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
169.254.0.0 0.0.0.0 255.255.0.0 U 1004 0 0 bridge0
0.0.0.0 x.x.x.94 0.0.0.0 UG 0 0 0 bridge0
In order to try to get the routing to work I've tried adding a static route to the new subnet on the brdge with a command like route add --net x.x.y.208 netmask 255.255.255.240 bridge0
. After adding the route, my route table on the host looks like
host# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
x.x.y.208 0.0.0.0 255.255.255.240 U 0 0 0 bridge0
x.x.x.64 0.0.0.0 255.255.255.224 U 0 0 0 bridge0
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
169.254.0.0 0.0.0.0 255.255.0.0 U 1004 0 0 bridge0
0.0.0.0 x.x.x.94 0.0.0.0 UG 0 0 0 bridge0
However, the host is still unable to access the guest. If I traceroute the guest I don't see the connection going out, I simply see
host# traceroute x.x.y.213
traceroute to x.x.y.213, 30 hops max, 60 byte packets
1 x.x.y.213 0.639 ms 0.771 ms 0.784 ms
But when I try to connect to the machine (e.g. telnet x.x.y.213 22
) I get no connection (in comparison on the guest if I run telnet x.x.y.213 22
or telnet x.x.x.75 22
I get a result).