I am new to qemu networking and pretty confused about the following situation. I launched 5 VMs. Each connects to br0 through a tap device. I also have a dnsmasq listening on br0 for DHCP.
The problem is dnsmasq does not hand out ip to VM according to the dhcp_host file I specified. The dhcp_host file has entries like: mac:ip. I thought when I put the mac addr in qemu, the dnsmasq should look up the ip from the dhcp_host file. But it didn't. Instead, it hands out ip randomly.
Now, when I checked with brctl. It shows 10 mac addresses instead of 5!? I searched a lot of qemu networking tutorials from google before come to ask here. None of them answer my questions. Could someone please explain the situation or give me some pointers? Thanks!
$ brctl show bridge name bridge id STP enabled interfaces br0 8000.1ed7c974ed93 no tap0 tap1 tap2 tap3 tap4
$ brctl showmacs br0 port no mac addr is local? ageing timer 1 02:2f:ef:29:be:36 no 1.73 1 1e:d7:c9:74:ed:93 yes 0.00 4 22:00:f4:a8:89:8a no 3.99 5 5a:e6:2a:d6:a0:50 yes 0.00 3 5e:18:64:12:3d:ec yes 0.00 3 72:22:53:51:f4:fa no 3.08 4 7a:e4:22:89:59:9a yes 0.00 5 82:9f:d3:6d:54:17 no 0.69 2 c2:fb:2a:3a:81:e9 no 32.99 2 e6:a6:7a:a4:49:d4 yes 0.00
UPDATE:
Below is one sample qemu process info from ps aux
user 15983 99.9 8.0 5673100 5296180 ? Sl 12:29 214:30 qemu-system-x86_64 -enable-kvm -snapshot -no-shutdown -m 5120 -smp 2 -pidfile /home/user/vm-workingdir/instance-2/pid -monitor unix:/home/htrc/user/instance-2/monitor,server,nowait -serial file:/home/user/vm-workingdir/instance-2/release_mon -usb -net nic,vlan=0,macaddr=c2:b3:04:4b:8c:c8 -net tap,vlan=0,fd=3 -hda /home/user/vm-workingdir/instance-2/image.img -vnc :105,password
Best Answer
The tap device's mac and the actual mac of the virtual NIC in the VM are different, this is why you see double the amount of MACs in the output.
You should only look at the VM's internal MACs, the ones you specify in the
-net nic,vlan=0,macaddr=XX:XX...
argument, the tap dev MACs aren't important.