From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KIyaN-0007Yn-TG for qemu-devel@nongnu.org; Wed, 16 Jul 2008 00:25:51 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KIyaM-0007Xx-Ey for qemu-devel@nongnu.org; Wed, 16 Jul 2008 00:25:50 -0400 Received: from [199.232.76.173] (port=49499 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KIyaM-0007Xf-0J for qemu-devel@nongnu.org; Wed, 16 Jul 2008 00:25:50 -0400 Received: from yx-out-1718.google.com ([74.125.44.158]:30257) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KIyaL-0006UT-Py for qemu-devel@nongnu.org; Wed, 16 Jul 2008 00:25:50 -0400 Received: by yx-out-1718.google.com with SMTP id 3so1636958yxi.82 for ; Tue, 15 Jul 2008 21:25:48 -0700 (PDT) Message-ID: <487D7845.6040709@quinthar.com> Date: Tue, 15 Jul 2008 21:25:41 -0700 From: David Barrett MIME-Version: 1.0 Subject: Re: [Qemu-devel] Two taps, same IP? References: <487D510C.4070106@quinthar.com> <20080716130547.b109f83a.mle+tools@mega-nerd.com> In-Reply-To: <20080716130547.b109f83a.mle+tools@mega-nerd.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org 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