一、LinuxBridge集线器管理

网路虚拟化是虚拟化技术中最复杂的部份,也是十分重要的资源。

第一节中我们创建了一个名为br0的linux-bridge集线器,假如在此集线器上新建一台vm,如右图:

VM2的虚拟网卡vnet1也联接到了br0上。现今VM1和VM2之间可以通讯,同时VM1和VM2也都可以与内网通讯。

查看网路状态:

用brctlshow显示当前集线器联接状态:

brctl命令

二、Vlan介绍

LAN表示LocalAreaNetwork,本地局域网linux 网卡虚拟化命令,一般使用Hub和Switch来联接LAN中的计算机。通常来说,两台计算机连入同一个Hub或则Switch时,它们就在同一个LAN中。

一个LAN表示一个广播域。其涵义是:LAN中的所有成员就会收到任意一个成员发出的广播包。

VLAN表示VirtualLAN。一个带有VLAN功能的switch才能将自己的端口界定出多个LAN。计算机发出的广播包可以被同一个LAN中其他计算机收到,但坐落其他LAN的计算机则未能收到。简单地说,VLAN将一个交换机分成了多个交换机,限制了广播的范围,在二层将计算机隔离到不同的VLAN中。

比方说,有两组机器,GroupA和B,我们想配置成GroupA中的机器可以互相访问,GroupB中的机器也可以互相访问,并且A和B中的机器难以相互访问。一种方式是使用两个交换机,A和B分别接到一个交换机。另一种方式是使用一个带VLAN功能的交换机,将A和B的机器分别放在不同的VLAN中。

VLAN的隔离是二层上的隔离,A和B难以互相访问指的是二层广播包(例如arp)难以跨越VLAN的边界。但在三层上(例如IP)是可以通过路由器让A和B互通的。

现今的交换机几乎都是支持VLAN的。一般交换机的端口有两种配置模式:Access和Trunk。如右图

Access口

这种端口被打上了VLAN的标签,表明该端口属于那个VLAN。不同VLAN用VLANID来分辨,VLANID的范围是1-4096。Access口都是直接与计算机网卡相连的,这样从该网卡下来的数据包流入Access口后就被打上了所在VLAN的标签。Access口只能属于一个VLAN。

Trunk口

假定有两个交换机A和B。A上有VLAN1(红)、VLAN2(黄)、VLAN3(蓝);B上也有VLAN1、2、3,那怎么让AB上相同VLAN之间才能通讯呢?

办法是将A和B连上去,但是联接A和B的端口要容许VLAN1、2、3三个VLAN的数据都还能通过。这样的端口就是Trunk口了。VLAN1,2,3的数据包在通过Trunk口抵达对方交换机的过程中一直带着自己的VLAN标签。

三、LinuxBridge实现Vlan原理

KVM虚拟化环境下实现VLAN构架,如右图

eth0是宿主机上的数学网卡,有一个命名为eth0.10的子设备与之相连。eth0.10就是VLAN设备了,其VLANID就是VLAN10。eth0.10挂在命名为brvlan10的LinuxBridge上,虚机VM1的虚拟网卡vent0也挂在brvlan10上。

这样的配置其疗效就是:宿主机用软件实现了一个交换机(其实是虚拟的),里面定义了一个VLAN10。eth0.10,brvlan10和vnet0都分别接到VLAN10的Access口上。而eth0就是一个Trunk口。VM1通过vnet0发出来的数据包会被打上VLAN10的标签。

eth0.10的作用是:定义了VLAN10

brvlan10的作用是:Bridge上的其他网路设备手动加入到VLAN10中

降低一个VLAN20,如右图

这样虚拟交换机就有两个VLAN了,VM1和VM2分别属于VLAN10和VLAN20。

对于新创建的虚机,只须要将其虚拟网卡装入相应的Bridge,还能控制其所属的VLAN。

VLAN设备总是以父子关系出现,父子设备之间是一对多的关系。一个母设备(eth0)可以有多个子设备(eth0.10,eth0.20……),而一个子设备只有一个母设备。

四、LinuxBridge实现Vlan

(1)查看核心是否提供VLAN功能,执行

