Linux高级网络控制(桥接,bond,team)

1.网络桥接的管理

网络桥接的介绍
1.在windows中,网络桥接用网络桥实现共享上网主机和客户机除了利用软件外,还可以用XP自带的网络桥建立连接用双网卡的机器做主机,在主机桌面,鼠标右击"网上邻居"出现快捷菜单,左击快捷菜单中的"属性",出现"网络连接"窗口,按住"Ctrl"键不放,鼠标依次左击两网卡图标选中两网卡。按住"Ctrl"键不放,再点击鼠标右键弹出快捷菜单,鼠标左键点击快捷菜单中的"桥接"选项,此时系统提示"Windows正在桥接连接,请等…“的提示,稍后出现"网络桥MAC桥微型端口"的图标,则表示网桥已经连接成功。
2.客户机的网卡和主机用反线连接,完成以上步骤,两台机器可以同时上网,互不干扰 什么是网桥?
3.网桥工作在数据链路层,将两个LAN连起来,根据MAC地址来转发帧,可以看作一个"低层的路由器”(路由器工作在网络层,根据网络地址如IP地址进行转发)。
4.远程网桥通过一个通常较慢的链路(如电话线)连接两个远程LAN,对本地网桥而言,性能比较重要,而对远程网桥而言,在长距离上可正常运行是更重要的;网桥与路由器的比较网桥并不了解其转发帧中高层协议的信息,这使它可以同时以同种方式处理IP、IPX等协议,它还提供了将无路由协议的网络(如NetBEUI)分段的功能。由于路由器处理网络层的数据,因此它们更容易互连不同的数据链路层,如令牌环网段和以太网段。网桥通常比路由器难控制。象IP等协议有复杂的路由协议,使网管易于管理路由;IP等协议还提供了较多的网络如何分段的信息(即使其地址也提供了此类信息)。而网桥则只用MAC地址和物理拓扑进行工作。因此网桥一般适于小型较简单的网络。
5. 在网络的使用中,有时需要搭建网络桥来实现网络桥接。例如在一台主机上制作一台虚拟机,虚拟机是没有物理网卡的,这时虚拟机数据的发送和接收就需要通过主机上的物理网卡,需要主机的内核来处理这些问题,这无疑增加了主机内核的负担,也延长了虚拟机的反应速度,如果搭建网络桥,使得虚拟机的内核可以在一定程度上使用主机的物理网卡,就可以解决这个问题。

6. 基本命令:

brctl ##桥接管理命令
show ##显示
addbr ##添加网络
delbr ##删除网络
addif ##添加网桥连接
delid ##删除网桥连接

2.bond网络

(1)bond网络:Red Hat Enterprise Linux 允许管理员使用bonding内核模块和称为通道绑定的特殊网络接口将多个网络接口绑定到一个通道。根据选择的绑定模式,通道绑定使两个或更多个
(2)bond是将多块网卡虚拟链接成一块网卡的技术,通过bond技术让多块网卡看起来是一个单独的以太网接口设备并具有相同的ip地址。
(3) 在linux下配置bond,通过网卡绑定技术既能增加服务器的可靠性,又增加了可用网络宽带,为用户提供不间断的网络服务,实现主备功能。
(4)bond默认情况下支持两块网卡工作。
(5)选择Linux以太网绑定模式
<1>模式0(平衡轮循)-伦循策略,所有接口都使用采用轮循方式在所有Slave中传输封包;任何Slave都可以接收
<2>模式1(主动备份)-容错。一次只能使用一个Slave接口,但是如果该接口出现故障,另一个Slave将接替它
<3>模式3(广播)-容错。所有封包都通过所有Slave接口广播

实验:
(3)bond的主备模式(保证网络不会中断):

-1-先增加两个网卡

[[email protected] ~]# virt-manager

进入虚拟界面管理后,点击图中的小灯泡,创建两个网卡,如图所示:
在这里插入图片描述
在这里插入图片描述
利用ifconfig查看,保持所有的环境都是最纯净的情况

[[email protected] ~]# ifconfig

在这里插入图片描述
-2-建立一个链路区接口

