David Barrett wrote:
I'm considering a tap-based alternative to the -redir patch I proposed
earlier, but I'm just not quite getting how it works. In particular,
I'm able to access the webserver on one image just fine, but not the
other: wget fails with "Connecting to 172.20.0.3:80... failed: No route
to host."
Can you explain why and set me straight?
Specifically, I have two Debian qemu images (0 and 1), identical in all
respects except that image0 and image1 are configured to use static IPs
172.20.0.2 and 172.20.0.3, respectively. I've launched both
simultaneously with the following commands:
sudo qemu -kernel-kqemu -net nic,vlan=0 -net tap,vlan=0 image0.raw
sudo qemu -kernel-kqemu -net nic,vlan=0 -net tap,vlan=0 image1.raw
Each image is configured with the following /etc/network/interfaces:
auto lo
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet static
address 172.20.0.2 <--- image1 has: address 172.20.0.3
netmask 255.255.0.0
gateway 172.20.0.1
This creates two tap interfaces (0 and 1) on the Ubuntu host, curiously
with the same IP:
tap0 Link encap:Ethernet HWaddr 00:ff:84:12:9d:72
inet addr:172.20.0.1 Bcast:172.20.255.255 Mask:255.255.0.0
inet6 addr: fe80::2ff:84ff:fe12:9d72/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:18 errors:0 dropped:0 overruns:0 frame:0
TX packets:36 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:1336 (1.3 KB) TX bytes:4704 (4.5 KB)
tap1 Link encap:Ethernet HWaddr 00:ff:af:9a:48:29
inet addr:172.20.0.1 Bcast:172.20.255.255 Mask:255.255.0.0
inet6 addr: fe80::2ff:afff:fe9a:4829/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:24 errors:0 dropped:0 overruns:0 frame:0
TX packets:34 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:1656 (1.6 KB) TX bytes:4664 (4.5 KB)
"wget http://172.20.0.2" and "wget http://172.20.0.3" each work fine
inside their respective VMs. But each is unable to wget the other's
webserver.
I have multiple machines set up to run through one tap device (named
qtap0). Originally I tried a number of different qemu networking options
but in the end, I settled on VDE as that was the only one which worked
reliably.
When I first set it up, I think I went from this document:
http://lists.gnu.org/archive/html/qemu-devel/2005-06/txtDAJWgugtC1.txt
The clients have unique MAC addresses and request DHCP addresses from
the host. The DHCP client on each guest is set up to send its host name
back to the DHCP/DNS server (I'm using dnsmasq) and all the running
guests can see all the other running guests as well as the host and
other machines in the network.
I have a quite a few guests (32 bit Debian, 64 bit Debian, 64 bit
Fedora, 64 bit Gentoo, 64 bit FreeBSD etc), but don't have enough RAM
to run more than 2 or 3 at a time.
Thanks for any tips you can provide!
Maybe try the VDE networking option.
Cheers,
Erik