要让qemu虚拟机和宿主机位于同一个网络中被该网络的其他机器访问,就需要使用TUN/TAP的网络方式来启动qemu虚拟机。具体的启动指令是:
qemu -m 192 -hda disk.img -net nic,vlan=0 -net tap,vlan=0,ifname=tap0,script=/etc/qemu-ifup
如果是在WindowsXP下面,就不需要script=/etc/qemu-ifup这个启动脚本了,直接将tap0换成网桥的名字即可。
第一步,建立一个虚拟网络接口。
在linux下:
1 # mknod /dev/net/tun c 10 200
在Windows下,有开源的虚拟网卡软件,找一个来装好就行了。
第二步,建立网桥。
在linux下:
修改/etc/network/interface配置文件。此处建立一个名为br0的网桥,先桥接上eth0,在启动qemu时,再桥接上tap0。
1 # /etc/network/interface
2 # This file describes the network interfaces available on your system
3 # and how to activate them. For more information, see interfaces(5).
4
5 # The loopback network interface
6 auto lo
7 iface lo inet loopback
8
9 # The bridge network interface(s)
10 auto br0
11 iface br0 inet static
12 address 192.168.1.2
13 network 192.168.1.0
14 netmask 255.255.255.0
15 broadcast 192.168.1.255
16 gateway 192.168.1.1
17 bridge_ports eth0
18 bridge_fd 9
19 bridge_hello 2
20 bridge_maxage 12
21 bridge_stp off
在windowsXP下,在网络属性窗口中,直接将要桥接的两块网卡选中,然后点击鼠标右键,选择“桥”菜单即完成桥接。
第三步,建立qemu-ifup脚本启动qemu时调用。
在linux下:
建立/etc/qemu-ifup脚本文件(参见qemu指令的-net参数)
1 #!/bin/sh
2
3 sudo /sbin/ifconfig $1 0.0.0.0 promisc up
4 sudo /usr/sbin/brctl addif br0 $1
5 sleep 2
WindowsXP在下不用这个脚本,直接把-net的ifname参数设为网桥的名字即可。