[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] Anyone have functioning networking with a FreeBSD host?
From: |
Bakul Shah |
Subject: |
Re: [Qemu-devel] Anyone have functioning networking with a FreeBSD host? |
Date: |
Sun, 13 Jun 2004 11:59:26 -0700 |
I am using /dev/tap based networking, not the usermode one.
It all works fine (thanks to some help from Juergen Lock).
BTW, I am using the latest FreeBSD port &
Freebsd-5.2-current.
- when using the tap device you need to ifconfig the interface.
You can do this manually or via a script. Either copy this
script to /etc/qemu-ifup or run it from the command line.
Something like
echo ifconfig $1 192.168.0.1 > /etc/qemu-ifup
chmod +x /etc/qemu-ifup
This needs to be done on the *host*.
- make sure you are using -pci option (I needed this for
a FreeBSD guest -- do not know why).
- You may wish to use the linux-test image from the qemu
site, for debugging all this. Give the *guest OS* an
address like 192.168.0.2 or something in the same subnet as
the tap interface. Once the OS is up and its interface
configured, you should be able to ping the this address
from the host FreeBSD. If this step works, you have a
working connection between the guest and the host; the
remaining work is all networking related, nothing to do
with qemu per se.
- Networking related changes: you will have to enable
forwarding on the host. You will likely need to add static
routes or update your NAT rules or both. You may have to
run dhcp proxy on the host.... Someone should come up with
a script that figures out the right thing to do based on
your setup.
Some random thoughts:
* When qemu opens the tap device, it always returns a new
device. You can change this behavior by patching vl.c. On
line 1104 change the `for' loop to start at 0 instead of -1
-- line # as per the patched sources in the FreeBSD port.
This loop first tries /dev/tap and then /dev/tap0,
/dev/tap1 and so on. The change skips /dev/tap.
* I am not sure if removing suser() test in if_tap.c is the
right thing to do from a security perspective so I left this
alone.
* I don't see why /dev/tap is an exclusive open device. If
multiple opens were allowed, a number of VMs can be on the
same simulated network. That is, qemu for each guest can
open the same device and they will all *see* each other as
well as the host!
* I first thought qemu should also have a qemu-ifdown script
but may be it is better to wrap qemu in a shell script that
does the initial setup and final cleanup.
* It would be nice if qemu exited only on a power down
event instead of a reboot. May be as an option.
Overall this is a very impressive emulator! So far I have
brought up Linux, FreeBSD-5.2.1 and a trial version of Window
2003. Kudos to Fabrice Bellard and the other wizardly
programmers!