[[email protected] ~]# nmcli connection add con-name bond0 ifname bond0 type bond mode active-backup ip4 172.25.254.128/24

在这里插入图片描述
注意:
<1>balance-rr:增加所使用的工作效率
<2>ative-backup:一个工作,另外一个闲置
-3-查看接口的状态

[[email protected] ~]# watch -n1 cat /proc/net/bonding/bond0

在这里插入图片描述

注意:只有建立了bond,才有这个文件/proc/net/bonding/bond0
-4-新建两个不同的物理硬件

[[email protected] ~]# nmcli connection add con-name eth0 ifname eth0 type bond-slave master bond0
[[email protected] ~]# nmcli connection add con-name eth1 ifname eth1 type bond-slave master bond0

在这里插入图片描述
注意:
bond-slave辅助的硬件
-5-再开启一个shell,连接同一网关内的任意ip,发现可以连接

[[email protected] ~]# ping 172.25.254.66

在这里插入图片描述
-6-如果eth0突然坏掉,会看到备份eth1会替代eth0的继续工作,此时查看连接ip的shell会发现连接不会中断

[[email protected] ~]# ifconfig eth0 down

在这里插入图片描述
在这里插入图片描述
-7-当再次开启eth0后,会发现此时eth0作为作为备份,此时查看连接ip的shell会发现连接不会中断

[[email protected] ~]# ifconfig eth0 up

在这里插入图片描述
在这里插入图片描述
-8-将eth0手动模拟坏掉,会看到eth0代替eth1继续工作,此时eth1的状态为down,此时查看连接ip的shell会发现连接不会中断

[[email protected] ~]# ifconfig eth1 down

在这里插入图片描述
在这里插入图片描述
总结:如果不知道网卡什么时候会坏,解决的思路是将两块网卡连接起来,解决的方法是使两个设备为同一个ip工作。这里利用主备模式,主备模式就是如果一个网卡坏了,另外一个网卡代替那个网卡继续工作,保证网络不会中断。
补充:[[email protected] ~]# nmcli device show ##显示设备的相关属性
在这里插入图片描述

3.通过nmcli设定team

(1)team和bond0功能类似,但是team不需要手动加载相应内核模块,而且team相对于bond来说具有更强的扩展性,原因在于team可以负载均衡(通过比较负载,来选择哪个网卡执行)
(2)team的种类有以下几种:
broadcast 广播
roundobin 平衡轮叫
activebackup 主备
loadbalance 负载均衡

实验
(3)通过nmcli设定team的主备模式

-1-删除掉之前建立的bond及其网卡,并查看其是否环境纯净

[[email protected] ~]# nmcli connection show   
[[email protected] ~]# nmcli connection delete eth0
[[email protected] ~]# nmcli connection delete eth1
[[email protected] ~]# nmcli connection delete bond0
[[email protected] ~]# nmcli connection show

在这里插入图片描述
-2-建立team0的主备模式并查看

[email protected] ~]# nmcli connection add con-name team0 ifname team0 type team config '{"runner":{"name":"activebackup"}}' ip4 172.25.254.99/24
ifconfig
[[email protected] ~]# ifconfig

在这里插入图片描述
注意:当链区建立有误时,需要的手动或使用命令将其关掉,因为虽然建立的有误,可是会成功建立
-3-监控team0的主备模式的实时变化情况

[[email protected] ~]# watch -n1 teamdctl team0 stat

在这里插入图片描述
-4-建立两个物理网卡

[[email protected] ~]# nmcli connection add con-name eth0 ifname eth0 type team-slave master team0
[[email protected] ~]# nmcli connection add con-name eth1 ifname eth1 type team-slave master team0

在这里插入图片描述
-5-再开启一个shell,连接同一网关内的任意ip,发现可以连接

[[email protected] ~]# ping 172.25.254.66

在这里插入图片描述
-6-如果eth0突然坏掉,会看到备份eth1会替代eth0的继续工作,此时查看连接ip的shell会发现连接不会中断

[[email protected] ~]# ifconfig eth0 down

在这里插入图片描述
在这里插入图片描述
-7-当再次开启eth0后,会发现此时eth0作为作为备份,此时查看连接ip的shell会发现连接不会中断

