Your Linux Data Center Experts

I've been playing with qemu getting it to talk to the network. By default, qemu uses a “usernet” mechanism which doesn't require any privileges, but I've also had no luck with getting to work talking to the public network. I found a program that Rusty Russell wrote that sets up a tun device and calls qemu connected to this tun device. I wanted to take it in a different direction.

I wanted to connect qemu to a tap device, so that I could directly connect it to the network or other qemu instances with no intervening routing NATing. A quick modification to the program Rusty Russell wrote to interface qemu to the tun device resulted in a similar program which connects to the tap device.

You can build this program with “cc -o tapdev tapdev.c”, then run qemu under tapdev with “./tapdev root - qemu ”. This will start qemu connected to a tap device, which you can then connect to your systems ethernet device using a bridge. In this example, eth0 is my ethernet device and tap0 is the tap:

ifconfig eth0 0.0.0.0 up
ifconfig tap0 0.0.0.0 up
brctl addbr br0
brctl addif br0 eth0
brctl addif br0 tap0
ifconfig br0 up

I didn't put an IP address on br0 because I use eth1, my wireless, for my normal ethernet connection. Bridging over eth1 wasn't working because of wireless quirks with MAC addresses, but it works great over wired ethernet. If you use eth0 for your primary net connection, you'll need to drop the IP from eth0, and set it up on br0.

This is working great so far. Thanks for the base code, Rusty.

comments powered by Disqus

Join our other satisfied clients. Contact us today.