Ubuntu 14.04 使用qemu创建虚拟机并配置桥接网络

  目的是:在Ubuntu 14.04的服务器上使用qemu命令行创建虚拟机,并使用桥接模式配置虚拟机的网络。

  其实网络上关于qemu创建虚拟机的资料很多,并且配置桥接网络的资料也很多,为什么我还要写这个博客。

  原因是:哈哈哈,我参考网上的资料,费了很大的劲也木有配好qemu虚拟机的网络,所以分享一下曲折的经历。

  第一步就是使用qemu-img为虚拟机创建一个虚拟磁盘啦~

  

  -f                           :指定该磁盘的类型,为qcow2;

  ./ubun_qemu.img :虚拟机镜像的路径以及名称;

  30                          :为虚拟机磁盘的大小,反正现在硬盘空间还大着呢,哈哈,就设大点。10G,20G都是可以得,qemu的磁盘大小是随着需要可以自动的变大的。

  第二步就是准备虚拟机的安装镜像啦,ISO文件。我想在虚拟机中安装ubuntu 14.04桌面版,所以就到ubuntu官网(http://www.ubuntu.com/download/alternative-downloads )下载了Ubuntu 14.04.04 Desktop(64bit),也放在当前文件夹下。

  

  第三步 在虚拟磁盘中安装ubuntu 14.04.4 Desktop。

  首先描述一下错误的版本:

  根据网上的资料,使用

  qemu-system-x86_64 -m 2048 -enable-kvm -hda ubun_qemu.img -cdrom ./ubuntu-14.04.4-desktop-amd64.iso -boot d

  即可进入操作系统的安装过程啦。

  -m                       :配置虚拟机内存大小,单位为M。

  --enable-kvm      :支持KVM

  -hda                    :制定要安装虚拟机要使用的虚拟磁盘

  -cdrom               :指定cdrom为iso文件

  -boot                   :指定启动位置,d表示从光盘启动

  操作系统安装成功之后,第一件事就是添加root用户,然后就是配网络了。这个过程是曲折而坎坷的,因为我想使用桥接模式配虚拟机的网络,尝试了各种桥接设置的方式,均为成功,这些方法的主要思路是:将虚拟机注册到主机的一个单独网络接口上,然后将这个接口和主机对外的网络接口一起桥接起来。

  这样的话,需要在宿主机中为虚拟机创建一个tap虚拟网络接口,并创建一个虚拟网桥br0,并将tap和br0桥接起来就可以实现虚拟机的网络了。

  配置的步骤:

  1、安装两个配置网络所需软件包:

  apt-get install bridge-utils        # 虚拟网桥工具

  apt-get install uml-utilities       # UML(User-mode linux)工具

  2、配置虚拟网桥br0

  修改网络配置文件/etc/network/interfaces

  Ubuntu 14.04 使用qemu创建虚拟机并配置桥接网络_第1张图片

  在适当的位置填上你的环境对应的参数。

  3、手动配置TAP设备的操作:(最下面有通过interfaces文件在服务器启动时自动配置TAP的步骤)

  tunctl -t tap0 -u root              # 创建一个tap0接口,只允许root用户访问

  brctl addif br0 tap0                # 在虚拟网桥中增加一个tap0接口

  ifconfig tap0 0.0.0.0 promisc up    # 打开tap0接口

  brctl showstp br0                   # 显示br0的各个接口

  4、启动虚拟机

  qemu-system-x86_64 --enable-kvm -m 2048 -hda ./ubun_qemu.img -net nic -net tap,ifname=tap0,script=no,downscript=no

  如果省略script和downscript参数,qemu在启动时会以第一个不存在的tap接口名(通常是tap0)为参数去调用/etc/qemu-ifup脚本,而在退出时调用/etc/qemu-ifdown脚本。这两个脚本需要用户自行编写,其主要作用通常是:在启动时创建和打开指定的TAP接口,并将该接口添加到虚拟网桥中;退出时将该接口从虚拟网桥中移除,然后关闭该接口。由于配置TAP设备的操作前面已经做过了,所以启动qemu时显式地告诉qemu不要执行这两个脚本。这里需要严重注意:-net tap的各参数之间不要有空格!

  虚拟机启动成功之后,发现虚拟机的网络不可用,无法启动eth0,此时就猜测启动虚拟机的时候,网络服务没有正常启动。

  因此,我就在想,是否需要在安装虚拟机的时候就指定网络的模式。于是,开始重新安装虚拟机操作系统,在安装时就指定桥接。

  正确的版本:

  安装ubuntu 14.04.4 Desktop:

  qemu-system-x86_64 --enable-kvm -m 2048 -hda ./ubun_qemu.img -cdrom ./ubuntu-14.04.4-desktop-amd64.iso -net nic -net tap,ifname=tap0,script=no,downscript=no -boot d

  在配置好网桥,已经手动配置到tap0虚拟网络接口的基础(见上面)上,在安装时通过-net nic -net tap,ifname=tap0,script=no,downscript=no指定虚拟机使用tap桥接。

  操作系统安装好之后,

  启动虚拟机,此时也加上-net nic -net tap,ifname=tap0,script=no,downscript=no选项:

  qemu-system-x86_64 --enable-kvm -m 2048 -hda ./ubun_qemu.img -net nic -net tap,ifname=tap0,script=no,downscript=no

  虚拟机成功启动之后:

  修改虚拟机的网络配置文件/etc/network/interfaces如下:

  auto lo
  iface lo inet loopback
  auto eth0
  iface eth0 inet static
  address *.*.*.*
  netmask 255.255.255.128
  gateway 223.129.0.*
  bridge_fd 9
  bridge_hello 2
  bridge_maxage 12
  bridge_stp off
  dns-nameservers 4.4.4.4 8.8.8.8


  耶耶耶,虚拟机网络终于通了,哭。

Ubuntu 14.04 使用qemu创建虚拟机并配置桥接网络_第2张图片


  另外:

  为了在系统启动时能够自动配置虚拟网桥和TAP设备,编写/etc/network/interfaces文件的内容如下:

  auto lo
  iface lo inet loopback
  #auto p4p1//p4p1网卡的配置要注释掉
  #iface p4p1 inet manual
  auto br0
  iface br0 inet static
  bridge_ports p4p1
  address 223.129.0.243
  netmask 255.255.255.128
  gateway 223.129.0.254
  bridge_fd 9
  bridge_hello 2
  bridge_maxage 12
  bridge_stp off
  dns-nameservers 202.115.32.36 202.115.32.39
  auto tap0
  iface tap0 inet manual
  pre-up tunctl -t tap0 -u root
  pre-up ifconfig tap0 0.0.0.0 promisc up
  post-up brctl addif br0 tap0


  重启服务器之后就可以自动分配tap0虚拟网络接口了,就不需要手动配置tap0。

你可能感兴趣的:(qemu)