配置kvm的网络有2种方法。其一,默认方式为用户模式网络(Usermode Networking),数据包由NAT方式通过主机的接口进行传送。其二,使用桥接方式(Bridged Networking),外部的机器可以直接联通到虚拟机,就像联通到你的主机一样。我着重介绍桥接方式,并在ubuntu10.10上测试通过。主要参考了 。
第一,用户模式
虚拟机可以使用网络服务,但局域网中其他机器包括宿主机无法连接它。比如,它可以浏览网页,但外部机器不能访问架设在它里面的web服务器。
默认的,虚拟机得到的ip空间为10.0.2.0/24,主机ip为10.0.2.2供虚拟机访问。你可以ssh到主机(10.0.2.2),可以用scp来拷贝文件。
第二,桥接模式
这种模式允许虚拟机就像一台独立的主机一样拥有网络。这种模式需要网卡支持,一般的有线网卡都支持,绝大部分的无线网卡都不支持(如:ipw3945,我的T400上无线网卡)!
A) 在主机上创建一个网络桥
1)安装bridge-utils
sudo apt-get install bridge-utils
2)我们将改变网络设置,先停止网络
sudo invoke-rc.d networking stop
如果是用远程连接进行设置,我们需要将之后的设置完了,然后重启网络sudo invoke-rc.d networking restart,如果中途有一步错误,你将不能连接上去了。。
3)修改/etc/network/interfaces,可以直接用下面的替换。
a) 静态ip模式
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet static
address 192.168.0.10
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.1
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
b) DHCP模式
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet dhcp
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
4)重启网络
sudo /etc/init.d/networking restart
B) 随机生成一个KVM的MAC地址
MACADDR="52:54:$(dd if=/dev/urandom count=1 2>/dev/null | md5sum | sed 's/^\(..\)\(..\)\(..\)\(..\).*$/\1:\2:\3:\4/')"; echo $MACADDR
你也可以指定一个mac地址,但要注意,第一个字节必须为偶数,如00,52等,不能为奇数(01),否则会有不可预料的问题。因为奇数保留为多播使用。如,KVM可以接收ARP包并回复,但这些回复会使其他机器迷惑。这是以太网的规则,而非KVM的问题。
我直接将网卡地址设置为MACADDR="32:32:32:32:32:32"
C) 将以前安装的虚拟机网络改为桥接方式或者安装新的虚拟机使用桥接网络
我写了一个脚本文件
#start kvm.winxp
USERID=`whoami`
MACADDR="32:32:32:32:32:32"
model=e1000e
iface=`sudo tunctl -b -u $USERID`
kvm -net nic,vlan=0,macaddr=$MACADDR -net tap,vlan=0,ifname=$iface $@
sudo tunctl -d $iface
#end kvm.winxp
使用iso文件安装winxp,运行如下命令:
sudo ./kvm.bridge -m 512 -hda winxp.img -cdrom /home/software/zh-hans_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-74070.iso -boot d
运行安装完的虚拟机,运行如下命令:
sudo ./kvm.bridge -m 512 -hda winxp.img -boot c
阅读(2777) | 评论(0) | 转发(0) |