服务器在线 - 服务器软件 - 网站地图 服务器在线,专注于服务器技术!

当前位置:主页 > 云和虚拟化 > Qemu > 正文

Debian 6 KVM虚拟机winxp无线网络桥接

时间:2015-01-18    来源:服务器在线    投稿:泡泡    点击:

基于内核的虚拟机KVM(Kernel-based Virtual Machine)是linux平台上的全虚拟化解决方案

KVM需要包含虚拟化支持的x86硬件,intel VT或者AMD-V。KVM使用修改后的QEMU作为前端工具,QEMU通过/dev/kvm设备与KVM交互。自kernel版本2.6.20 KVM随主线内核一起发行。

前提条件(prerequisite)

可以使用KVM的前提条件是CPU支持虚拟化技术,Intel VT或者AMD-V
$egrep ‘(svm|vmx)’ /proc/cpuinfo
如果有输出则说明CPU支持硬件虚拟化,SVM(Secure Virtual Machine)是AMD CPU支持硬件虚拟化的标志,VMX是INTEL CPU支持硬件虚拟化的标志

egrep '(svm|vmx)' /proc/cpuinfo
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx constant_tsc arch_perfmon bts aperfmperf pni monitor vmx est tm2 xtpr pdcm
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx constant_tsc arch_perfmon bts aperfmperf pni monitor vmx est tm2 xtpr pdcm

KVM安装

sudo apt-get install qemu-kvm

从squeeze开始KVM的包名改为qemu-kvm,kvm只是个占位dummy包

安装qemu-utils(ubuntu 10.04 不需要这一步)

sudo apt-get install qemu-utils

This package provides QEMU related utilities:
* qemu-img: QEMU disk image utility
* qemu-io: QEMU disk exerciser
* qemu-nbd: QEMU disk network block device server

创建vdisk

sudo qemu-img create winxp.img 20G

创建一个20G的raw格式的(默认)虚拟磁盘文件,更多参数见man qemu-img

虚拟机磁盘位置/home/wiloon/vm/winxp.img

分区格式:Ext4; (不要把硬盘文件放在btrfs分区上,  磁盘性能会超级差)

qemu-img create winxp.img 20G
Formatting 'winxp.img', fmt=raw size=10737418240

网桥配置:

1. 是否加载tun模块?
lsmod | grep tun

2. 检查/dev/net/tun的权限
ls -l /dev/net/tun

3. 检查/etc/qemu-ifup的权限
当前用户需要有可执行权限

4. 检查是否已经安装bridge-utils软件包
rpm -qa | grep bridge 来查询,如果没有就请安装bridge-utils包,主要是脚本中一般需要用到brctl这个命令的。

#eth0
auto eth0
     iface eth0 inet manual
     address 192.168.1.192
     netmask 255.255.255.0
     gateway 192.168.1.1
#tap0, for the vm
auto tap0
     iface tap0 inet manual
     tunctl_user youeusername
#wlan0
auto wlan0
iface wlan0 inet dhcp
      wpa-ssid "XXXX"
      wpa-psk "XXXX"
#br0
auto br0
iface br0 inet dhcp
bridge_ports wlan0 tap0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off

bridge_ports wlan0 tap0,此处将主机的bonding接口wlan0, tap0加入网络桥.

将youeusername改为你登陆主机的用户名

手动配置网络之后就不再需要随系统启动的network manager. 可以在sysv-rc-conf里把network manager 禁用掉.http://www.wiloon.com/wordpress/?p=2278

使用桥接网络,客户机必须使用主机的一个tap设备将客户机的网络接口连接到主机的网络桥,tap设备可以用两种方式来设置

一种是静态方式,直接把tap设备的配置写道/etc/network/inte***ces文件中,并将tap接口加入网络桥.
增加更多的tap接口依次类推

被桥接的网卡会开启混杂模式!!,据说无线网卡没有对应的”混杂模式”一说……,但是流量监控还是能看到其它计算机的流量,…这个还要继续google…..

如果启动tap0时报错:tap0: ERROR while getting inte***ce flags: No such device, 安装uml-utilities, 并重新启动系统.

设置ebtables…

sudo ebtables -t nat -A POSTROUTING -o wlan0 -j snat --to-src 00:1b:77:05:aa:4f --snat-arp --snat-target ACCEPT
sudo ebtables -t nat -A PREROUTING -p IPv4 -i wlan0 --ip-dst 192.168.1.199 -j dnat --to-dst 52:54:00:12:34:02 --dnat-target ACCEPT
sudo ebtables -t nat -A PREROUTING -p ARP -i wlan0 --arp-ip-dst 192.168.1.199 -j dnat --to-dst 52:54:00:12:34:02 --dnat-target ACCEPT

