作者:独笔孤行

公众号:云实战

官网:​​http://anyamaze.com​


前言

网络虚拟化技术是虚拟化技术的重要部分,网络虚拟化技术主要有桥接、NAT、SR-IOV三种实现方法。桥接网络配置简单、稳定可靠,是最常用的网络虚拟化模式。SR-IOV是PCIE层的虚拟化技术,配置相对复杂,使用较少。

网络桥接

网络桥接,又称桥接网络,是网络虚拟化技术的常用方式,具有稳定、高性能、兼容性强等特性,是生产环境中最常用的网络技术。网络虚拟化技术主要有NAT、桥接、仅主机三种模式。

NAT可以使虚拟机访问外网,并与宿主机通信,但NAT无法使虚拟机与外部主机通信。

桥接技术即可以使虚拟机访问外网,同时可以使虚拟机与外部主机通信。

仅主机模式只能保证虚拟机与宿主机通信,虚拟机无法访问外网,也无法与外部主机通信。

NAT模式相对灵活,在宿主机物理网络任意变化的场景中,NAT无需做任何调整,可以自动适应网络变化,只要宿主机可访问外网,NAT虚拟机就可以访问外网,但NAT网络性能相对较弱,据实际测试效果,最高只能达到千兆网络性能。

桥接网络相对NAT网络灵活性大打折扣,宿主机物理网络变化时,桥接网络必须进行网络调整才能保证网络正常使用。但桥接网络的性能与稳定性毋庸置疑,桥接网络性能可以达到物理网络性能的80%。因此,桥接网络是生产环境中最常用的网络模型。

仅主机网络模式的性能与桥接网络几乎相当,但由于虚拟机只能与宿主机通信,因此,生产环境中几乎不用。

网络技术原理

桥接模式

网络桥接_虚拟化技术

通过配置桥接网络br0,将虚拟机网络通过br0直接桥接到物理网卡eth0,从而访问外网。

NAT模式

网络桥接_桥接_02

通过配置NAT网络default,将虚拟机网络连接到default网络,通过virbr0-nic网口借助iptables的SNAT模式,将网络流量转发到eth0,从而访问外网。

桥接实践

方法一:直接配置

通过直接修改宿主机的网口配置文件,配置网络桥接

#1.在目录/etc/sysconfig/network-scripts创建ifcfg-br0网络桥接文件
[root@node1 network-scripts]# cat ifcfg-br0
TYPE=Bridge
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.60.128
NETMASK=255.255.255.0

#2.将物理网口eth0连接到桥接网络br0.
[root@node1 network-scripts]# cat ifcfg-eth0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME=eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE=br0 #桥接到网络br0

重启网卡服务,查看桥接网络

systemctl restart network
ip a

方法二:brctl配置

安装网络桥接配置工具bridge-utils

yum install bridge-utils -y

通过工具创建桥接网络

brctl addbr br0
brctl addif br0 ens36
brctl show

方法三:ovs配置

ovs全称OpenvSwitch,是强大的虚拟化网络管理工具,支持二层三层网络的配置,本次只是通过openvswitch配置网络桥接,关于openvswitch的详细信息,可以通过官网了解。

安装openvswitch

wget https://www.openvswitch.org/releases/openvswitch-3.0.1.tar.gz

tar xvf openvswitch-3.0.1.tar.gz
cd openvswitch-3.0.1/
./configure
make && make install

export PATH=$PATH:/usr/local/share/openvswitch/scripts/
ovs-ctl start

虚拟机加载桥接网络

KVM虚拟机加载桥接网卡,有多种实现方法,图形化操作可通过virt-manager或Webvirtmgr直接进行加载,无论哪种方法核心都是修改kvm虚拟机配置文件。本文介绍配置文件的修改方法。

修改虚拟机vm1配置文件

virsh edit vm1

添加内容

<interface type='bridge'>
<source bridge='br0'/>
<model type='virtio'/>
</interface>

编辑完成后,保存退出。

开启虚拟机后,进入虚拟机操作系统,直接操作ip a可查看到新的网卡名称。

网络桥接_桥接_03