一、网络桥接
1、NAT网络配置
[root@foundation5 ~]# cd /etc/sysconfig/network-scripts/
[root@foundation5 network-scripts]# mv ifcfg-br0 ifcfg-enp0s25 /mnt/ ##将原网卡、桥接文件备份
[root@foundation5 network-scripts]# vim ifcfg-enp0s25 ##网卡配置
DEVICE=enp0s25
ONBOOT=yes
BOOTPROTO=none
IPADDR=172.25.254.5
PREFIX=24
示图:NAT网络配置结果
测试:
若选择建立虚拟机,此时可查看虚拟网络配置为NAT模式
示图:
<1>选择从网络安装操作系统
<2>选择操作系统安装镜像源
<3>默认选项
<4>可查看虚拟网络配置为NAT模式
2、桥接配置
网络桥接用网络桥实现共享上网,主机和客户机除了利用软件外,还可以用系统自带的网络桥建立连接用双网卡的机器做主机.
(1)网卡开启br0桥接接口
[root@foundation5 ~]# vim /etc/sysconfig/network-scripts/ifcfg-enp0s25
DEVICE=enp0s25
ONBOOT=yes
BOOTPROTO=none
BRIDGE=br0 ##控制设备的网卡enp0s25开启br0接口
(2)br0接口配置
[root@foundation5 network-scripts]# vim ifcfg-br0
DEVICE=br0
ONBOOT=yes
BOOTPROTO=none
IPADDR=172.25.254.5
NETMASK=255.255.255.0
TYPE=Bridge ##类型:桥接,如果不写此项,默认以太网Ethernet
(3)重新开启网络
设置成功后重启网络,如果设置无误,但服务启动不成功时,可以尝试reboot.
[root@foundation5 network-scripts]# systemctl restart network
(4)查看桥接
[root@foundation5 network-scripts]# brctl show
测试:若选择建立虚拟机,此时可查看虚拟网络配置出现桥接模式
注意:
(1)此实验可删除ifcfg-br0、ifcfg-enp0s25、ifcfg-lo外,所有以ifcfg-开头的文件.
(2)桥接:处于同一网段,网络快;NAT:不在同一网段,地址转换,网络慢.
(3)br0必须桥接在真实的网卡上.
3、系统还原
[root@foundation5 network-scripts]# rm -fr ifcfg-br0 ifcfg-enp0s25
[root@foundation5 network-scripts]# mv /mnt/ifcfg-* .
4、网络桥接的管理命令
• brctl - ethernet bridge administration
– show # 显示
– addbr # 添加网桥
– delbr # 删除网桥
– addif # 添加网桥连接
– delif # 删除网桥连接
示例一:网卡的桥接—命令
[root@foundation105 Desktop]# brctl show
bridge name bridge id STP enabled interfaces
[root@foundation105 Desktop]# brctl addbr br0 ##添加网桥br0
[root@foundation105 Desktop]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000000000000 no
[root@foundation105 Desktop]# ifconfig br0 172.25.254.105/24 ##分配给网桥br0的ip地址
测试:此时网络无法ping通(原因:br0并未桥接到网卡的接口)
[root@foundation105 Desktop]# brctl addif br0 eth0 ##br桥接到网卡eth0的接口
[root@foundation105 Desktop]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.52540000050a no eth0
测试:此时可以ping通
示例二:桥接的删除—命令
[root@foundation105 Desktop]# brctl delif br0 eth0 ##将网桥从网卡eth0上解除
[root@foundation105 Desktop]# ifconfig br0 down ##关掉此时正在工作的br0
[root@foundation105 Desktop]# brctl show ##br0未桥接到网卡的接口
bridge name bridge id STP enabled interfaces
br0 8000.000000000000 no
[root@foundation105 Desktop]# brctl delbr br0 ##删除桥接br0
[root@foundation105 Desktop]# brctl show
二、bond网卡绑定
原理:
- 多块网卡虚拟成一张,实现冗余;多张网卡对外显示一张,具有同一个IP;
- 工作在网卡是混杂模式的情况下;
- 对于多物理网卡的 Bond 网卡而言,其中一块物理网卡会被设置为 Master,其他的网卡都是 Slave,Bond 网卡的 MAC 地址取自标志为 Master 的物理网卡,然后将这个 MAC 地址复制到其他物理网卡上;
网卡绑定模式:
Linux网卡绑定mode共有七种(0~6) bond0、bond1、bond2、bond3、bond4、bond5、bond6
常用的三种模式说明:
第一种模式: mod=0 ,即:(balance-rr) Round-robin policy(平衡抡循环策略)
特点: 传输数据包顺序是依次传输(即:第1个包走eth0,下一个包就走eth1….一直循环下去,直到最后一个传输完毕),此模式提供负载平衡和容错能力;但是我们知道如果一个连接或者会话的数据包从不同的接口发出的话,中途再经过不同的链路,在客户端很有可能会出现数据包无序到达的问题,而无序到达的数据包需要重新要求被发送,这样网络的吞吐量就会下降。该模式下,由于两块以上网卡都正常工作,它能提供两倍以上的带宽,在这种情况下出现一块网卡失效,仅仅会是服务器出口带宽下降,也不会影响网络使用。
第二种模式: mod=1,即: (active-backup) Active-backup policy(主-备份策略)
特点: 只有一个设备处于活动状态,当一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得,从外面看来,bond的MAC地址是唯一的,以避免switch(交换机)发生混乱。此模式只提供了容错能力;由此可见此算法的优点是可以提供高网络连接的可用性,但是它的资源利用率较低,只有一个接口处于工作状态,在有 N 个网络接口的情况下,资源利用率为1/N
第四种模式: mod=3,即:broadcast(广播策略)
特点: 在每个slave接口上传输每个数据包,此模式提供了容错能力
1、bond的网络配置—nmcli命令
<1>添加网卡(此时有两块网卡)
<2>删除网卡配置文件
[root@localhost Desktop]# nmcli connection delete eth0
<3>启动网络管理器
[root@localhost Desktop]# systemctl start NetworkManager
<4>选择工作方式——主备
[root@localhost Desktop]# nmcli connection add con-name bond0 ifname bond0 type bond mode ##Tab键补齐
802.3ad active-backup(主备) balance-alb balance-rr(轮询) balance-tlb balance-xor broadcast
[root@localhost Desktop]# nmcli connection add con-name bond0 ifname bond0 type bond mode active-backup ip4 172.25.254.105/24 ##主备工作方式
[root@localhost Desktop]# nmcli connection add con-name eth0 ifname eth0 type bond-slave master bond0
[root@localhost Desktop]# nmcli connection add con-name eth1 ifname eth1 type bond-slave master bond0
<5>破坏一个网卡
[root@localhost Desktop]# ifdown eth0 ##eth0网卡破损,eth1工作
<6>开启监控
[root@localhost Desktop]# watch -n 1 cat /proc/net/bonding/bond0
示图:
实验结果:eth0坏掉,eth1接替工作。
2、文件配置
• 建立绑定接口 bond0 配置文件
DEVICE=bond0
BONDING_OPTS=mode=active-backup #也可写为BONDING_OPTS=”mode=1 miimon=50”,miimon是用来进行链路检测的,miimon=50,那么 系统每50ms检测一次链路状态,如果有一条线路不通就转入另一条线路
TYPE=Bond
BONDING_MASTER=yes
BOOTPROTO=none
IPADDR0=172.25.254.125
PREFIX0=24
NAME=bond0
ONBOOT=yes
• 建立 Slave 接口 eth0 配置文件(eth1 配置文件与其相似)
TYPE=Ethernet
NAME=eth0
DEVICE=eth0
ONBOOT=yes
MASTER=bond0
SLAVE=yes
•配置系统加载 binding 模块 :
/etc/modprobe.d/bonding.conf
– alias bond0 bonding
3、删除配置
[root@localhost Desktop]# nmcli connection delete eth0
[root@localhost Desktop]# nmcli connection delete eth1
[root@localhost Desktop]# nmcli connection delete bond0
注意: 当network 服务重启成功后,这说明bond配置已经生效,bond0端口已经配置完成,可以cat /proc/net/bonding/bond0看bond0端口的状态信息.当执行service network restart重启失败时,首先得先检查是否配置正确。如果正确,那么在network重启之前,必须首先关掉NetworkManager服务
三、team网卡绑定
在 linux 中,Rhel7 之前都是使用 bond 机制来实现多网络绑定同一个 IP 地址,来对网络提供访问,并按不同的模式来负载均衡或者轮回接替管理处理数据。而 Rhel7 之后,提供了一种强大的工具, nmcli 工具命令,使用此工具,将会根据命令参数的配置来重新生成特定的配置文件来供网络接口使用,方便而又灵活。在 Rhel7中,不再使用 bond 机制定义,而是使用网路组 team 机制,把 team 组当作一个设备。
Team 接口
• Team 和 bond0 功能类似
• Team 不需要手动加载相应内核模块
• Team 有更强的拓展性 – 支持 8 块网卡
Team网络组的模式:
- broadcast(广播容错):每个网卡都传送数据包
- roundrobin(轮询):每个网卡轮询方式传送数据
- activebackup(主备):网卡之间有主备,主传送数据包,备的不传送,主网卡down了,备才传送
- loadbalance(负载均衡):监控流量并使用哈希函数,使得每个网卡传送的数据包达到相等
- lacp:需要借助交换机,实现高级的负载均衡
1、team网络接口配置—主备模式
<1>team网络接口配置
[root@localhost Desktop]# nmcli connection add type team con-name team0 ifname team0 config '{"runner":{"name":"activebackup"}}' ip4 172.25.254.105/24
[root@localhost Desktop]# nmcli connection add con-name eth1 type team-slave ifname eth1 master team0
[root@localhost Desktop]# nmcli connection add con-name eth0 type team-slave ifname eth0 master team0
<2>eth0破坏
[root@localhost Desktop]# ifconfig eth0 down
<3>开启监控
[root@localhost Desktop]# watch -n 1 teamdctl team0 stat
实验结果:
2、删除配置
[root@localhost Desktop]# nmcli connection delete team0
[root@localhost Desktop]# nmcli connection delete
eth0 eth1 help id path uuid
[root@localhost Desktop]# nmcli connection delete eth0
[root@localhost Desktop]# nmcli connection delete eth1
3、管理team网络组成员
nmcli device disconnect eth1 ##从team0中移除eth1
nmcli device connect eth1 ##从team0中增加eth1
nmcli connection down team0-port1 ##将team0组中的port1关闭
nmcli connection up team0-port1 ##将team0组中的port1开启