Linux网络核心知识+bonding主备模式配置
本文旨在用最通俗易懂的方式梳理 Linux 网络管理的核心知识体系。为了方便理解我将很多专业术语做了口语化处理比如把“网络设备”说成“物理网卡”。这可能会让资深工程师觉得不够严谨但我相信对刚接触这块内容的朋友来说会更好的理解。一、linux里有网络设备和网络连接的概念网络设备是我们真实的(物理)网卡“网络连接是 NetworkManager 中的配置档案Profile它定义了 IP、网关、DNS 等参数本身不是设备听着可能有点绕我们可以把它想象成虚拟的网卡。我们要配置ip地址必须先创建网络连接并将物理网卡绑定到网络连接上再在网络连接上配置ip地址一个网络连接中可以添加多个ip地址但如果物理网卡故障则网络连接中的所有ip都将无法使用。sql 代码解读复制代码看网络连接的汇总nmcli connection show看物理网卡上绑定的ipip address show二、如何创建网络连接并绑定物理网卡bash 代码解读复制代码创建网络连接并绑定物理网卡nmcli connection add type ethernet con-name eth0 ifname eth0#新建一条网络连接配置nmcli connection add#连接类型为普通以太网type ethernet#连接的名字叫virtualcon-name eth0#该连接绑定的物理网卡设备是ifname eth0#连接类型除了ethernet还有许多如wifi、bond、team、bridge等等可以按两下TAB出来。#连接名称可以任意建议与物理网卡一致方便管理。#绑定的物理网卡名称必须填写正确否则该连接无法被激活。#创建完成可以通过nmcli connection show查看网络连接是否建立成功。三、创建网络连接并绑定好物理网卡之后如何添加ip地址bash 代码解读复制代码在网络连接上添加ip地址nmcli connection modify eth0 ipv4.method manual \ipv4.addresses 192.168.88.222/24 \ipv4.gateway 192.168.88.254 \ipv4.dns 114.114.114.114 autoconnect yes#修改名为 eth0 的网络连接配置nmcli connection modify eth0#IPv4设置为手动静态 IP模式不通过DHCP自动获取ipv4.method manual#配置静态 IP 与子网掩码ipv4.addresses 192.168.88.222/24#配置默认网关 ipv4.gateway 192.168.88.254#配置 DNS 服务器ipv4.dns 114.114.114.114#开机自动激活该连接保证配置永久生效autoconnect yes#注意这一步只是在网络连接上创建 ip 地址配置并没有生效。#除了这些配置之外还有其他配置,输入 ipv4. 可以按两下TAB出来。激活网络连接nmcli connection up eth0激活成功后查看ip地址ip address show eth0四、通过nmcli connection创建并激活的ip是长期生效的我们还可以通过以下的方式临时配置ip地址。csharp 代码解读复制代码在网卡上添加ip地址ip addr add 192.168.88.100/24 dev eth0删除网卡上的ip地址ip addr del 192.168.88.100/24 dev eth0#这种方式添加的ip地址不会生成网卡任何一个ip地址出了问题都不会影响其他ip地址如果网卡故障则所有ip地址都无法通信。#可以绑定不同网段的ip地址网段不同路由也是各走各的该方式属于临时配置重启会丢失。#相当于在操作系统内核层面直接修改了网卡配置绕过了“网络连接”。五、有的网络连接开启了自动连接功能当发现物理网卡没有绑定网络连接时会自动绑定。perl 代码解读复制代码查看网络连接是否开启了自动连接nmcli -f NAME,AUTOCONNECT connection#选项-f是(fields)用来指定显示哪些字段字段之间用 , 隔开#显示的字段为NAME , AUTOCONNECT关闭自动连接功能nmcli connection modify eth0 connection.autoconnect no#修改网络连接nmcli connection modify#设备上网络连接的名字eth0 (写自己设备的网络连接名称)#关闭自动连接connection.autoconnect no#开启自动连接connection.autoconnect yes删除网络连接nmcli connection delete eth0六、linux可以添加多个网关metric值越小优先级越高同一时间只能有一个网关当metric 更小的网关不可达时系统会自动切换使用 metric 更大的备用网关。sql 代码解读复制代码查看网关默认网关ip route show default添加默认网关ip route add default via 192.168.99.5删除默认网关ip route del default via 192.168.99.5七、如何临时禁用或启用某张网卡网卡名为通过ip address show 查看bash 代码解读复制代码临时禁用网卡ip link set eth0 down临时开启网卡ip link set eth0 up#禁用和启用写的是网络设备物理网卡的名称eth0#该命令属于临时禁用和启用重启系统将自动恢复原状态。验证网卡状态是开启还是关闭ip a s eth1#有UP状态为开启eth1: BROADCAST,MULTICAST,UP,LOWER_UP#无UP状态为关闭eth1: BROADCAST,MULTICAST八、如何永久禁用网络连接使其开机不会自动生效yaml 代码解读复制代码永久禁用网络连接nmcli connection modify eth0 connection.autoconnect no永久启用网络连接nmcli connection modify eth0 connection.autoconnect yes#注意这个禁用与上一个不同可以理解“七”禁用的是物理网卡此处禁用的是网络连接#禁用和启用写的是网络连接的名称eth0#该命令属于永久禁用和启用重启系统将不再启动或自动启动。#ip address show 看不到ip地址#ip address show 看到的仍然是 BROADCAST,MULTICAST,UP,LOWER_UP九、我们把ip配置在网络连接上网络连接又绑定着物理网卡如果物理网卡故障则网络连接失效那么ip地址将无法正常通信。可以通过Bonding / Team 将多个物理网卡绑定到同一个聚合网络连接中。当一个物理网卡故障时聚合连接会自动切换到另一块健康的网卡上IP 不变网络不中断业务正常运行。Team在红帽8之后开始弃用。bash 代码解读复制代码创建一个聚合网络连接nmcli connection add type bond ifname bond0 \con-name bond0 bond.options modeactive-backup,miimon100#新建一条网络连接nmcli connection add#连接类型为 bond 链路聚合type bond#生成的虚拟聚合网卡设备名叫 bond0ifname bond0#这条连接配置名称也叫 bond0con-name bond0#bond 模式为主备模式一块网卡工作另一块做备份 modeactive-backup#每0.1秒检查一次网卡线路是否故障miimon100#注意虚拟聚合网卡的名称建议与连接配置名称一致方便管理。#除了主备模式之外还有其他模式最常用的就是主备模式和LACP 动态聚合模式。查看生成的聚合网络连接nmcli connection show十、往前面创建的聚合链路中添加成员python 代码解读复制代码创建第一个从属成员并隐式生成 bond0 聚合设备nmcli connection add type ethernet slave-type bond \con-name bond0-port1 ifname eth1 master bond0#新建一条网络连接配置nmcli connection add#类型为普通物理以太网网卡type ethernet#该网卡作为 bond 的成员端口slave-type bond#为这条从属连接命名con-name bond0-port1#物理网卡设备名是eth1#归属到主聚合设备 bond0master bond0往虚拟聚合网卡中添加第二位成员nmcli connection add type ethernet slave-type bond \con-name bond0-port2 ifname eth2 master bond0#注意物理网卡要求没有绑定其他网络连接如果物理网卡绑定了网络连接先查看该网络连接是否正在使用无用则删除有用则迁移后再绑定。#实际工作中建议网络连接不要开启自动绑定不要生成多条无用连接建议通过添加新的物理网卡来完成聚合连接。#聚合连接最少往里面添加两位成员两条从属连接命名与物理网卡名称必须不同。十一、成员添加完成之后我们还需要给聚合连接添加ip地址激活验证结果bash 代码解读复制代码为虚拟聚合网卡bond0添加ip地址nmcli connection modify bond0 ipv4.method manual \ipv4.addresses 192.168.88.10/24 \ipv4.gateway 192.168.88.1 autoconnect yes#这步操作与“三”一样。激活所有连接nmcli connection up bond0-port1nmcli connection up bond0-portnmcli connection up bond0验证是否成功ip address show bond0cat /proc/net/bonding/bond0#出现ip地址即成功ip address show bond0#查看详细信息文件名为自己网络连接的名称cat /proc/net/bonding/bond0#注意添加的网段必须与其他网卡的网段不同同一台 Linux 服务器上不同的网卡最好不要配相同的网段这是网络设计的大忌极易导致路由紊乱。*十二、详解cat /proc/net/bonding/bond0看到的信息yaml 代码解读复制代码Ethernet Channel Bonding Driver: v5.14.0-503.14.1.el9_5.x86_64#Bond内核版本Bonding Mode: fault-tolerance (active-backup) #主备模式Primary Slave: None #没有手动指定主网卡Currently Active Slave: eth3 #目前主是eth3正在工作的MII Status: up #链路状态正常MII Polling Interval (ms): 100 #每隔0.1秒进行一次检测Up Delay (ms): 0 #链路恢复无延时Down Delay (ms): 0 #故障秒断开无延时Peer Notification Delay (ms): 0Slave Interface: eth2 #bond的成员网卡名字叫eth2MII Status: up #目前网络正常down是异常Speed: 1000 Mbps #当前效率千兆1000兆Duplex: full #全双工Link Failure Count: 1 #历史断开过一次我进行的测试Permanent HW addr: 52:54:00:92:3b:6fSlave queue ID: 0Slave Interface: eth3MII Status: upSpeed: 1000 MbpsDuplex: fullLink Failure Count: 0Permanent HW addr: 52:54:00:b4:1b:54Slave queue ID: 0十三、对聚合链路进行测试bash 代码解读复制代码停掉eth3ip link set eth3 down查看文件信息cat /proc/net/bonding/bond0#显示谁在工作Currently Active Slave: eth2#eth3显示的结果MII Status: down结语以上就是我对 Linux 网络管理核心模块的整理www.ycsjb.com涵盖了从基础概念到聚合链路的大部分常用场景。为了方便阅读部分专业术语我做了简化处理。需要说明的是这份笔记更侧重实用性和理解成本不完全等同于官方文档的严谨表述。实际生产环境中操作建议结合 man nmcli 或 RHEL 官方文档做最终确认。