Saturday, July 12, 2008

手工配置 Ubuntu hardy KVM 网络

Ubuntu hardy 中安装 KVM 速记中网络配置采用 KVM 默认方式,此法简单易用。

用户网络

使用情形

  • 最简易的从虚拟机访问宿主,Internet,和其它本地网络资源
  • 你不需要从一个 guest 访问另外一个 guest
  • 你不追求最高性能

警告:用户网络不支持部分网络特性如 ICMPP,影响一些程序(如 ping) 无法完全正常工作。

前置需求

  • 你需要 kvm 启动并运行
  • 非 root 用户运行需要拥有 /dev/kvm rw 权限
  • 如果你需要访问 Internet 或本地网络,你的宿主系统必须可以访问 Internet 和本地网络

解决方案

以参数 "-net nic -net user" 运行 kvm , 例如:

kvm -hda /path/to/hda.img -net nic -net user

注意

  • IP地址由qemu 自带的 DHCP 服务自动分配
  • 如果你在一个宿主上运行多 guest 系统,你无法为每个 guest 指定不同的 MAC 地址
  • 你仍可访问一个指定的端口,你可以使用 "redir" 选项(译者按:启动 kvm 时)

公共网桥

警告: 下面的方法,不适用于大部分的无限驱动,因为他们不支持 bridging 功能。

使用案例

  • 你不想指定 IP 地址到你的虚拟机器并且使它们可以从本地网络访问
  • 希望性能于虚拟机无关

前置需求

  • kvm 已启动并运行
  • 非 root 用户运行需要拥有 /dev/kvm rw 权限

停止当前网络接口

sudo /etc/init.d/networking restart

编辑 /etc/network/interfaces 设置 bridge 接口,注释或替换原配置为(修改为对应你网络的配置):

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_fd 9
        bridge_hello 2
        bridge_maxage 12
        bridge_stp off

或使用 DHCP(对 laptop 比较有用,但不能使用无线,囧)

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto br0
iface br0 inet dhcp
        bridge_ports eth0
        bridge_fd 9
        bridge_hello 2
        bridge_maxage 12
        bridge_stp off

这将用来创建虚拟接口 br0

重启网络

sudo /etc/init.d/networking restart

手工或用下面的脚本创建 MAC 地址

#!/bin/bash
# generate a random mac address for the qemu nic
# shell script borrowed from user pheldens @ qemu forum
echo $(echo -n DE:AD:BE:EF ; for i in `seq 1 2` ;
do echo -n `echo ":$RANDOM$RANDOM" | cut -n -c -3` ;done)

注:原脚本用的环境为 /bin/sh,ubuntu 上出错,所以这里我替换为 /bin/bash

用生成的 MAC 地址替换下面的 $macaddress 启动 KVM

kvm -hda /path/to/hda.img -net nic,macaddr=$macaddress -net tap

现在可以 ping 通本地网络了,:-)

No comments:

Post a Comment