#dmesg|grep-i802

或则检测/proc/net/vlan目录是否存在。

假如沒有提供VLAN功能,/proc/net/vlan目录是不存在的。

假如8021q模块没有载入系统,则可以通过使用modprobe模组命令载入802.1q模组,並且借助lsmod命令确认模组是否早已载入到核心内。

#modprobe8021q

#lsmod|grep8021q

设置开机载入8021q模块(可选)

在/etc/sysconfig/modules下降低一个8021q.modules文件,文件内容为modprobe8021q

#vi/etc/sysconfig/modules/8021q.modules

modprobe8021q

(2)安装查看用于查看Vlan配置的工具————vconfig

提早武器好vconfig-1.9-16.el7.x86_64.rpm

#rpm-ivhvconfig-1.9-16.el7.x86_64.rpm

#rpm-qavconfig

(3)创建vlan插口

创建vlan插口前,在设备上添加一块网卡ens34,

网路配置如下图:

注意:

将BOOTPROTO=static

基于网卡ens34构建vlan10linux 网卡虚拟化命令,vlan20插口:ens34.10,ens34.20:

#vconfigaddens3410

#vconfigaddens3420

#cd/etc/sysconfig/network-scripts/

linux 网卡虚拟化命令_linux虚拟机网卡怎么设置_linux虚拟网卡mac地址

#cpifcfg-ens34ifcfg-ens34.10--创建ens33.10插口配置文件

编辑ifcfg-ens34.10文件linux命令ls,降低/更改下边内容:

#vimifcfg-ens34.10

VLAN=yes

TYPE=vlan

PHYSDEV=ens34

VLAN_ID=10

NAME=ens34.10

ONBOOT=yes

ZONE=trusted

DEVICE=ens34.10

BRIDGE=brvlan-10

#cpifcfg-ens34.10ifcfg-ens34.20

编辑ifcfg-ens34.20文件,降低/更改下边内容:

#vimifcfg-ens34.20

VLAN=yes

TYPE=vlan

PHYSDEV=ens34

VLAN_ID=20

NAME=ens34.20

ONBOOT=yes

ZONE=trusted

DEVICE=ens34.20

BRIDGE=brvlan-20

(4)分别构建集线器brvlan-10,brvlan-20

#brctladdbrbrvlan-10

#brctladdbrbrvlan-20

(5)编辑集线器brvlan-10配置文件:

#vimifcfg-brvlan-10

TYPE=bridge

BOOTPROTO=static

NAME=brvlan-10

linux虚拟机网卡怎么设置_linux虚拟网卡mac地址_linux 网卡虚拟化命令

DEVICE=brvlan-10

ONBOOT=yes

编辑集线器brvlan-20配置文件:

#vimifcfg-brvlan-20

TYPE=bridge

BOOTPROTO=static

NAME=brvlan-20

DEVICE=brvlan-20

ONBOOT=yes

(6)将集线器brvlan-10接到网口ens34.10,brvlan-20接到网口ens34.20

#brctladdifbrvlan-10ens34.10

#brctladdifbrvlan-20ens34.20

(7)重新启动网路服务

#systemctlrestartnetwork

五、Vlan模式测试虚机

先将NetworkManager服务关掉

(1)在宿主机中早已提早创建好了虚机VM1

在virt-manager上将VM1的虚拟网卡挂到brvlan-10上

(2)从VM1克隆一台虚机VM2

virst-clone-ovm1-nvm2-f/var/lib/libvirt/images/vm2.qcow2

(3)启动VM1和VM2,并配置ip

(4)查看Bridge,发觉brvlan10早已联接了vnet0vnet1设备。

六、网卡配置bond(绑定)

(1)网卡bond(绑定),也叫做网卡捆绑。就是将两个或则更多的化学网卡绑定成一个虚拟网卡。网卡是通过把多张网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡,在应用布署中是一种常用的技术。

多网卡绑定实际上须要提供一个额外的软件的bond驱动程序实现。通过驱动程序可以将多块网卡屏蔽。对TCP/IP合同层只存在一个Bond网卡,在Bond程序中实现网路流量的负载均衡,将要一个网路恳求重定位到不同的网卡上,来提升总体网路的可用性。