[[email protected] ~]# ifconfig eth0 up

在这里插入图片描述
在这里插入图片描述
-8-将eth0手动模拟坏掉,会看到eth0代替eth1继续工作,此时eth1的状态为down,此时查看连接ip的shell会发现连接不会中断

[[email protected] ~]# ifconfig eth1 down

在这里插入图片描述
-9-如果两个网卡同时挂掉,则无法连接网络,重新开启网卡既可

[[email protected] ~]# ifconfig eth1 down
[[email protected] ~]# ifconfig eth0 down

在这里插入图片描述
-10-练习完毕后,最好将team的相关设置删除,避免影响后面的操作

[[email protected] ~]# nmcli connection delete eth0
[[email protected] ~]# nmcli connection delete eth1
[[email protected] ~]# nmcli connection delete team0
[[email protected] ~]# nmcli connection show

在这里插入图片描述
补充:
虽然链区建立有误,但是需要的手动或使用命令将其关掉,因为虽然建立的有误,可是会成功建立
-1-输入错误的建立链区的命令,发现可以创建成功

[[email protected] ~]# nmcli connection add con-name team0 ifname team0 type team config '{"runner":{"name":"activeackup"}}' ip4 172.25.254.99/24

在这里插入图片描述
-2-利用ifconfig无法查看到team0

[[email protected] ~]# ifconfig

在这里插入图片描述
-3-删除方法1,直接手动将其删除,选中team0,点击delete既可

[[email protected] ~]# nm-connection-editor

在这里插入图片描述
-4-删除方法2,使用命令将其删除

[[email protected] ~]# nmcli connection delete team0 
[[email protected] ~]# nmcli connection show

在这里插入图片描述

4.在真机中搭建桥接:

<1>首先将文件备份到/mnt,避免因操作不当受到影响

[[email protected] ~]# cd /etc/sysconfig/network-scripts
[[email protected] network-scripts]# cp ifcfg-br0 ifcfg-enp0s25 /mnt/

<2>在真机中试图安装虚拟机的网络,会发现没有桥接接口
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:也可以将disk大小设置为8G
在这里插入图片描述
<3>安装后,按虚拟机中的Send Key的Ctrl+F2+Alt,便可以进入文本模式,输入ping命令和ifconfig命令进行查看
在这里插入图片描述
<4>切换到网卡工作目录进行网络配置文件

[[email protected] ~]# cd /etc/sysconfig/network-scripts/
[[email protected] network-scripts]# ls
[[email protected] network-scripts]# vim ifcfg-westos
BOOTPROTO=none
NAME=westos
DEVICE=enp0s25
ONBOOT=yes
BRIDGE=br0
[[email protected] network-scripts]# vim ifcfg-br0
DEVICE=br0
IPADDR=172.25.254.28
PREFIX=24
ONBOOT=yes
BOOTPR0T0=none
TYPE=Bridge

<5>试图在没有桥接的网络环境下打开虚拟机

[[email protected] network-scripts]# rht-vmctl start desktop

出现报错的界面:
在这里插入图片描述
原因是因为虚拟机中的网络方式是桥接方式:
在这里插入图片描述
<6>关闭记录网络配置日志的,因为从新配置桥接时,可能会与旧的桥接配置有冲突,故进行关闭

[[email protected] network-scripts]# systemctl stop NetworkManager	
[[email protected] network-scripts]# systemctl restart network

<7>测试桥接是否搭建好,再重新创建新的虚拟机网络并进行ping命令以及ifconfig命令进行查看,并对其物理设备进行查看
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

[[email protected] network-scripts]# brctl show

在这里插入图片描述
分析:
在搭建好桥接后,再新建虚拟机网络后会发现比没有搭建网桥时连接的更快一些。
<8>测试完成后,删除桥接接口:

[[email protected] network-scripts]# vim ifcfg-westos
BOOTPROTO=none
DEVICE=enp0s25
ONBOOT=yes
PREFIX=24
IPADDR=172.25.254.28    
[[email protected] network-scripts]# systemctl restart network
[[email protected] network-scripts]# rm -rf ifcfg-eth0
[[email protected] network-scripts]# reboot

