qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] Two taps, same IP?


From: David Barrett
Subject: Re: [Qemu-devel] Two taps, same IP?
Date: Tue, 15 Jul 2008 21:25:41 -0700
User-agent: Thunderbird 2.0.0.14 (X11/20080505)

Erik de Castro Lopo wrote:
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

Success! I didn't go the VDE route, I just fixed it so tap0 and tap1 have different IPs. It's so obvious I don't know why it didn't occur to me before.

I did this by simply skipping the default "qemu-ifup" script, which is:

address@hidden:/svn/staging$ cat /etc/qemu-ifup
#!/bin/sh
sudo -p "Password for $0:" /sbin/ifconfig $1 172.20.0.1
address@hidden:/svn/staging$

And instead creating separate image0-ifup and image1-ifup scripts as:

address@hidden:/svn/staging$ cat image0-ifup
#!/bin/sh
sudo -p "Password for $0:" /sbin/ifconfig $1 172.20.0.1
address@hidden:/svn/staging$ cat image1-ifup
#!/bin/sh
sudo -p "Password for $0:" /sbin/ifconfig $1 172.21.0.1
address@hidden:/svn/staging$

Then I start it with:

sudo qemu -kernel-kqemu -net nic,macad0:00:00:00 -net tap,script=image0-ifup image0.raw

sudo qemu -kernel-kqemu -net nic,macad0:00:00:11 -net tap,script=image1-ifup image1.raw

Now it works great, I can wget from the host to both guests. Granted, the guests can't talk to each other, but that's actually a good thing as I'm explicitly trying to segment them apart. Hooray for qemu, and thanks for all your help!

-david





reply via email to

[Prev in Thread] Current Thread [Next in Thread]