#00:1b:77:05:aa:4f 无线网卡也是网桥的物理地址.
#192.168.1.199 虚拟机的IP.
#52:54:00:12:34:02 虚拟机的物理地址.

半虚拟化驱动Virtio

Virtio是KVM/Linux的I/O虚拟化框架,以增强KVM的IO效率,是与其他虚拟化平台的半虚拟化(Paravirtualized)类似的东西,主要应用于磁盘设备和网络接口设备。主流的linux发行版已经默认支持Virtio,如果客户机是linux则无需其他设置,直接可以使用Virtio设备,但是如果客户机是windows,则需要在客户机安装Virtio设备驱动,甚至在windows开始安装之前需要提前加载块设备驱动。windows Virtio驱动可从这里下载http://www.linux-kvm.com/ (磁盘驱动: virtio-win-1.1.16.vfd,网卡驱动: virtio-win-0.1-15.iso)

KVM主机端设置完毕后,开始安装客户机,我的客户端版本是Windows XP SP3 x32, 因为主机是32位的(IBMX60s/CPU L2400)客户机只能选32位。

因为要使用半虚拟化(Paravirtualized)驱动virtio,但是当前的Debian Stable版本也就是squeeze发行版的kvm并不支持从virtio驱动器启动(seabios 0.5.1-3),所以需要更新一下seabios,从Debian官方sid源下载seabios 0.6.3-2,然后手动安装该包seabios_1.6.3-2_all.deb

http://packages.debian.org/sid/all/seabios/download

$sudo dpkg -i seabios_1.6.3-2_all.deb

KVM核心参数 http://www.wiloon.com/wordpress/?p=1711

sudo apt-get install seabios

sudo apt-get install ebtables

安装windows XP SP3 x32客户机

首先从http://www.linux-kvm.com/下载virtio for windows驱动,使用如下脚本启动虚拟安装

#!/bin/sh
sudo kvm -bios /usr/share/seabios/bios.bin -smp 1 -m 512 -rtc base=localtime,clock=host -boot order=d -net nic,model=virtio,macaddr=52-54-00-12-34-02 -net tap,ifname=tap0,script=no,downscript=no -drive file=/home/wiloon/vm/winxp.img,if=virtio,index=0,media=disk,format=raw,cache=writeback -drive file=/media/M_DEV/Tools/win/system/windows_xp_professional_SP3_x86.iso,index=2,media=cdrom -fda /home/wiloon/tools/kvm/virtio-win-1.1.16.vfd

安装开始后记得按F6安装磁盘的virtio驱动

安装网卡驱动

#!/bin/sh
sudo kvm -bios /usr/share/seabios/bios.bin -smp 1 -m 512 -rtc base=localtime,clock=host -boot order=d -net nic,model=virtio,macaddr=52-54-00-12-34-02 -net tap,ifname=tap0,script=no,downscript=no -drive file=/home/wiloon/vm/winxp.img,if=virtio,index=0,media=disk,format=raw,cache=writeback -drive file=/home/wiloon/tools/kvm/virtio-win-0.1-15.iso,index=2,media=cdrom

桥接后,br0的IP就是宿主机的IP,而虚拟机的IP需要在虚拟机内设定。至于是动态IP还是静态IP,需要根据使用者的需要来设定。因为虚拟 机桥接接入局域网以后,虚拟机就相当于是局域网内的一台实体计算机,与宿主机平行,所以IP的设定要谨慎一些。如果宿主机是静态IP,而虚拟机是动态 IP,那么请确保局域网内有一台DHCP服务器来分配IP。

设定虚拟机IP的时候,请不要跟br0的IP相同,否则会造成IP冲突,导致宿主机或虚拟机不能连接网络。

如果出现虚拟机、宿主机和网关能够互相ping通,但虚拟机不能浏览网络等情况,请检查虚拟机的DNS设置。如果出现宿主机或虚拟机断开网络,请检查桥接网络中网桥是否连接好,网关是否设置好.


如果您的问题仍未解决,还可以加入服务器在线技术交流QQ群:8017413寻求帮助。


上一篇:在qemu虚拟机中运行Linux系统
下一篇:没有了
相关内容
最新热点内容
推荐内容