您的位置:首页 > 理论基础 > 计算机网络

2015-12-15 QEMU Network Setup

2015-12-16 13:34 591 查看

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。

Host Setting

REMEMBER TO CHECK NETWORK CABLE CONNECTION FIRST!!!我浪费了好多时间在配置脚本上,总是无法正确设置网络,结果发现网线松动了。

Enter
/etc/sysconfig/network-scripts/


Add ifcfg-virbr0

Edit ifcfg-eth0(maybe enp3s0,enp2s0),add it to virbr0

service network restart


brctl show  //To ensure correctness


QEMU scripts

Edit runkvm for correct img path

Edit qemu-ifup for correct bridge name

Guest Setting

Run
runkvm
to start guest and enter it with root

cd /etc/udev/rules.d/


cat 70-persistent-net.rules


PCI device e1000 is QEMU network adapter,remember its NAME(eth0/1/2) and ATTR

Add eth0/1/2 scripts under network-scripts:

cd /etc/sysconfig/network-scripts/


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.)


vim ifcfg-eth1


Change HWADDR to ATTR in
70-persistent-net.rules


service network restart


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


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  qemu 虚拟机 网络