2015-12-15 QEMU Network Setup

QEMU Network Setup

QEMU Network Setting

上周配置QEMU的网络设置用了很大功夫,终于彻底弄明白了。

需求:首先要清楚,因为我要修改QEMU代码,所以不能用virsh来自动配置,因为它采用的是qemu-kvm,进行了特殊的订制,可能会有不必要的麻烦。我需要自己make install之后,用qemu-system-x86_64来手动启动虚拟机。

结构:在Host中,创建桥接网络virbr0,并且将eth0连入此桥接网络。然后在Guest中,修改network-scripts,正确识别并设置QEMU的网卡e1000。最后,编写Host中的QEMU启动脚本,将Guest连入virbr0。

  1. Host Setting
    1. REMEMBER TO CHECK NETWORK CABLE CONNECTION FIRST!!!我浪费了好多时间在配置脚本上,总是无法正确设置网络,结果发现网线松动了。
    2. Enter /etc/sysconfig/network-scripts/
    3. Add ifcfg-virbr0
    4. Edit ifcfg-eth0(maybe enp3s0,enp2s0),add it to virbr0
    5. service network restart
    6. brctl show //To ensure correctness
  2. QEMU scripts
    1. Edit runkvm for correct img path
    2. Edit qemu-ifup for correct bridge name
  3. Guest Setting
    1. Run runkvm to start guest and enter it with root
    2. cd /etc/udev/rules.d/
    3. cat 70-persistent-net.rules
    4. PCI device e1000 is QEMU network adapter,remember its NAME(eth0/1/2) and ATTR
    5. Add eth0/1/2 scripts under network-scripts:
      1. cd /etc/sysconfig/network-scripts/
      2. cp ifcfg-eth0 ifcfg-eth1(If qemu network adapter is eth0,normal setting should work,and we don't need to edit,just ifconfig to check network connection.)
      3. vim ifcfg-eth1
      4. Change HWADDR to ATTR in 70-persistent-net.rules
      5. service network restart
    6. Explanation: 因为之前都是在做Xen的虚拟化,所以这个镜像中配置的network-scripts是指定的Xen的网卡作为eth0,现在采用QEMU了,缺少对应的网络配置脚本,那么直接在network-scripts中加入新的脚本配置QEMU网卡就可以了。

Setting files

ifcfg-virbr0

TYPE=Bridge
STP=yes
BOOTPROTO=none
NAME=virbr0
UUID=cc49c39a-8713-4c88-b877-557a462ab738
DEVICE=virbr0
ONBOOT=yes
DNS1=162.105.129.26
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
DELAY=0
BRIDGINS_OPTS=priority=32768
IPADDR=172.17.2.131
PREFIX=16
GATEWAY=172.17.1.1
NM_CONTROLLED=no

ifcfg-enp3s0

BRIDGE=virbr0
BOOTPROTO=none
NAME=enp3s0
UUID=cc49c39a-8713-4c88-b877-557a462ab738
DEVICE=enp3s0
ONBOOT=yes
NM_CONTROLLED=no

runkvm

#!/bin/bash

qemu-system-x86_64 -enable-kvm -nographic -m 8192 -smp 3,sockets=3,cores=1,threads=1 -device e1000,netdev=net0 -netdev tap,id=net0,script=./qemu-ifup -device virtio-balloon-pci,id=balloon0,bus=pci.0 /root/richard/test/centos6.img

qemu-ifup

#!/bin/sh
set -x

switch=virbr0

if [ -n "$1" ];then
        echo "qemu-ifup argument: interface "$1
        #/usr/bin/sudo /usr/sbin/tunctl -u `whoami` -t $1
        /usr/bin/sudo /sbin/ip link set $1 up
        sleep 0.5s
        /usr/bin/sudo /usr/sbin/brctl addif $switch $1
        exit 0
else
        echo "Error: no interface specified"
        exit 1
fi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值