银河麒麟V10双网卡绑定配置实战:从模式选择到故障切换 📅 发布时间:2026/9/17 11:04:31 👁 浏览次数: 1. 配置前想清楚为什么做双网卡绑定怎么选模式国产化替代这几年银河麒麟V10在政企服务器里的出镜率越来越高。它基于Linux内核兼容CentOS生态很多老运维拿到手里第一反应是“这不就是个换皮的RHEL嘛”但真上手配置的时候才发现坑比想象的多尤其是双网卡绑定这种基础操作。先说清楚双网卡绑定到底解决什么问题。生产环境里最怕的事就是业务跑着跑着突然断网——单块网卡一挂服务直接掉线哪怕VIP切走了监控告警也得响半天。双网卡绑定就是把两块物理网卡逻辑上合并成一块虚拟网卡bond0对外表现为一个IP对内起到链路冗余和流量分担的作用。麒麟V10的绑定和CentOS系基本一脉相承都走Linux bonding驱动但有几个细节和纯CentOS不一样NetworkManager默认托管程度、network服务的存在与否、以及ifcfg文件中参数兼容性。所以不要照抄老博客里的CentOS 6配置那是system-network-config时代的东西直接套在V10上大概率起不来。绑定模式的选择是最核心的决策点。生产环境里最常见的三种模式名称特点适用场景mode0balance-rr轮询负载均衡数据包按顺序轮流从两块网卡发出同网段、交换机需支持聚合且链路物理参数完全一致mode1active-backup主备模式一块工作一块待命故障时自动切换最推荐交换机无需配置兼容性最高mode4802.3ad链路聚合需要交换机侧配置LACP带宽有扩展需求且网络设备可控我的建议是没有特殊需求优先选mode1。理由很简单——双网卡绑定的第一诉求是高可用不是堆带宽。mode1不需要交换机做任何配置两块网卡只要物理连通就行对跨厂商网络设备、虚拟化平台、云环境都友好。mode4虽然能把两个千兆口合成2Gbps的理论带宽但实际瓶颈往往在交换机的哈希策略和链路质量上而且一旦交换机侧聚合配置没做好整条链路都可能起不来。mode0看着美实际使用中如果两块网卡型号、速率不一致很容易出现乱序重传反而拖低性能。麒麟这个级别的服务器环境稳定压倒一切别为了跑分数字给自己挖坑。另外补充一点银河麒麟V10的服务器版和桌面版在网络管理上略有差异服务器版默认装好NetworkManager但同时保留传统的network服务。如果只想用一个网络管理组件建议保留NetworkManager并统一用它管bond或者反过来停掉NetworkManager全走ifcfg文件。两边同时下手经常出现“明明配置文件都对网卡就是不上IP”的灵异事件。2. 动手前摸清家底网卡信息、驱动模块、网络规划一个都不能少2.1 确认当前网卡列表和命名规则配置双网卡绑定第一步是登录系统看清楚机器上到底有哪些网卡。在麒麟V10里执行ip link show输出里会列出所有物理网卡和虚拟网卡名字一般是ens33、ens34、enp2s0f0、enp3s0f1这种风格。CentOS 6时代那种eth0、eth1的命名已经不用了现在的命名规则和固件槽位挂钩重启后不会变。还要确认每块网卡当前是否在使用、有没有被分配IPip addr show我把实际生产中遇到的情况列个清单大家对照着看如果两块网卡都是up状态且名字规则可以直接走绑定流程。如果网卡是down的先排查物理接线和驱动加载情况有些服务器板载网卡在BIOS里被disable了系统里看得见但起不来。如果用ip link看不到网卡大概率是驱动没加载先ldconfig、modprobe相关模块再说。如果机器是虚拟机比如KVM/VMware里跑麒麟虚拟网卡的名称和物理机不一样但这不影响绑定逻辑照常操作即可。2.2 检查bonding驱动与NetworkManager状态麒麟V10的内核默认编译了bonding模块但不同小版本的模块状态未必一样先确认一遍最稳。modinfo bonding如果输出正常能看到路径、版本、参数描述说明内核有驱动不用额外装。如果提示FATAL: Module bonding not found那就得先处理内核模块问题一般不会遇到。接着看网络管理服务的情况systemctl status NetworkManager systemctl status network我的经验是如果NetworkManager在运行而且你后续想用nmcli来管理bond那就不需要碰network服务如果更习惯写ifcfg文件那么建议先把NetworkManager停下来避免两边抢配置。systemctl stop NetworkManager systemctl disable NetworkManager systemctl start network systemctl enable network有朋友可能会问麒麟V10里network服务还在吗实测多数版本还在少数最小化安装的版本可能没有。如果没有又不想用NetworkManager那得先补装yum install -y network-scripts把这个基础问题解决掉免得配置到一半发现服务指挥棒是空的。2.3 规划IP、网关、交换机策略和物理链路双网卡绑定规划环节最容易忽略的是物理链路的联通性。我遇到过一位同事绑完bond0后发现切换测试怎么都不生效排查到最后发现第二块网卡连的交换机端口是光口链路灯是亮的但交换机管理员根本没给那个端口划分VLAN。所以配置bond之前给网络管理员发个工单确认以下内容两块网卡对应的交换机端口是否都允许业务VLAN通过如果选mode4交换机端口是否需要配置为LACP聚合口通常是动态聚合如果选mode1交换机侧不需要额外动作但建议将两个物理端口放在同一个VLAN内如果是跨交换机接双链路确认两台交换机之间是否做了级联否则主备模式没问题但mode4会出问题同时把IP规划固话下来。bond0的IP地址、网关、DNS要提前定好物理网卡上不要单独配IP这是铁律。如果你在绑定时发现原来的业务IP在某个物理网卡上配置前先记下来待会要清掉的。3. 完整实操麒麟V10双网卡绑定配置全过程3.1 绑定前的网络配置文件备份做任何网络变更之前第一件事是备份配置文件。这步省了后面出了问题哭都来不及。cp -a /etc/sysconfig/network-scripts /root/network-scripts.bak_$(date %F)把整个network-scripts目录打包备份回滚的时候直接整体覆盖回去。别觉得这步多余实际生产里配置改坏、重启连不上机器的例子我见太多了。有了备份恢复只花两分钟否则只能去机房接显示器单用户模式救急。3.2 编写bond0主配置文件麒麟V10的bond配置核心在/etc/sysconfig/network-scripts/ifcfg-bond0。用vim编辑vim /etc/sysconfig/network-scripts/ifcfg-bond0完整内容如下DEVICEbond0 NAMEbond0 TYPEBond BONDING_MASTERyes ONBOOTyes BOOTPROTOstatic IPADDR192.168.10.20 NETMASK255.255.255.0 GATEWAY192.168.10.1 DNS1223.5.5.5 DNS2114.114.114.114 BONDING_OPTSmode1 miimon100 fail_over_mac1逐个字段解释一下DEVICE与NAME都设为bond0这两个字段保持跟文件名一致避免系统识别混乱。TYPEBond和BONDING_MASTERyes配合使用告知系统这是一个bond主接口。BOOTPROTOstatic固定IP不要用dhcp服务器场景静态IP是基本素养。IPADDR、NETMASK、GATEWAY、DNS都写在bond0上物理网卡接口不承载这些。BONDING_OPTS是核心双引号包起来写在一行。mode1指定主备模式miimon100表示每100毫秒检查一次链路状态fail_over_mac1让bond0在切换时主动同步MAC地址这个参数在虚拟化环境特别重要。顺便说一下miimon的含义。它是bonding驱动周期性检测物理链路状态的间隔单位是毫秒。100毫秒是常见默认值太短会消耗额外CPU太长则故障切换慢。如果对切换时间要求高可以调到50但没必要追求极限。3.3 编写两块物理网卡的从属配置文件接下来配置两块物理网卡让它们加入bond0。先编辑第一块vim /etc/sysconfig/network-scripts/ifcfg-ens33内容如下DEVICEens33 NAMEens33 TYPEEthernet ONBOOTyes BOOTPROTOnone MASTERbond0 SLAVEyes再编辑第二块vim /etc/sysconfig/network-scripts/ifcfg-ens34内容除了设备名不同其他完全一样DEVICEens34 NAMEens34 TYPEEthernet ONBOOTyes BOOTPROTOnone MASTERbond0 SLAVEyes这里有几个容易踩坑的点第一物理网卡里千万不要配IPADDR、GATEWAY这些参数否则用ip addr能看到物理网卡上有地址route表也会混乱。BOOTPROTO必须为none而不是static因为从属接口的IP完全由bond0分配。第二MASTERbond0要和ifcfg-bond0里的DEVICEbond0对应上拼写错了网卡永远不会加入bond。第三如果系统里同时装了NetworkManager建议在这些ifcfg文件里加一行NM_CONTROLLEDno强制让network服务来管理这些接口避免NM的自动连接把配置冲掉。当然如果你的环境就是决定用NetworkManager统一管理那配置方式完全不同在后面的替代方案里我会单独说。3.4 加载bonding模块并重启网络服务配置写完先把bonding模块拉起来modprobe bonding如果这个模块本身没有被modprobe.d配置静默加载上面的命令只解决当前内存状态重启后不生效。稳妥做法是在/etc/modules-load.d/bonding.conf里加一行echo bonding /etc/modules-load.d/bonding.conf接下来重启网络服务让配置生效。走network服务路线的话systemctl restart network重启后验证bond0是否起来ip addr show bond0 cat /proc/net/bonding/bond0/proc/net/bonding/bond0是bonding驱动实时状态表最关心的几个信息Bonding Mode: fault-tolerance (active-backup) 确认模式是主备。MII Status: up 表示链路正常。Active Slave: ens33 表示当前激活的物理网卡。Slave Interface: ens33、ens34列出所有从属网卡。如果ip addr里bond0有IP、ping网关能通说明基本配置成功。3.5 NetworkManager替代方案用nmcli完成同样的绑定有些麒麟V10环境默认NetworkManager在管网络强行停掉可能影响其他业务比如虚拟网桥、隧道接口都是NM创建的。这时候用nmcli来配置bond是更优雅的方案。先创建bond0连接nmcli connection add type bond con-name bond0 ifname bond0 mode active-backup ipv4.method manual ipv4.addresses 192.168.10.20/24 ipv4.gateway 192.168.10.1 ipv4.dns 223.5.5.5 114.114.114.114再创建两个从属端口连接nmcli connection add type ethernet con-name bond-slave-ens33 ifname ens33 master bond0 nmcli connection add type ethernet con-name bond-slave-ens34 ifname ens34 master bond0激活连接nmcli connection up bond0 nmcli connection up bond-slave-ens33 nmcli connection up bond-slave-ens34验证方式nmcli connection show nmcli device statusnmcli的好处是配置写在/etc/sysconfig/network-scripts下但由NM统一调度不冲突。缺点是不熟悉NM命令的人看着有点晕新手还是建议走ifcfg文件路线。4. 性能验证与故障切换测试4.1 验证绑定状态link速度、从属网卡状态、实际吞吐配置完成不代表万事大吉验证环节必须认真做。先确认bond0的速率ethtool bond0正常情况下Speed显示的数值是当前活动网卡的协商速率。比如ens33是千兆ens34也是千兆bond0的Speed就是1000Mb/s。mode1不叠加带宽看到这个结果别惊讶。再看从属接口的状态ethtool ens33 ethtool ens34两块网卡都应该是Link detected: yes、Speed: 1000Mb/s。如果有一块Speed降到100Mb/s多半是网线、光模块或交换机端口协商问题需要排查物理链路。然后测试实际吞吐。使用iperf3在局域网内另起一台机器做服务端# 服务端 iperf3 -s # 客户端 iperf3 -c 192.168.10.100对普通千兆环境TCP窗口默认值下能跑到940Mbps左右就说明链路没问题。如果带宽低于预期先把网卡固件、驱动检查一遍别怀疑bond配置有bug。4.2 主备切换测试拔线、断端口、恢复mode1的核心价值在于故障切换这步必须实测。测试方法很简单在bond0上做持续pingping -i 0.2 192.168.10.1然后断开当前活动网卡的物理链路——拔网线、关交换机端口或直接在服务器上调低网卡link。观察ping的断流情况。正常切换链路时ping会丢大约1-2个包然后恢复正常。观察/proc/net/bonding/bond0里的Active Slave字段会发现从ens33切换到了ens34MII Status保持up。这个切换由驱动完成不需要人工干预。切换时间取决于miimon参数100毫秒的检查周期意味着最坏情况下100毫秒发现链路故障加上切换动作业务侧感知通常在一个交换机转发延迟级别。恢复原网卡链路后bond0并不会自动切回ens33因为mode1下bonding驱动默认不会把流量切回优先级高的网卡除非原主卡成了唯一存活链路。如果需要回切可以手动操作ifenslave -c bond0 ens33或者干脆用ip命令ip link set ens33 down ip link set ens33 up整个切换测试过程中观察业务侧应用日志是否出现超时或RST。如果业务系统对网络抖动敏感建议把miimon调低同时配合arp_interval和arp_ip_target做双保险。4.3 验证路由和网关漂移情况很多时候bond0起来了但业务还是不通问题出在路由表上。检查route表ip route show正常情况只有一条默认路由指向网关且dev是bond0。如果发现两条默认路由或者有路由的dev指向物理网卡说明之前的配置残留必须清理。清空路由残留ip route flush dev ens33 ip route flush dev ens34 ip route add default via 192.168.10.1 dev bond0同时在/etc/sysconfig/network-scripts/route-bond0里固化default via 192.168.10.1 dev bond0这样防火墙、路由表在重启后也不会漂。5. 常见问题与排查技巧实录5.1 问题速查表故障现象可能原因排查方法bond0未生成bonding模块未加载或NetworkManager抢占modprobe bonding检查NM状态bond0有IP但ping不通网关物理网卡配置残留IP或路由问题ip route check清残留路由从属网卡一直不up网卡未接入网络或驱动问题ethtool查看link检查交换机端口重启后bond配置丢失模块未持久化或ONBOOT未设为yes检查modprobe.d和ONBOOT参数切换测试不生效miimon0或物理链路未断开完全cat /proc/net/bonding/bond0确认出现IP冲突物理网卡和bond0同时配置了IP检查所有ifcfg文件物理网卡不设IP5.2 麒麟V10特有的隐患麒麟V10虽然兼容RHEL体系但有些隐患是这版系统独有的。第一个隐患是克隆虚拟机导致UUID和MAC绑定问题。很多麒麟V10跑在虚拟化平台上从模板克隆出来的虚机网卡MAC变了但ifcfg文件里还可能留着旧的HWADDR条目。这种情况下网卡可能起不来或者绑定失败。处理方式是把ifcfg-ens33、ifcfg-ens34文件里的HWADDR、UUID行删掉让系统重新识别。第二个隐患是BONDING_OPTS引号问题。老版本Linux允许不带引号的写法但麒麟V10的脚本解析器对这个参数有严格要求。实测必须用双引号将整个BONDING_OPTS包住并且mode、miimon、fail_over_mac三项不换行。格式错了network服务会直接忽略bond0配置且不报错。第三个隐患是DNS配置遗漏。麒麟V10默认的resolv.conf可能被NetworkManager或systemd-resolved接管手动在ifcfg-bond0里写DNS1、DNS2之后重启网络服务会发现resolv.conf被覆盖。这时候要么关闭NM并且禁用resolvconf的hook要么用nmcli的ipv4.dns配置。第四个坑是网络服务冲突。有些麒麟最小化版本没有network服务或者NetworkManager和network服务同时在拉起网络导致bond0在network服务起来一瞬间被NM接管了。建议要么彻底禁用NM走ifcfg要么彻底走NM方案不要两边混用。5.3 从实战中总结的几点见解配置双网卡绑定这块我个人的体会是比命令更重要的是整体思维。第一bonding不是堆硬件是设计冗余。物理链路要独立如果两块网卡连到同一台交换机那交换机挂了业务还是断。有条件的话两块网卡分别接两台交换机配合交换机的堆叠或者VPC技术实现真正的设备级冗余。第二绑定参数不是越多越好。除了mode和miimon其他参数默认配置就够用。有人喜欢加主备优先级primary参数让指定网卡作为首选激活口这没问题但要明白primary只影响初始状态链路故障恢复后不会自动切回主卡。第三变更前后做好记录和验证。实测生产环境做完bond后最好保留切换测试记录、路由表快照、bond状态快照。后续出了问题直接对比快照定位省时省力。最后再分享一个小技巧配置完成后强烈建议启动时自动加载bonding模块并且把网络服务设为开机自启。用systemd平台的话还可以把ifcfg-bond0里的ONBOOTyes放到第一位避免boot阶段网卡没起来导致后续服务启动失败。踩过几次坑之后你会明白宁可多写一行配置也不要凌晨两点爬起来处理业务中断的事故。