Linux网络配置实战:nmcli连接管理与多网卡Bonding策略部署方案

Linux服务器网络配置是运维工作的基础环节。传统的ifconfig和network服务已被NetworkManager取代,nmcli(NetworkManager Command-Line Interface)成为CentOS 7+、RHEL 8+、Ubuntu 18.04+等主流发行版的标配网络管理工具。服务器多网卡Bonding技术通过将多块物理网卡绑定为逻辑接口,实现带宽聚合与故障切换,是保障生产环境网络高可用的核心手段。

nmcli基础操作与连接配置

NetworkManager采用”连接(Connection)”和”设备(Device)”分离的模型。一个连接是一组网络配置参数的集合,可以绑定到不同设备上。理解这个模型是正确使用nmcli的前提。

查看当前网络状态:

# 查看所有设备状态
nmcli device status

# 查看所有连接配置
nmcli connection show

# 查看指定连接的详细参数
nmcli connection show eth0

创建静态IP连接配置:

# 创建新连接,命名为prod-lan,绑定到eth0
nmcli connection add \
    type ethernet \
    ifname eth0 \
    con-name prod-lan \
    ipv4.method manual \
    ipv4.addresses 192.168.10.100/24 \
    ipv4.gateway 192.168.10.1 \
    ipv4.dns "8.8.8.8 114.114.114.114" \
    ipv4.dns-search example.com \
    connection.autoconnect yes

# 修改已有连接的IP地址
nmcli connection modify prod-lan ipv4.addresses 192.168.10.200/24

# 修改DNS配置
nmcli connection modify prod-lan +ipv4.dns 1.1.1.1

# 激活连接
nmcli connection up prod-lan

# 断开连接
nmcli connection down prod-lan

参数说明:con-name指定连接名称,ifname指定物理设备名。ipv4.method设为manual表示静态IP,设为auto表示DHCP。加号前缀(+ipv4.dns)表示追加而非替换。

多网卡Bonding配置与模式选择

Bonding Driver将多块物理网卡虚拟为一个逻辑接口,提供冗余和负载均衡能力。Linux内核支持7种Bond模式,生产环境常用的有三种:

模式1(active-backup):主备模式,同一时刻只有一块网卡工作,故障时自动切换到备用网卡。这是服务器最常用的模式,不需要交换机端配置聚合。

模式4(802.3ad LACP):链路聚合模式,需要交换机支持LACP协议,实现真正的带宽叠加。适用于高吞吐场景。

模式6(balance-alb):自适应负载均衡,不需要交换端配置,通过ARP协商实现接收负载均衡。

使用nmcli配置Bonding(以模式1主备为例):

# 创建bond接口,命名为bond0,模式为active-backup
nmcli connection add \
    type bond \
    ifname bond0 \
    con-name bond0-conn \
    bond.options "mode=active-backup,miimon=100,primary=eth0"

miimon=100表示每100毫秒检测一次链路状态。primary=eth0指定主网卡。

# 为bond添加从接口eth0
nmcli connection add \
    type ethernet \
    ifname eth0 \
    con-name bond-slave-eth0 \
    master bond0

# 为bond添加从接口eth1
nmcli connection add \
    type ethernet \
    ifname eth1 \
    con-name bond-slave-eth1 \
    master bond0

配置bond接口的IP地址:

nmcli connection modify bond0-conn \
    ipv4.method manual \
    ipv4.addresses 10.0.1.50/24 \
    ipv4.gateway 10.0.1.1 \
    ipv4.dns "8.8.8.8 114.114.114.114"

激活所有连接(先从接口后主接口):

nmcli connection up bond-slave-eth0
nmcli connection up bond-slave-eth1
nmcli connection up bond0-conn

验证Bond状态:

# 查看bond接口状态
cat /proc/net/bonding/bond0

# 输出示例:
# Ethernet Channel Bonding Driver: v3.7.1
# Bonding Mode: fault-tolerance (active-backup)
# Primary Slave: eth0
# Currently Active Slave: eth0
# MII Status: up
# MII Polling Interval (ms): 100
#
# Slave Interface: eth0
# MII Status: up
# Speed: 10000 Mbps
# Duplex: full
#
# Slave Interface: eth1
# MII Status: up
# Speed: 10000 Mbps
# Duplex: full

VLAN与Bridge组合配置

虚拟化环境和容器网络中,Bond接口上叠加VLAN和Bridge是常见架构。nmcli支持链式配置:

# 在bond0上创建VLAN 100
nmcli connection add \
    type vlan \
    ifname bond0.100 \
    con-name vlan100 \
    dev bond0 \
    vlan.id 100 \
    ipv4.method manual \
    ipv4.addresses 172.16.100.10/24

# 在VLAN接口上创建Bridge
nmcli connection add \
    type bridge \
    ifname br100 \
    con-name br100-conn \
    ipv4.method disabled \
    bridge.stp no

# 将VLAN接口加入Bridge
nmcli connection modify vlan100 master br100 slave-type bridge

nmcli connection up br100-conn
nmcli connection up vlan100

这种bond 到 vlan 到 bridge的拓扑结构在KVM虚拟化场景中广泛使用。bond提供物理层冗余,vlan实现网络隔离,bridge为虚拟机提供二层接入。

网络故障排查与诊断命令

链路状态检查

# 查看物理链路状态
ethtool eth0

# 查看链路速率和双工模式
ethtool eth0 | grep -E "Speed|Duplex|Link"

# 查看网卡驱动和固件版本
ethtool -i eth0

# 查看网卡统计信息(错误包、丢包等)
ethtool -S eth0 | grep -i error

连接调试

# 查看NetworkManager日志
journalctl -u NetworkManager --since "10 min ago" --no-pager

# 查看内核网络日志
dmesg | grep -i -E "bond|eth|link"

# 追踪nmcli执行过程
nmcli -d general

常见问题排查

Bond从接口无法加入:检查从接口是否已有独立连接配置。nmcli要求从接口不能有自己的IP配置,必须通过master参数归属到bond接口。删除原有连接后重新添加:

nmcli connection delete eth0-conn
nmcli connection add type ethernet ifname eth0 con-name bond-slave-eth0 master bond0

Bond切换延迟过高:默认情况下,miimon检测间隔为100ms,但切换到备用网卡可能需要额外1-3秒的ARP刷新。可以调整fail_over_mac参数为follow(MAC跟随切换)或active(始终使用第一个从接口MAC),根据交换机行为选择:

nmcli connection modify bond0-conn bond.options "mode=active-backup,miimon=100,fail_over_mac=active"

nmcli配置不生效:确认NetworkManager服务运行中,且/etc/sysconfig/network-scripts/下没有残留的旧配置文件与新nmcli配置冲突。手动清理后重启NetworkManager:

systemctl restart NetworkManager

原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/linux-wang-luo-pei-zhi-shi-zhan-nmcli-lian-jie-guan-li-yu/

(0)
小编小编
上一篇 6小时前
下一篇 6小时前

相关推荐