I have a host machine with 2 ethernet cards on two different subnets. I've set up bridges for both of them:
Quote:
host> brctl show
bridge name bridge id STP enabled interfaces
br0 8000.003048c655e0 no vnet7
vnet5
vnet1
vnet3
tap0
eth0
br1 8000.003048c655e1 no vnet6
vnet4
vnet0
vnet2
tap1
eth1
virbr0 8000.000000000000 yes
|
In my virtual machines I've connected one virtual ethernet card to br0 and the other to br1. The problem is that only eth1 (in the virtual machine) that is connected to br0 on the host works fully. eth0 that is connected to br1 does not work. I can't connect to machine on the same subnet. I can ping them, but I can't open a tcp connection:
Quote:
vm> telnet d2 25
Trying 63.240.50.213...
telnet: connect to address 63.240.50.213: Connection refused
telnet: Unable to connect to remote host: Connection refused
|
I can tell from tcpdump that the target machine does not see anything from the vm besides an arp request.
The problem is the same in the opposite direction. I can ping the vm from an entirely different network, but if I try to telnet to it tcpdump shows me that the vm never sees anything.
So the question is why does one virtual ethernet card work and not the other? On the host I compared the files in /proc/sys/net/ipv4/conf and they are exactly the same for eth0/eth1 br0/br1 tap0/tap1
The command line for my vm (started by libvirtd) is :
/usr/bin/qemu-kvm -S -M pc -m 2048 -smp 3 -name dmail -uuid <snip> -monitor pty -pidfile /var/run/libvirt/qemu//dmail.pid -boot c -drive file=/var/lib/libvirt/images/dmail.img,if=ide,index=0,boot=on -drive file=/var/lib/libvirt/images/dmail-b.img,if=ide,index=1 -drive file=/local/download/CentOS-5.3-x86_64-bin-DVD/CentOS-5.3-x86_64-bin-DVD.iso,if=ide,media=cdrom,index=2 -net nic,macaddr=54:52:00:11:cb:ae,vlan=0 -net tap,fd=22,script=,vlan=0,ifname=vnet4 -net nic,macaddr=54:52:00:11:cb:af,vlan=1 -net tap,fd=23,script=,vlan=1,ifname=vnet5 -serial pty -parallel none -usb -vnc 127.0.0.1:2 -k en-us