一、应用场景
在机房建设时,服务器的网卡需要配置成bond4,可以使用我下面的配置文件和脚本来进行配置,简化配置流程。
bond4,即动态链路聚合,它可以将服务器上的两个物理网卡聚合为一个,两个网口逻辑成一个网口,配置一个ip地址,其中一个网口故障down掉,另一个网口仍然可以正常工作,起到一个冗余的作用,本文章只讲配置过程,大家可以搜索一下,深入学习一下链路聚合的知识。
服务器操作系统为:CentOS 7.9
CentOS 7.x应该是通用,其他LInux发行版可能需要进行调整,欢迎大家评论区交流学习。
二、详细配置
cat bond.sh
脚本中除了bond4配置外,还对服务器进行了一些简单的初始化操作,不需要可以注释掉
# 检查是否提供了 $1 参数if [ -z "$1" ]; then echo "错误: 你没有提供任何参数。" echo "用法: $0 <参数1>" exit 1fi# 获取并打印 $1 的值echo "IP is : $1"cd /mnt/bound# 将网卡配置文件备份,将新的配置文件移动到/etc/sysconfig/network-scripts/下ls /etc/sysconfig/network-scripts/echo "___________________________"mv /etc/sysconfig/network-scripts/ifcfg-ens13f0 /etc/sysconfig/network-scripts/ifcfg-ens13f0.bakmv /etc/sysconfig/network-scripts/ifcfg-ens13f1 /etc/sysconfig/network-scripts/ifcfg-ens13f1.bakcp ifcfg-ens13f0 /etc/sysconfig/network-scripts/ifcfg-ens13f0cp ifcfg-ens13f1 /etc/sysconfig/network-scripts/ifcfg-ens13f1cp ifcfg-bond4 /etc/sysconfig/network-scripts/ifcfg-bond4 sed -i "s/^IPADDR=.*/IPADDR=$1/" /etc/sysconfig/network-scripts/ifcfg-bond0 # 如果不想输入完整的ip地址,可以将上一行的sed命令注释,将下一行的sed的注释解开#sed -i "s/\(IPADDR=[0-9]*\.[0-9]*\.[0-9]*\.\)[0-9]*/\1$1/" /etc/sysconfig/network-scripts/ifcfg-bond0echo "stop fw & selinux" # 禁用selinux和防火墙sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/configsetenforce 0systemctl stop firewalldsystemctl disable firewalldsystemctl is-active firewalld# 修改root密码echo "change passwd"echo "mypass" | passwd --stdin rootecho# 重启网络服务,使配置生效echo "restart network"systemctl restart network# 查看配置结果echo ip -4 a | grep bond -A 3
cat ifcfg-ens13f0
TYPE="Ethernet"PROXY_METHOD="none"BROWSER_ONLY="no"BOOTPROTO="static"DEFROUTE="yes"IPV4_FAILURE_FATAL="no"IPV6INIT="yes"IPV6_AUTOCONF="yes"IPV6_DEFROUTE="yes"IPV6_FAILURE_FATAL="no"IPV6_ADDR_GEN_MODE="stable-privacy"NAME="ens13f0"DEVICE=ens13f0 # 根据实际网卡名进行修改MASTER=bond4SLAVE=yesONBOOT=yes
cat ifcfg-ens13f1
TYPE="Ethernet"PROXY_METHOD="none"BROWSER_ONLY="no"BOOTPROTO="static"DEFROUTE="yes"IPV4_FAILURE_FATAL="no"IPV6INIT="yes"IPV6_AUTOCONF="yes"IPV6_DEFROUTE="yes"IPV6_FAILURE_FATAL="no"IPV6_ADDR_GEN_MODE="stable-privacy"NAME="ens13f1"DEVICE=ens13f1 # 根据实际网卡名进行修改MASTER=bond4SLAVE=yesONBOOT=yes
cat ifcfg-bond4
DEVICE=bond4TYPE=bondBONDING_MASTER=yesBOOTPROTO=staticONBOOT=yesIPADDR=192.168.3.101 # ip地址、掩码、网关修改为自己实际的ip地址、掩码、网关NETMASK=255.255.255.0GATEWAY=192.168.3.1BONDING_OPTS="mode=4 miimon=100"
三、脚本用法
将bond.sh、ifcfg-ens13f0、ifcfg-ens13f1、ifcfg-bond4放在同一目录下。
对于ifcfg-ens13f0、ifcfg-ens13f1:先确认自己的服务器原本的网卡配置文件名是否为ifcfg-ens13f0和ifcfg-ens13f1,请大家根据实际情况修改为自己服务器的网卡配置文件名,并注意修改DEVICE=
的参数
对于ifcfg-bond4:根据实际情况修改ip地址、掩码和网关地址
然后执行脚本:sh bond.sh IP地址
举例,比如,我想配置ip地址为 192.168.3.15,那么我的脚本执行命令为:sh bond.sh 192.168.3.15
如果你的ip地址是个c类地址,你可以将我的bond.sh脚本中的sed命令进行更换,然后脚本执行的命令就简化为:sh bond.sh 15
四、配置验证
通过查看ip的命令可以看到bond的配置结果,此时会有一个名为bond4的网卡,看配置信息是否符合预期
ip a
通过以下命令可以查看bond的详细状态
cat /proc/net/bonding/bond4