配置KVM虚拟机Bridge网络

来自CloudWiki
跳转至: 导航搜索

安装工具

安装brctl和tunctl命令行工具,要采用Bridge模式的网络配置,首先需要安装两个RPM包,即bridge-utils和tuned,它们提供所需的brctl和tunctl命令行工具。可以用yum工具安装这两个RPM包。

yum install bridge-utils tunctl

查看tun模块是否加载。

lsmod |grep tun

tun          17095  2 vhost_net

编写脚本(选学)

vi /etc/qemu-ifup

#!/bin/bash
switch=br0
if [ -n $1 ];then
        ifconfig $1 up
        sleep 1
        brctl addif $switch $1
        exit 0
else
        echo "Error: No Specifed interface."
        exit 1
fi


[root@victory ~]# chmod +x /etc/qemu-ifup

创建Bridge

建立一个Bridge,并将其绑定到一个可以正常工作的网络接口上,同时让Bridge成为连接本机与外部网络的接口,首先确认网卡正常工作。确保想使用Bridge网桥的网卡能够为KVM虚拟机模块提供网络连接能力并且网卡可以工作。这个网卡应该要能够给KVM虚拟机提供相同的网络支持。接下来的例子说明了网卡的配置,并且可以被外部网络访问。在这个例子中,使用了eth0网卡。主要的配置命令如下。

# brctl addbr br0
# brctl addif br0 eth0

创建对应的网桥IP,删除eth0网口的IP地址,如下代码所示。

vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
BOOTPROTO=none
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
DRIDGE=br0

vi /etc/sysconfig/network-scripts/ifcfg-br0

DEVICE=br0
TYPE=bridge
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=10.0.0.48
NETMASK=255.255.255.0
GATEWAY=10.0.0.2
DNS1=114.114.114.114

</nowiki>

配置完成之后重启网络,service network restart

同时查看网络和网桥的配置信息。

ip addr list

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:24:3d:91 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::20c:29ff:fe24:3d91/64 scope link
       valid_lft forever preferred_lft forever
3: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
    link/ether 52:54:00:e6:8d:c2 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 500
    link/ether 52:54:00:e6:8d:c2 brd ff:ff:ff:ff:ff:ff
9: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
    link/ether 00:0c:29:24:3d:91 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.48/24 brd 10.0.0.255 scope global br0
    inet6 fe80::20c:29ff:fe24:3d91/64 scope link
       valid_lft forever preferred_lft forever


route -n

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 br0
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1009   0        0 br0
0.0.0.0         10.0.0.2        0.0.0.0         UG    0      0        0 br0

  1. brctl show

</nowiki>

用QEMU-KVM命令启动Bridge模式的网络

ln -s /usr/libexec/qemu-kvm /usr/bin/qemu-kvm

/usr/bin/qemu-kvm -m 512 -drive file=cirros-0.3.3-x86_64-disk.img,if=virtio -net nic,model=virtio -net tap,script=/etc/qemu-ifup -nographic -vnc :2

查看br0网桥

brctl show br0

bridge name      bridge id                          STP enabled     interfaces
br0                      8000.000c2982d685      no                      eth0
                                                           		          tap0

这样就设置一个桥接的网络,查看网桥的接口信息可以看到默认已经绑定到br0桥。该配置表示连接宿主机的TAP网络接口到n号VLAN中,并且使用file和dfile两个脚本在启动客户机时配置网络和在关闭客户机时取消网络配置。TAP参数,表明使用TAP设备。TAP是虚拟网络设备,它仿真了一个数据链路层设备,它像以太网的数据帧一样处理第二层数据报。而TUN与TAP类似,也是一种虚拟网络设备,它是对网络层设备的仿真。TAP用于创建一个网桥,而TUN与路由相关。“vlan=n”,设罝该设备VLAN编号,默认值为0