From: David Barrett <dbarrett@quinthar.com>
To: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] Two taps, same IP?
Date: Tue, 15 Jul 2008 21:25:41 -0700 [thread overview]
Message-ID: <487D7845.6040709@quinthar.com> (raw)
In-Reply-To: <20080716130547.b109f83a.mle+tools@mega-nerd.com>
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:
david@SonOfLappy:/svn/staging$ cat /etc/qemu-ifup
#!/bin/sh
sudo -p "Password for $0:" /sbin/ifconfig $1 172.20.0.1
david@SonOfLappy:/svn/staging$
And instead creating separate image0-ifup and image1-ifup scripts as:
david@SonOfLappy:/svn/staging$ cat image0-ifup
#!/bin/sh
sudo -p "Password for $0:" /sbin/ifconfig $1 172.20.0.1
david@SonOfLappy:/svn/staging$ cat image1-ifup
#!/bin/sh
sudo -p "Password for $0:" /sbin/ifconfig $1 172.21.0.1
david@SonOfLappy:/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
prev parent reply other threads:[~2008-07-16 4:25 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-07-16 1:38 [Qemu-devel] Two taps, same IP? David Barrett
2008-07-16 1:44 ` Anthony Liguori
2008-07-16 2:11 ` David Barrett
2008-07-16 3:04 ` Erik de Castro Lopo
2008-07-16 13:51 ` Anthony Liguori
2008-07-16 3:05 ` Erik de Castro Lopo
2008-07-16 4:25 ` David Barrett [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=487D7845.6040709@quinthar.com \
--to=dbarrett@quinthar.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.