# 准备虚拟机网络<a name="ZH-CN_TOPIC_0183148733"></a>

## 概述<a name="section15609145455315"></a>

为了使虚拟机可以与外部进行网络通信，需要为虚拟机配置网络环境。KVM虚拟化支持Linux网桥、Open vSwitch网桥等多种类型的网桥。如[图1](#fig1785384714917)所示，数据传输路径为“虚拟机 -\> 虚拟网卡设备  -\> Linux网桥或Open vSwitch网桥 -\> 物理网卡”。创建网桥，除了为虚拟机配置虚拟网卡设备外，为主机创建网桥是连接虚拟化网络的关键。

本节给出搭建Linux网桥和Open vSwitch网桥的方法，使虚拟机连接到网络，用户可以根据情况选择搭建网桥的类型。

**图 1**  虚拟网络结构图<a name="fig1785384714917"></a>  
![](figures/虚拟网络结构图.png "虚拟网络结构图")

## 搭建Linux网桥<a name="section44441949194613"></a>

以物理网卡eth0绑定到Linux网桥br0的操作为例，搭建Linux网桥的操作步骤如下：

1.  安装bridge-utils软件包。

    Linux网桥通常通过brctl工具管理，其对应的安装包为bridge-utils，安装命令如下：

    ```
    # yum install -y bridge-utils
    ```

2.  创建网桥br0。

    ```
    # brctl addbr br0
    ```

3.  将物理网卡eth0绑定到Linux网桥。

    ```
    # brctl addif br0 eth0
    ```

4.  eth0与网桥连接后，不再需要IP地址，将eth0的IP设置为0.0.0.0。

    ```
    # ifconfig eth0 0.0.0.0
    ```

5.  设置br0的IP地址。
    -   如果有DHCP服务器，可以通过dhclient设置动态IP地址。

        ```
        # dhclient br0
        ```

    -   如果没有DHCP服务器，给br0配置静态IP，例如设置静态IP为192.168.1.2，子网掩码为255.255.255.0。

        ```
        # ifconfig br0 192.168.1.2 netmask 255.255.255.0
        ```



## 搭建Open vSwitch网桥<a name="section331504144813"></a>

Open vSwitch网桥，具有更便捷的自动化编排能力。搭建Open vSwitch网桥需要安装网络虚拟化组件，这里介绍总体操作。

**一、安装Open vSwitch组件**

使用Open vSwitch提供虚拟网络，需要安装Open vSwitch网络虚拟化组件。

1.  安装Open vSwitch组件。

    ```
    # yum install -y openvswitch-kmod
    # yum install -y openvswitch
    ```

2.  启动Open vSwitch服务。

    ```
    # systemctl start openvswitch
    ```


**二、确认安装是否成功**

确认Open vSwitch组件是否安装成功，需要检查openvswitch-kmod和openvswitch这两个组件是否安装成功。

1.  确认openvswitch-kmod组件是否安装成功。若安装成功，可以看到软件包相关信息，命令和回显如下：

    ```
    # rpm -qi openvswitch-kmod
    Name        : openvswitch-kmod
    Version     : 2.11.1
    Release     : 1.oe3
    Architecture: aarch64
    Install Date: Thu 15 Aug 2019 05:07:49 PM CST
    Group       : System Environment/Daemons
    Size        : 15766774
    License     : GPLv2
    Signature   : (none)
    Source RPM  : openvswitch-kmod-2.11.1-1.oe3.src.rpm
    Build Date  : Thu 08 Aug 2019 04:33:08 PM CST
    Build Host  : armbuild10b175b113b44
    Relocations : (not relocatable)
    Vendor      : OpenSource Security Ralf Spenneberg <ralf@os-s.net>
    URL         : http://www.openvswitch.org/
    Summary     : Open vSwitch Kernel Modules
    Description :
    Open vSwitch provides standard network bridging functions augmented with
    support for the OpenFlow protocol for remote per-flow control of
    traffic. This package contains the kernel modules.
    ```

2.  确认openvswitch组件是否安装成功。若安装成功，可以看到软件包相关信息，命令和回显如下：

    ```
    # rpm -qi openvswitch
    Name        : openvswitch
    Version     : 2.11.1
    Release     : 1
    Architecture: aarch64
    Install Date: Thu 15 Aug 2019 05:08:35 PM CST
    Group       : System Environment/Daemons
    Size        : 6051185
    License     : ASL 2.0
    Signature   : (none)
    Source RPM  : openvswitch-2.11.1-1.src.rpm
    Build Date  : Thu 08 Aug 2019 05:24:46 PM CST
    Build Host  : armbuild10b247b121b105
    Relocations : (not relocatable)
    Vendor      : Nicira, Inc.
    URL         : http://www.openvswitch.org/
    Summary     : Open vSwitch daemon/database/utilities
    Description :
    Open vSwitch provides standard network bridging functions and
    support for the OpenFlow protocol for remote per-flow control of
    traffic.
    ```

3.  查看Open vSwitch服务是否启动成功。若服务处于“Active”状态，说明服务启动成功，可以正常使用Open vSwitch提供的命令行工具，命令和回显如下：

    ```
    # systemctl status openvswitch
    ● openvswitch.service - LSB: Open vSwitch switch
       Loaded: loaded (/etc/rc.d/init.d/openvswitch; generated)
       Active: active (running) since Sat 2019-08-17 09:47:14 CST; 4min 39s ago
         Docs: man:systemd-sysv-generator(8)
      Process: 54554 ExecStart=/etc/rc.d/init.d/openvswitch start (code=exited, status=0/SUCCESS)
        Tasks: 4 (limit: 9830)
       Memory: 22.0M
       CGroup: /system.slice/openvswitch.service
               ├─54580 ovsdb-server: monitoring pid 54581 (healthy)
               ├─54581 ovsdb-server /etc/openvswitch/conf.db -vconsole:emer -vsyslog:err -vfile:info --remote=punix:/var/run/openvswitch/db.sock --private-key=db:Open_vSwitch,SSL,private_key --certificate>
               ├─54602 ovs-vswitchd: monitoring pid 54603 (healthy)
               └─54603 ovs-vswitchd unix:/var/run/openvswitch/db.sock -vconsole:emer -vsyslog:err -vfile:info --mlockall --no-chdir --log-file=/var/log/openvswitch/ovs-vswitchd.log --pidfile=/var/run/open>
    ```


**三、搭建Open vSwitch网桥**

以创建Open vSwitch一层网桥br0为例，介绍搭建方法。

1.  创建Open vSwitch网桥br0。

    ```
    # ovs-vsctl add-br br0
    ```

2.  将物理网卡eth0添加到br0。

    ```
    # ovs-vsctl add-port br0 eth0
    ```

3.  eth0与网桥连接后，不再需要IP地址，将eth0的IP设置为0.0.0.0。

    ```
    # ifconfig eth0 0.0.0.0
    ```

4.  为OVS网桥br0分配IP。
    -   如果有DHCP服务器，可以通过dhclient设置动态IP地址。

        ```
        # dhclient br0
        ```

    -   如果没有DHCP服务器，给br0配置静态IP，例如192.168.1.2。

        ```
        # ifconfig br0 192.168.1.2
        ```



