链路聚合
平衡轮循:传输速率块
主动备份:提高网卡稳定性
bond接口
bond最多支持两块网卡
1)进入虚拟机管理。给虚拟机添加网卡,确保虚拟机有两个网卡
2)删除所有网络接口
3)设定bond接口
watch -n 1 cat /proc/net/bonding/bond0 ##可用此命令监控以下操作
nmcli connection add con-name bond0 ifname bond0 type bond mode active -backup ip4 172.25.254.123/24
##创建一个bonding,设定bond主设备模式
#也可以写为nmcli connection add type bond con-name bond0 ifname bond0 mode active -backup ip4 172.25.254.123/24
#表示添加了一个名字叫bond0的bond,其使用的接口名字是bond0(ifname(interface的缩写))
nmcli connection add con-name eth0 ifname eth0 type bond-slave master bond0 ##添加网卡eth0到bond0接口
nmcli connection add con-name eth1 ifname eth1 type bond-slave master bond0 ##添加网卡eth1到bond0接口
nmcli connection show ##查看网卡接口信息
nmcli connection delete ##删除网卡接口
ifconfig eth0 down | up ##关闭|打开网卡
4)当关闭eth0网卡时会发现eth1会继续顶替eth0继续工作
5)当再次打开eth0网卡时eth0并不顶替eth1,而当关闭eth1时会发现eth0又顶替eth1继续工作
删除创建的bond
显示所有的网络模式和接口
nmcli con sh
#等效于nmcli connection show
去除bond中绑定的eth0网卡
nmcli con del eth0
nmcli con del eth1
删除bond绑定
nmcli con del bond0
team接口
team功能与bond类似,team最多支持八块网卡
1)与bond一样,确保虚拟机有两个网卡,然后删除所有网络接口
2)设定
watch -n 1 teamdctl team0 state ##监控
nmcli connection add con-name team0 ifname team0 type team config '{"runner":{"name":"activebackup"}}' ip4 172.25.254.114/24 ##建立team接口
nmcli connection add con-name eth0 ifname eth0 type team-slave master team0 ##往team0上添加eth0
nmcli connection add con-name eth1 ifname eth1 type team-slave master team0 ##往team0上添加eth1
此时可以ping通真机
3)与bond相同,关闭一个网卡,另一个顶替继续工作
删除创建的team
显示所有的网络模式和接口
nmcli con sh
去除bond中绑定的eth0网卡(bond和team模式不能同时使用,所以不会出现去掉bond模式上的eth0这种情况(不用指定))
nmcli con del eth0
nmcli con del eth1
team同理:
nmcli con del team0
桥接
2.1 桥接的概念
简单来说,桥接就是把一台机器上的若干个网络接口“连接”起来。其结果是,其中一个网口收到的报文会被复制给其他网口并发送出去。以使得网口之间的报文能够互相转发。
交换机就是这样一个设备,它有若干个网口,并且这些网口是桥接起来的。于是,与交换机相连的若干主机就能够通过交换机的报文转发而互相通信。
如:主机A发送的报文被送到交换机S1的eth0口,由于eth0与eth1、eth2桥接在一起,故而报文被复制到eth1和eth2,并且发送出 去,然后被主机B和交换机S2接收到。而S2又会将报文转发给主机C、D。
交换机在报文转发的过程中并不会篡改报文数据,只是做原样复制。然而桥接却并不是在物理层实现的,而是在数据链路层。交换机能够理解数据链路层的报文,所 以实际上桥接却又不是单纯的报文转发。
交换机会关心填写在报文的数据链路层头部中的Mac地址信息(包括源地址和目的地址),以便了解每个Mac地址所代表的主机都在什么位置(与本交换 机的哪 个网口相连)。在报文转发时,交换机就只需要向特定的网口转发即可,从而避免不必要的网络交互。这个就是交换机的“地址学习”。但是如果交换机遇到一个自 己未学习到的地址,就不会知道这个报文应该从哪个网口转发,则只好将报文转发给所有网口(接收报文的那个网口除外)。
比如主机C向主机A发送一个报文,报文来到了交换机S1的eth2网口上。假设S1刚刚启动,还没有学习到任何地址,则它会将报文转发给eth0 和 eth1。同时,S1会根据报文的源Mac地址,记录下“主机C是通过eth2网口接入的”。于是当主机A向C发送报文时,S1只需要将报文转发 到 eth2网口即可。而当主机D向C发送报文时,假设交换机S2将报文转发到了S1的eth2网口(实际上S2也多半会因为地址学习而不这么做),则 S1会 直接将报文丢弃而不做转发(因为主机C就是从eth2接入的)。
然而,网络拓扑不可能是永不改变的。假设我们将主机B和主机C换个位置,当主机C发出报文时(不管发给谁),交换机S1的eth1口收到报文,于是交换机 S1会更新其学习到的地址,将原来的“主机C是通过eth2网口接入的”改为“主机C是通过eth1网口接入的”。
但是如果主机C一直不发送报文呢?S1将一直认为“主机C是通过eth2网口接入的”,于是将其他主机发送给C的报文都从eth2转发出去,结果报 文就发 丢了。所以交换机的地址学习需要有超时策略。对于交换机S1来说,如果距离最后一次收到主机C的报文已经过去一定时间了(默认为5分钟),则S1需要忘 记 “主机C是通过eth2网口接入的”这件事情。这样一来,发往主机C的报文又会被转发到所有网口上去,而其中从eth1转发出去的报文将被主机C收 到。
2.2 linux的桥接实现
linux内核支持网口的桥接(目前只支持以太网接口)。但是与单纯的交换机不同,交换机只是一个二层设备,对于接收到的报文,要么转发、要么丢 弃。小型 的交换机里面只需要一块交换芯片即可,并不需要CPU。而运行着linux内核的机器本身就是一台主机,有可能就是网络报文的目的地。其收到的 报文除了转 发和丢弃,还可能被送到网络协议栈的上层(网络层),从而被自己消化。
linux内核是通过一个虚拟的网桥设备来实现桥接的。这个虚拟设备可以绑定若干个以太网接口设备,从而将它们桥接起来。
搭建网桥
在真机中的操作:
1)为了方便恢复原来网卡配置文件,先把/etc/sysconfig/network-scripts/中相关网卡配置文件移到/mnt/中
2)打开网络图形管理删除网络 只留下virbr0和virbr1
3)创建相关配置文件
创建网卡配置文件
systemctl restart network ##重启网络
3)可以看到br0和enp3s0生成
临时桥接搭建
1)删除虚拟机所有网络接口
2)搭建临时网桥
brctl addbr br0 ##建立br0
ifconfig br0 172.25.254.123/24
brctl addif br0 eth0
brctl show
删除临时网桥