Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1858107
  • 博文数量: 473
  • 博客积分: 13997
  • 博客等级: 上将
  • 技术积分: 5953
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-22 11:52
文章分类

全部博文(473)

文章存档

2014年(8)

2013年(38)

2012年(95)

2011年(181)

2010年(151)

分类: LINUX

2011-09-14 21:28:12

下面介绍配置KVM桥接网络的方法: \\特别注意,大部分不能桥接无线网卡。。。只能桥接PCI网卡。。。。
安装桥接工具:

代码:

sudo apt-get install bridge-utils

安装创建TAP界面的工具:

代码:

sudo apt-get install uml-utilities

编辑网络界面配置文件
代码:

sudo vi /etc/network/interfaces
,根据你的情况加入以下内容:

代码:

auto eth0
iface eth0 inet static \\这里可以为DHCP
address 192.168.1.2
netmask 255.255.255.0
gateway 192.168.1.1

auto tap0
iface tap0 inet manual
up ifconfig $IFACE 0.0.0.0 up
down ifconfig $IFACE down
tunctl_user lm \\lm是我的用户名,在这里换为你的用户名

auto br0
iface br0 inet static \\当然这里也可以使用DHCP分配
bridge_ports eth0 tap0
address 192.168.1.3
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1


激活tap0和br0: //有些时候会不奏效,但重启后就行了

代码:

sudo /sbin/ifup tap0
sudo /sbin/ifup br0

好了以后ifconfig看一下,多了一个tap0和br0, br0上的IP地址就是你本机的IP地址。

KVM的使用方法:
KVM的使用方法具体可以参考

代码:
/usr/local/kvm/bin/qemu-system-x86_64 --help

下面具体举几个例子:
创建虚拟磁盘(用qemu-img命令):

代码:

mkdir kvm
cd kvm
/usr/local/kvm/bin/qemu-img create -f qcow2 winxp.img 10G

创建虚拟机:

代码:

sudo /usr/local/kvm/bin/qemu-system-x86_64 -m 512 -hda /home/lm/kvm/winxp.img -localtime -net nic,vlan=0,macaddr=52-54-00-12-34-01 -net tap,vlan=0,ifname=tap0,script=no -boot d -cdrom /home/lm/iso/winxp.iso -smp 2 -clock rtc -soundhw es1370

这里对各个参数说明一下:

代码:

-m 512

分配512MB的内存给GUEST OS

代码:

-hda /home/lm/kvm/winxp.img

使用虚拟磁盘的文件和路径

代码:

-localtime

使用本地时间(一定要加这个参数,不然虚拟机时间会有问题)

代码:

-net nic,vlan=0,macaddr=52-54-00-12-34-01 -net tap,vlan=0,ifname=tapo,script=no

使用网络,并连接到一个存在的网络设备tap0,注意mac地址一定要自己编一个,特别是如果你虚拟了多个系统并且要同时运行的话,不然就MAC冲突了

代码:

-boot d

从光盘启动 (从硬盘启动则为 -boot c )

代码:

-cdrom /home/lm/iso/winxp.iso

使用的光盘镜像,如果要使用物理光驱的话就是 -cdrom /dev/cdrom

代码:

-smp 2

smp处理器个数为2个,如果你是4核处理器,后面的数字就为4(如果不开启此选项,则只能以单核模式运行)

代码:

-clock rtc

使用rtc时钟(如果不开启此选项,WINXP可能会很慢)

开始启动装系统了吧?是不是非常的快?如果你机器可以的话大概在15分钟左右就把XP装好了。
启动装好的虚拟机(很简单,上面的命令改两个参数就行):

代码:

sudo /usr/local/kvm/bin/qemu-system-x86_64 -m 512 -hda /home/lm/kvm/winxp.img -localtime -net nic,vlan=0,macaddr=52-54-00-12-34-01 -net tap,vlan=0,ifname=tap0,script=no -boot c -smp 2 -clock rtc -soundhw es1370

然后在客户端里设置好IP地址就可以使用了,但是KVM的显卡能力不行,可以通过rdesktop远程连接解决

代码:

rdesktop 192.168.1.4:3389 -u administrator -p ****** -g 1280x750 -D -r sound:local \\分辨率可以自行设定,是不是比VirtualBox的无缝连接模式要爽??


补充:
如果同时运行多个GUEST OS ,则网络设置要改一下,在/etc/network/interfaces 里加几个tap界面就行了,每个GUEST OS单独使用一个TAP,比如说现在要同时运行3个GUEST OS ,则配置文件如下:

代码:

auto tap0
iface tap0 inet manual
up ifconfig $IFACE 0.0.0.0 up
down ifconfig $IFACE down
tunctl_user lm \\lm是我的用户名,在这里换为你的用户名

auto tap1
iface tap1 inet manual
up ifconfig $IFACE 0.0.0.0 up
down ifconfig $IFACE down
tunctl_user lm \\lm是我的用户名,在这里换为你的用户名

auto tap2
iface tap2 inet manual
up ifconfig $IFACE 0.0.0.0 up
down ifconfig $IFACE down
tunctl_user lm \\lm是我的用户名,在这里换为你的用户名