(2)网卡绑定的目的:

1.提升网卡的吞吐量。

2.提高网路的高可用,同时也能实现负载均衡。

(3)网卡配置bond(绑定)bond模式:

1、Mode=0(balance-rr)表示负载分担round-robin,平衡协程策略,具有负载平衡和容错功能

bond的网卡MAC为当前活动的网卡的MAC地址,须要交换机设置聚合模式,将多个网卡绑定为一条链路。

2、Mode=1(active-backup)表示主备模式,具有容错功能,只有一块网卡是active,另外一块是备的standby,这时假若交换机配的是捆绑,将不能正常工作,由于交换机往两块网卡分包,有一半包是遗弃的。

3、Mode=2(balance-xor)表示XORHash负载分担(异或平衡策略),具有负载平衡和容错功能

每位slave插口传输每位数据包和交换机的聚合强制不协商形式配合。(须要xmit_hash_policy)。

4、Mode=3(broadcast)表示所有包从所有interface发出,广播策略,具有容错能力,这个不均衡,只有冗余机制...和交换机的聚合强制不协商形式配合。

5、Mode=4(802.3ad)表示支持802.3ad合同(IEEE802.3ad动态链接聚合)和交换机的聚合LACP方法配合(须要xmit_hash_policy)。

6、Mode=5(balance-tlb)适配器传输负载均衡,并行发送,难以并行接收,解决了数据发送的困局。是按照每位slave的负载情况选择slave进行发送,接收时使用当后轮到的slave。

7、Mode=6(balance-alb)在5的tlb基础上降低了rlb。适配器负载均衡模式并行发送,并行接收数据包。

5和6不须要交换机端的设置,网卡能手动聚合。4须要支持802.3ad。0,2和3理论上须要静态聚合方法,但实测中0可以通过mac地址误导的形式在交换机不设置的情况下不太均衡地进行接收。

常用的有三种:

mode=0:平衡负载模式,有手动备援,但须要”Switch”支援及设定。

mode=1:手动备援模式,其中一条线若断线,其他线路将会手动备援。

mode=6:平衡负载模式,有手动备援,何必”Switch”支援及设定。

(4)网卡配置bond(绑定)

1、eth1,eth2,eth3都配置绑定为bond0linux设置环境变量,比如:

#catifcfg-eth1

TYPE=Ethernet

BOOTPROTO=none

DEVICE=eth1

ONBOOT=yes

MASTER=bond0

SLAVE=yes

载入bond模块:

#modprobebonding

2、查看bond0,并桥接到br1

#catifcfg-bond0

DEVICE=bond0

TYPE=Bond

NAME=bond0

BONDING_MASTER=yes

BOOTPROTO=static

USERCTL=no

ONBOOT=yes

#IPADDR=192.168.10.10

#PREFIX=24

#GATEWAY=192.168.10.19

BONDING_OPTS="mode=6miimon=100"

BRIDGE=br1

3、查看集线器br0

catifcfg-br1

TYPE=Bridge

DEVICE=br1

ONBOOT=yes

IPADDR=192.168.10.1

IPADDR1=192.168.20.1

IPADDR2=192.168.30.1

IPADDR3=192.168.40.1

IPADDR4=192.168.50.1

PREFIX3=24

PREFIX4=24

#GATEWAY=172.16.0.1

#DNS1=172.16.254.251

#DNS2=223.5.5.5

4、重启系统

查看网卡信息:

#ethtoolbond0

七、网卡配置bond+vlan实践

(1)创建bond0,并创建配置文件

(2)将bond0桥接到br1,并创建br1配置文件,重启网路服务

(3)在br1上,创建虚拟vlan网口:br1.10,br1.20,并创建配置文件

(4)创建brvlan-10,brvlan-10,并创建配置文件

(5)将集线器与虚拟vlan网口联接

brctladdifbrvlan-10br1.10

brctladdifbrvlan-20br1.20

(6)重启网路服务

本文原创地址:https://www.linuxprobe.com/lwqwqglwlxnh.html编辑:刘遄,审核员:暂无