热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Debian6KVM虚拟机winxp无线网络桥接

基于内核的虚拟机KVM(Kernel-basedVirtualMachine)是linux平台上的全虚拟化解决方案KVM需要包含虚拟化支持的x86硬件,intelVT或者AMD-V。KVM使用修改后的QEMU作为前端工具,QEMU通过/dev/kvm设备与KVM交互。自kernel版本2.6.20KVM随主线内核一起发

基于内核的虚拟机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/interfaces文件中,并将tap接口加入网络桥.
增加更多的tap接口依次类推

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

如果启动tap0时报错:tap0: ERROR while getting interface 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设置。如果出现宿主机或虚拟机断开网络,请检查桥接网络中网桥是否连接好,网关是否设置好.



推荐阅读
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • 解决微信电脑版无法刷朋友圈问题:使用安卓远程投屏方案
    在工作期间想要浏览微信和朋友圈却不太方便?虽然微信电脑版目前不支持直接刷朋友圈,但通过远程投屏技术,可以轻松实现在电脑上操作安卓设备的功能。 ... [详细]
  • 本文详细介绍了如何在Ubuntu系统中下载适用于Intel处理器的64位版本,涵盖了不同Linux发行版对64位架构的不同命名方式,并提供了具体的下载链接和步骤。 ... [详细]
  • 本文介绍如何在Linux Mint系统上搭建Rust开发环境,包括安装IntelliJ IDEA、Rust工具链及必要的插件。通过详细步骤,帮助开发者快速上手。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 本文详细介绍了如何在 Linux 平台上安装和配置 PostgreSQL 数据库。通过访问官方资源并遵循特定的操作步骤,用户可以在不同发行版(如 Ubuntu 和 Red Hat)上顺利完成 PostgreSQL 的安装。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 本文介绍如何通过更改软件源来提前体验Ubuntu 8.10,包括详细的配置步骤和相关注意事项。 ... [详细]
  • 本文介绍如何通过SSH协议使用Xshell远程连接到Ubuntu系统。为了实现这一目标,需要确保Ubuntu系统已安装并配置好SSH服务器,并保证网络连通性。 ... [详细]
  • 在Ubuntu 8.04中安装美观的Cairo-Dock桌面增强工具
    本文介绍如何在Ubuntu 8.04系统中安装和配置Cairo-Dock,这款桌面增强工具以其精美的界面和高效的功能备受用户青睐。文章将指导您通过简单的步骤完成安装,并提供一些实用的配置建议。 ... [详细]
author-avatar
吕小布
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有