在我们的生产环境中,我们很难估计硬件网络设备什么时候会损坏无法正常工作。但是网卡一旦损坏,就会影响客户终端对服务端的访问,导致客户的损失,从而造成生产环境当中的事故。
那么在现实的生产环境中我们怎么能够避免这样的企业事故呢,这就是我这篇博客想要介绍的Linux的高级网络配置:
1.网络桥接
网络桥接用网络桥实现共享上网主机和客户机除了利用软件外,还可以用系统自带的网络桥建立连接用双网卡的机器作主机
这句话可能不太好理解,跟着看接下来的实验,就可以慢慢理解了。桥接要区别默认的NAT服务,桥接可以降低负载提高效率。
在我们的企业中,大多数生产环境都是虚拟化的,我们之前也介绍过,虚拟化的作用是让企业保证生产的同时,可以有效的节约功耗,以及节省硬件成本。
简述一下NAT和网桥的区别:NAT实际上相当于虚拟主机将数据流传至网络服务的主机内,再由网络服务器的主机内核管理,将虚拟主机传来的数据流向外传至服务端;而网桥实际上则是网络服务器的内核开启一个接口来管理这样一个网桥,然后虚拟主机将数据流通过网桥直接传输到服务端。
而桥接对于虚拟化的作用是:有桥接比没有桥接更快,因为不需要网关来作数据转换。
下面我们进行实验:
为了保证我们在实验的环境中不会因为手残而导致真机网络崩掉,我们首先需要备份原有的网络配置文件:
[root@fountion68 ~]# cd /etc/sysconfig/network-scripts/ ##切换到网络配置目录
[root@fountion68 network-scripts]# cp ifcfg-br0 ifcfg-enp3s0 /mn/ ##备份网络配置文件
打开图形化网络配置界面,删除所有缓存的网络记录:
nm-connection-editor ##打开图形化网络配置界面
重新编辑我们要配置的网桥文件:
[root@fountion68 network-scripts]# vim ifcfg-enp3s0
BOOTPROTO=none
NAME=enp3s0
DEVICE=enp3s0 ##电脑的网卡是什么就用什么
ONBOOT=yes
BRIDGE=br0 ##网桥为br0 要对应网桥配置中的br0
[root@fountion68 network-scripts]# vim br0
DEVICE=br0 ##设备为br0
IPADDR=172.25.254.68 ##配置网桥的IP
PREFIX=24
ONBOOT=yes
BOOTPROTO=none
TYPE=Bridge ##一定要说明网络类型,否则会默认为以太网
关闭网络控制组件,重启网络
[root@fountion68 network-scripts]# systemctl stop NetworkManager
[root@fountion68 network-scripts]# systemctl restart network
查看网桥设备:
[root@fountion68 network-scripts]# brctl show
编辑网络配置文件:
查看网卡 可以看到我们之前建立的网桥
将备份到/mnt下的网络配置文件恢复到源目录中,重启网络控制组件和网络服务,可以看到网桥即恢复原来的配置
需要注意的是,删除网桥配置文件时,网桥的记录还在,需要重启系统来清楚记录。
命令管理临时桥接
brctl show ##查看网络桥接
brctl addbr br0 ##新建网络桥接
ifconfig br0 172.25.68.100/24 ##给网络桥接添加临时IP
brctl addif br0 eth0 ##给桥接插入网卡硬件设备
brctl delif br0 eth0 ##从网桥上面卸载硬件设备eth0
ifconfig br0 down ##关闭网桥
brctl delbr br0 ##删除网桥br0
我们新建网桥设备br0,给br0添加临时IP。
可以查看到br0,但是我们可以看到不能ping通同一网段其他主机的IP。我们给网桥插入硬件设备就可以正常ping通。
删除临时网桥设备时,我们需要先把硬件设备从网桥中卸载下来,此时网桥状态依然存在,接下来我们关闭网桥br0
最后,再删除网桥br0,至此,我们创建的临时网桥就可以被彻底的移除了。
2.bond网络接口
链路聚合的概念:
指将多个物理端口汇聚在一起,形成一个逻辑端口。通俗地说就是将多个网卡为同一个端口工作,以达到解决负载和网卡设备故障等问题。
bond网络: Red Hat Enterprise Linux 允许管理员使用bonding内核模块和称为通道绑定接口的特殊网络接口将多个网络接口绑定到一个通道。根据选择的绑定模式,通道绑定使两个或多个网络接口作为一个网络接口,从而增加带宽和或者提供冗余性。
以太网的绑定模式主要介绍三种:
模式0(平衡轮询)——轮询策略,所有的接口都采用轮询的方式在所有的Slave中传输封包;任何Slave都可以接收
模式1(主动备份)——容错,一次只能使用一个Slave接口。如果该接口出现故障,另一个Slave将接替它继续工作
模式3(广播)——容错,所有封包都通过所有的Slave接口广播
1)实验环境:
主服务器:配置双网卡,并设置静态IP
测试服务器:具有一个网卡并拥有可以ping通主服务器的IP
2)为了不影响实验结果,我们删除与哪来的实验配置
方法1:
cd /etc/sysconfig/network-scripts/ ##打开网络配置文件夹
rm -f ifcfg-eth0 ##删除原有的网卡网络配置
systemctl restart network ##重启网络
方法2:
nm-connection-editor ##打开图形化网络配置界面 之间删除原有的网络
3)建立bond接口 并为bond添加硬件网卡设备
nmcli connection add con-name bond0 ifname bond0 type bond mode active-backup ip4 197.25.68.200/24 ##建立bond网络接口,模式为active-backup(主备模式)
注意:在建立好之后我们会出现一个文件: /proc/net/bonding/bond0
我们监视这个文件,可以看到bond下连接的具体情况:
watch -n1 cat /proc/net/bonding/bond0 ##监视该文件 即监视bond0的运行状况
此时,我们可以用测试机ping一下我们配置的服务器 可以发现即使他们在统一网段 理论上可以ping通 但是实际上却是不通的
这是因为我们没有添加物理硬件设备
我们给bond端口添加网卡进行测试 可以ping通
nmcli connection add con-name eth0 ifname eth0 type bond-slave master bond0
nmcli connection add con-name eth1 ifname eth1 type bond-slave master bond0
##分别将网卡eth0和eth1添加到bond0上
再次测试,发现可以ping通
4)在另一台主机上进行测试
我们为服务端添加两块网卡 并都添加到bond0 上
我们用客户端ping服务端 可以ping通
同时我们关闭客户端的网卡eth0 可以看到 网络并没有中断 而是eth1接替了eth0继续工作
5)删除bond接口:
nmcli connection delete bond0 ##删除bond0接口
nmcli connection delete eth0 ##删除网卡eth0
nmcli connection delete eth1 ##删除网卡eth1
3.team网络接口
Team和bond0功能类似,但是Team不需要手动加载相应内核模块,有更强的拓展性,支持8块网卡
1)Team的种类:
broadcast 广播容错
roundrobin 平衡轮叫
activebackup 主备
loadbalance 负载均衡
2)建立team 连接
nmcli connection add con-name team0 ifname team0 type team config '{"runner:":{"name":"activebackup"}}' ip4 172.25.68.200/24 ##建立一个ip为172.25.68.200的team接口team0
nmcli connection add con-name eth0 ifname eth0 type team-slave master team0
nmcli connection add con-name eth1 ifname eth1 type team-slave master team0
##给team0 添加网卡eth0和eth1
watch -n1 teamdctl team0 stat ##team监控命令
关闭网卡测试 可以看到 在网络保持连通的情况下 eth1也会接替eth0工作
3)删除Team
nmcli connection delete team0 ##删除team0
nmcli connection delete eth0
nmcli connection delete eth1 ##删除team0 上的硬件设备