auto br0
iface br0 inet static \\当然这里也可以使用DHCP分配
bridge_ports eth0 tap0 tap1 tap2
address 192.168.1.3
netmask 255.255.255.0
network 192.168.1.1
broadcast 192.168.1.255
gateway 192.168.1.1


启动GUEST OS

代码:

sudo /usr/local/kvm/bin/qemu-system-x86_64 -m 512 -hda /home/lm/kvm/winxp.img -localtime -net nic,vlan=0,macaddr=52-54-00-12-34-01 -net tap,vlan=0,ifname=tap0,script=no -boot c -smp 2 -clock rtc -soundhw es1370

把ifname=tap0换为你要tap1或者tap2就行了,MAC也要改噢。。

要注意,系统重启后要重新加载kvm内核模块:

代码:

sudo modprobe kvm
sudo modprobe kvm-amd //如果使用AMD处理器
sudo modprobe kvm-intel //如果是用INTEL处理器

当然,你也可以修改系统相关设置在启动时自动加载该模块。
同理,可以用此方法安装LINUX。装完了可以对比一下,是不是比VB和VM要爽得多呢?

其他比如像USB连接问题可以参考论坛里的帖子

但是现在KVM还有很多的缺点,我还没有成功在KVM上安装SOLARIS系统(可能时钟不同步导致),还有有些时候WINDOWS在KVM里会有系统时钟不同步的问题(会导致WINDOWS GUEST运行很慢)。

我已经在我的系统里同时运行了4个CentOS 4.6 1个winxp sp3 1个win2003 sp2 5个FreeBSD 7.0
速度太快了,难以置信。
系统配置为:Athlon X2 5000+ 4G RAM 跑的Ubuntu 8.04.1 64bit

其实KVM的安装和使用都很方便简单的,大家要理解KVM各个参数的含义。最关键的就是KVM的网络桥接的设置,参考了网上很多的东西都没 有效果,最终还是参考了VIRTUALBOX的官方的用户使用文档的网络桥接设置部分才成功的,在这里大家要多看软件自身的文档,会有很大的帮助。

################################################

首先说一下实现原理。我是想先在host上造一块假网卡,然后guest的系统跟这假网卡连接构成一个局域网。guest想连外网的话,就把host当路由器。至于域名服务器,在guest系统里直接指定。
本人实验的host是ubuntu 10.04 server,guest是redhat 5。
接下来我会假设你已经装了kvm,而且能用它启动虚拟机。
(以下一到四参照了vbox的网络设定,都在host下操作)
一,首先把必要的工具装了:
代码:
sudo apt-get install uml-utilities


二,再造假网卡tap0(名字随便取)并作一些基本配置

代码:
sudo tunctl -t tap0 -u xxx

此处xxx换成你自己的用户名

代码:
sudo chmod 0666 /dev/net/tun

这样大家都有权力去读写那个假网卡。即使在上面那行代码中你指定了自己的用户名,你还是没有办法读写tap0(很奇怪),所以这条命令是有用的。


三,配置网卡的网络参数。

代码:
sudo ifconfig tap0 192.168.0.10 netmask 255.255.255.0 up
       
       随便设,但是你要确保你待会设置的guest的网卡ip跟tap0的属于同一个网段。

      转载增加:
         在ubuntu 10.04中 保存配置以便下次开机有效:
         sudo vi /etc/network/interfaces
         增加以下几行:
         auto tap0
         iface tap0 inet static
         address 192.168.0.1
         netmask 255.255.255.0

         保存并退出,
        使用 /etc/init.d/networking restart 重启网络使配置生效


四,接下来是系统的配置(连外网所必须)如果只是虚拟机之间通信则不需要配置。

代码:
sudo echo 1 > /proc/sys/net/ipv4/ip_forward

这样开启了linux的ip转发功能,host可以当路由器用了。如果你想让guest连上外网的话这条一定要。

代码:
sudo iptables -t nat -A POSTROUTING -j MASQUERADE

这条命令也是连外网所必须的。

五,启动kvm虚拟机

代码:
/usr/bin/kvm  -m 256  -cdrom "/media/7_ALL/rhel-server-5.4-i386-dvd.iso" -hda "/media/7_ALL/virt1.img" -boot c -net nic -net tap,ifname=tap0,script=no  $*

-net nic -net tap,ifname=tap0,script=no 是跟网络相关的,上面的命令的其他部分自己跟据实际情况修改。ifname=你造的假网卡的名字,我的是tap0。

六,guest系统的配置。

guest启动后应该会认出一张网卡,realtek的。我的freebsd认出来是re0。把那网卡的ip设定成192.168.0.x,(这 个ip跟host下tap0的ip不能相同!但要确保它们同在一个子网。我的是192.168.0.11),并把netmask设成 255.255.255.0。到现在,guest和host应该是同在一个子网了。你可以试一下在guest里ping 192.168.0.10,在host里ping 192.168.0.11,如无意外,应该能ping通。到现在已实现host guest之间的互访。

七,让guest连上外网。(前提是host已经连上外网)

只需要把guest的默认网关设置成192.168.0.10(你的假网卡的ip)就可以了,非常的简单。
域名服务器手动设置,不会很麻烦。

至此kvm网络设置的问题解决了。

阅读(822) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~