<9>重启之后进行查看,会发现物理设备中没有桥接接口

[[email protected] ~]# brctl show
[[email protected] ~]# ifconfig		##查看此时的ip

<10>因为以后的实验可能需要两个桥接交口,所以进行以下操作进行还原:

[[email protected] ~]# cd /etc/sysconfig/network-scripts
[[email protected] ~]# rm -rf ifcfg-westos
[[email protected] ~]# cp /mnt/ifcfg-* .
[[email protected] ~]# reboot

分析:
1.每台主机的设备都不同,需要利用ifconfig进行查看
2.br0插在真实网卡设备中说明生效
3.NAT是net address tranfer网络地址转换(源地址转换),将不合法的地址包装起来
4.在同一个网段下,不需要进行网关的转接,不能在同一个网络区域的主机,使其处在同一网段中
5.内核是系统的核心程序,和硬件没关系,每个操作系统中都有一个独立的内核
6.真实主机的负载变高,虚拟机的速度也会慢,需要内核进行数据转换
7.网桥,让真实的主机和虚拟机之间可以直接通过网卡连接接口,之间的网络通过网桥连接,使虚拟机的内核直接连接真实主机的网卡
8.设定桥接接口(br0)的区别:比如安装虚拟机时有桥接和没有桥接时连接网络时延时不同(通信速度快)

5.设置桥接的接口

前提:使网络环境纯净,不影响接下来的操作
(1)添加桥接接口
-1-查看桥接

[[email protected]_sshd ~]# brctl show

在这里插入图片描述
-2-添加临时桥接接口

[[email protected]_sshd ~]# brctl addbr br0

在这里插入图片描述
-3-查看临时桥接接口是否成功添加,发现成功添加

[[email protected]_sshd ~]# brctl show

在这里插入图片描述
-4-给临时桥接接口设置ip

[[email protected]_sshd ~]# ifconfig br0 172.25.254.199/24

在这里插入图片描述
-5-利用ifconfig命令查看其br0的ip等网络配置是否设置成功

[[email protected]_sshd ~]# ifconfig

在这里插入图片描述
-6-查看桥接并连接同一网段上的ip,会出现报错,因为没添加物理网卡

[[email protected]_sshd ~]# brctl show
[[email protected]_sshd ~]# ping 172.25.254.66

在这里插入图片描述
-7-给临时桥接接口添加物理网卡并查看桥接配置是否成功

[[email protected]_sshd ~]# brctl addif br0 eth0
[[email protected]_sshd ~]# brctl show

在这里插入图片描述
-9-再次连接同意网段上的ip,成功连接

[[email protected]_sshd ~]# ping 172.25.254.28

在这里插入图片描述
-10-重启

[[email protected]_sshd ~]# reboot

-11-重启之后查看桥接,发现没有桥接接口,说明建立的是临时的

[[email protected]_sshd ~]# brctl show

在这里插入图片描述
(2)删除桥接接口
-1-首先设置桥接的接口,具体的步骤如上所示,测试结果如下所示

[[email protected]_sshd ~]# brctl show
[[email protected]_sshd ~]# ping 172.25.254.66

在这里插入图片描述
-2-利用ifconfig检查br0是否设置成功,发现设置成功
[[email protected]_sshd ~]# ifconfig
-3-删除物理网卡并查看桥接,会发现物理网卡没有了

[[email protected]_sshd ~]# brctl delif br0 eth0
[[email protected]_sshd ~]# brctl show

在这里插入图片描述
-4-如果直接关闭临时桥接接口br0,会发现出现报错

[[email protected]_sshd ~]# brctl delbr br0

在这里插入图片描述
-5-此时应该先将临时桥接接口br0关闭,然后再进行删除

[[email protected]_sshd ~]# ifconfig br0 down
[[email protected]_sshd ~]# brctl delbr br0

在这里插入图片描述
-6-查看桥接,发现没有任何桥接接口

[[email protected]_sshd ~]# brctl show

在这里插入图片描述
-7-利用ifconfig查看网络配置,会发现也没有任何桥接接口

[[email protected]_sshd ~]# sysconfig

在这里插入图片描述