Linux的NetworkManager的`nmcli`配置网络网卡(ethernet),网桥(bridge),绑定(bond),虚拟网络(vlan)

392 阅读57分钟

Linux的NetworkManager的nmcli配置网络网卡(ethernet),网桥(bridge),绑定(bond),虚拟网络(vlan) 笔记250711

使用 nmcli 配置 Linux 网络:Ethernet、Bridge、Bond、VLAN 完全指南

nmcli 是 NetworkManager 的命令行工具,提供了强大的网络配置能力。下面详细介绍如何使用 nmcli 配置以太网卡、网桥、绑定和 VLAN。

一、基础概念与关系

graph TD
    A[物理网卡 enp3s0] -->|从属| B[Bond bond0]
    A -->|直接使用| C[Ethernet]
    B -->|父设备| D[VLAN vlan10]
    D -->|成员| E[Bridge br0]
    F[物理网卡 enp4s0] -->|从属| B
    G[虚拟机/容器] -->|连接| E
    
    style A fill:#f9f,stroke:#333
    style F fill:#f9f,stroke:#333
    style B fill:#bbf,stroke:#333
    style D fill:#9f9,stroke:#333
    style E fill:#f96,stroke:#333
    style C fill:#0f0,stroke:#333

二、环境准备

1. 查看当前网络状态

nmcli device status
# 输出示例:
DEVICE   TYPE      STATE      CONNECTION 
enp3s0   ethernet  connected  enp3s0
enp4s0   ethernet  disconnected  --

2. 安装必要工具

sudo apt install network-manager vlan ethtool  # Debian/Ubuntu
sudo dnf install NetworkManager vlan ethtool  # Fedora/RHEL

三、配置详解

1. 以太网卡 (Ethernet) 配置

静态 IP 配置
sudo nmcli con add type ethernet \
    con-name "static-eth" \
    ifname enp3s0 \
    ip4 192.168.1.100/24 \
    gw4 192.168.1.1 \
    ipv4.dns "8.8.8.8 8.8.4.4" \
    ipv4.method manual
DHCP 配置
sudo nmcli con add type ethernet \
    con-name "dhcp-eth" \
    ifname enp3s0 \
    ipv4.method auto
高级配置选项
# 设置MTU
sudo nmcli con mod "static-eth" 802-3-ethernet.mtu 9000

# 禁用IPv6
sudo nmcli con mod "static-eth" ipv6.method ignore

# 启用巨帧
sudo nmcli con mod "static-eth" ethernet.jumbo-frames yes

2. 绑定接口 (Bond) 配置

创建绑定接口
sudo nmcli con add type bond \
    con-name "bond0" \
    ifname bond0 \
    mode 802.3ad \
    miimon 100 \
    lacp-rate fast
添加从属接口
# 添加第一个从属接口
sudo nmcli con add type bond-slave \
    con-name "bond-slave1" \
    ifname enp3s0 \
    master bond0

# 添加第二个从属接口
sudo nmcli con add type bond-slave \
    con-name "bond-slave2" \
    ifname enp4s0 \
    master bond0
绑定模式说明
模式名称特点
balance-rr轮询负载均衡,容错
active-backup主备故障切换
balance-xorXOR基于哈希负载均衡
broadcast广播所有从属发送数据
802.3adLACP动态聚合(推荐)
balance-tlbTLB发送负载均衡
balance-albALB接收发送负载均衡

3. VLAN 配置

基于物理接口的 VLAN
sudo nmcli con add type vlan \
    con-name "vlan10" \
    ifname vlan10 \
    dev enp3s0 \
    id 10
基于绑定接口的 VLAN
sudo nmcli con add type vlan \
    con-name "vlan-bond20" \
    ifname vlan20 \
    dev bond0 \
    id 20
配置 VLAN 网络
# 静态IP
sudo nmcli con mod "vlan10" ipv4.addresses 10.10.10.2/24
sudo nmcli con mod "vlan10" ipv4.gateway 10.10.10.1
sudo nmcli con mod "vlan10" ipv4.method manual

# DHCP
sudo nmcli con mod "vlan10" ipv4.method auto

4. 网桥 (Bridge) 配置

创建基本网桥
sudo nmcli con add type bridge \
    con-name "br0" \
    ifname br0 \
    stp yes \
    priority 32768
添加接口到网桥
# 添加物理接口
sudo nmcli con add type bridge-slave \
    con-name "br-slave-eth" \
    ifname enp3s0 \
    master br0

# 添加VLAN接口
sudo nmcli con add type bridge-slave \
    con-name "br-slave-vlan" \
    ifname vlan10 \
    master br0

# 添加绑定接口
sudo nmcli con add type bridge-slave \
    con-name "br-slave-bond" \
    ifname bond0 \
    master br0
配置网桥网络
# 静态IP
sudo nmcli con mod "br0" ipv4.addresses 192.168.1.100/24
sudo nmcli con mod "br0" ipv4.gateway 192.168.1.1
sudo nmcli con mod "br0" ipv4.dns "8.8.8.8"
sudo nmcli con mod "br0" ipv4.method manual

# DHCP
sudo nmcli con mod "br0" ipv4.method auto

四、完整配置示例

场景:高可用服务器网络

# 1. 创建绑定
sudo nmcli con add type bond con-name bond0 ifname bond0 mode 802.3ad lacp-rate fast

# 2. 添加从属接口
sudo nmcli con add type bond-slave con-name bond-slave1 ifname enp3s0 master bond0
sudo nmcli con add type bond-slave con-name bond-slave2 ifname enp4s0 master bond0

# 3. 创建VLAN
sudo nmcli con add type vlan con-name vlan10 ifname vlan10 dev bond0 id 10
sudo nmcli con add type vlan con-name vlan20 ifname vlan20 dev bond0 id 20

# 4. 创建管理网桥
sudo nmcli con add type bridge con-name br-mgmt ifname br-mgmt
sudo nmcli con add type bridge-slave con-name br-mgmt-slave ifname vlan10 master br-mgmt
sudo nmcli con mod br-mgmt ipv4.addresses 10.10.10.2/24 ipv4.method manual

# 5. 创建数据网桥
sudo nmcli con add type bridge con-name br-data ifname br-data
sudo nmcli con add type bridge-slave con-name br-data-slave ifname vlan20 master br-data
sudo nmcli con mod br-data ipv4.addresses 10.10.20.2/24 ipv4.method manual

# 6. 激活所有连接
sudo nmcli con up bond0
sudo nmcli con up vlan10
sudo nmcli con up vlan20
sudo nmcli con up br-mgmt
sudo nmcli con up br-data

五、管理命令

1. 连接管理

# 启动连接
sudo nmcli con up "br0"

# 停止连接
sudo nmcli con down "br0"

# 删除连接
sudo nmcli con delete "br0"

# 重载配置
sudo nmcli con reload

2. 设备管理

# 查看所有设备
nmcli dev status

# 断开设备
sudo nmcli dev disconnect enp3s0

# 连接设备
sudo nmcli dev connect enp3s0

# 查看设备详情
nmcli dev show br0

3. 监控与排错

# 查看连接配置
nmcli con show br0

# 监控连接事件
nmcli monitor

# 查看日志
journalctl -u NetworkManager -f

# 测试连通性
ping -I br0 8.8.8.8

六、高级功能

1. 配置备份与恢复

# 备份所有连接
sudo cp -r /etc/NetworkManager/system-connections/ ~/nm-backup

# 恢复连接
sudo cp ~/nm-backup/* /etc/NetworkManager/system-connections/
sudo nmcli con reload

2. 配置导出与导入

# 导出连接配置
nmcli con show "br0" > br0-config.nmconnection

# 导入连接配置
sudo cp br0-config.nmconnection /etc/NetworkManager/system-connections/
sudo chmod 600 /etc/NetworkManager/system-connections/br0-config.nmconnection
sudo nmcli con reload

3. 网络诊断工具

# 查看绑定状态
cat /proc/net/bonding/bond0

# 查看VLAN配置
cat /proc/net/vlan/config

# 查看网桥信息
bridge link show

# 查看STP状态
bridge stp show br0

4. 性能优化

# 启用巨帧
sudo nmcli con mod bond0 802-3-ethernet.mtu 9000
sudo nmcli con mod br0 bridge.mtu 9000

# 禁用STP(无环路环境)
sudo nmcli con mod br0 bridge.stp no

# 增加缓冲区
sudo sysctl -w net.core.netdev_max_backlog=10000

七、常见问题解决

1. 连接无法激活

# 查看详细错误
nmcli con show br0 | grep -i error

# 检查依赖关系
nmcli dev status | grep -i connected

# 释放冲突接口
sudo nmcli dev disconnect enp3s0

2. VLAN 无法通信

# 检查 VLAN 父设备状态
ip -d link show vlan10

# 验证交换机配置
# 确保交换机端口配置为 Trunk 模式

3. 绑定接口性能差

# 检查绑定模式
cat /proc/net/bonding/bond0 | grep "Bonding Mode"

# 验证LACP协商状态
cat /proc/net/bonding/bond0 | grep "LACP rate"

# 检查交换机LACP配置

4. 网桥不转发流量

# 检查STP状态
bridge stp show br0

# 临时禁用防火墙
sudo nmcli con mod br0 connection.zone "trusted"
sudo nmcli con up br0

八、最佳实践

  1. 命名规范

    # 连接名称:类型-用途
    con-name: bond-production
    con-name: vlan10-finance
    con-name: br-database
    
  2. 配置顺序

    graph LR
        A[物理接口] --> B[绑定]
        B --> C[VLAN]
        C --> D[网桥]
    

    按顺序创建:物理接口 → 绑定 → VLAN → 网桥

  3. 冗余设计

    # 双网卡绑定提供物理冗余
    sudo nmcli con add type bond ... mode active-backup
    
    # 多路径VLAN提供逻辑冗余
    sudo nmcli con add type vlan ... dev bond0 id 10
    sudo nmcli con add type vlan ... dev bond1 id 10
    
  4. 安全加固

    # 禁用未使用的协议
    sudo nmcli con mod br0 ipv6.method ignore
    
    # 启用MAC过滤
    sudo nmcli con mod br0 bridge.mac-address 00:11:22:33:44:55
    sudo nmcli con mod br0 bridge.unicast-flood no
    
  5. 文档化配置

    # 添加描述信息
    sudo nmcli con mod br0 connection.autoconnect yes
    sudo nmcli con mod br0 +connection.interface-name "Primary network bridge"
    

九、配置验证清单

  1. 物理层

    • 网卡状态:ip link show
    • 链路状态:ethtool enp3s0
  2. 绑定层

    • 绑定状态:cat /proc/net/bonding/bond0
    • 从属接口状态:nmcli dev status
  3. VLAN层

    • VLAN 配置:cat /proc/net/vlan/config
    • VLAN 父设备:ip -d link show vlan10
  4. 网桥层

    • 网桥成员:bridge link show
    • STP 状态:bridge stp show br0
    • MAC 表:bridge fdb show br0
  5. 网络层

    • IP 地址:ip addr show br0
    • 路由表:ip route show
    • DNS 配置:nmcli con show br0 | grep dns

通过以上 nmcli 命令,您可以灵活配置各种复杂网络拓扑,满足从简单工作站到企业级服务器的各种网络需求。所有配置在系统重启后自动生效,可通过 NetworkManager 统一管理。



























Linux NetworkManager 的 nmcli 配置指南:以太网、网桥、绑定、VLAN

nmcli 是 NetworkManager 的命令行工具,用于配置各种网络连接类型。下面详细介绍如何使用 nmcli 配置以太网、网桥、绑定和 VLAN。

一、配置基础概念

1. 关键术语

术语说明示例
con-name连接配置的逻辑名称(唯一标识)office-lan
ifname网络接口的实际设备名eth0, br0
type连接类型(ethernet, bridge, bond, vlan)type bridge
master指定主连接(用于从属连接)master br0
slave-type从属连接类型(bridge-slave, bond-slave)slave-type bridge

2. 配置文件位置

所有配置保存在 /etc/NetworkManager/system-connections/ 目录

二、以太网卡 (Ethernet) 配置

1. 基础配置

# 创建 DHCP 连接
nmcli connection add type ethernet \
  con-name "eth-dhcp" \
  ifname eth0 \
  ipv4.method auto

# 创建静态 IP 连接
nmcli connection add type ethernet \
  con-name "eth-static" \
  ifname eth0 \
  ipv4.addresses 192.168.1.100/24 \
  ipv4.gateway 192.168.1.1 \
  ipv4.dns "8.8.8.8" \
  ipv4.method manual

2. 管理连接

# 启用连接
nmcli connection up eth-static

# 停用连接
nmcli connection down eth-static

# 修改配置
nmcli connection modify eth-static ipv4.addresses "192.168.1.200/24"

# 删除连接
nmcli connection delete eth-static

三、绑定 (Bond) 配置

1. 创建绑定接口

# 创建绑定(模式:active-backup)
nmcli connection add type bond \
  con-name bond0 \
  ifname bond0 \
  bond.options "mode=active-backup,miimon=100"

# 添加成员接口
nmcli connection add type bond-slave \
  con-name bond0-eth1 \
  ifname eth1 \
  master bond0

nmcli connection add type bond-slave \
  con-name bond0-eth2 \
  ifname eth2 \
  master bond0

2. 常用绑定模式

# 负载均衡 (802.3ad/LACP)
bond.options "mode=802.3ad,lacp_rate=fast"

# 轮询模式
bond.options "mode=balance-rr"

# XOR 哈希模式
bond.options "mode=balance-xor"

3. 配置 IP

nmcli connection modify bond0 \
  ipv4.method manual \
  ipv4.addresses 10.0.0.5/24

四、虚拟局域网 (VLAN) 配置

1. 基础 VLAN

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

2. 在绑定接口上创建 VLAN

# 在 bond0 上创建 VLAN 200
nmcli connection add type vlan \
  con-name vlan200 \
  ifname bond0.200 \
  dev bond0 \
  vlan.id 200

五、网桥 (Bridge) 配置

1. 基础网桥

# 创建网桥
nmcli connection add type bridge \
  con-name br0 \
  ifname br0 \
  ipv4.method manual \
  ipv4.addresses 172.16.0.1/24

# 添加物理接口
nmcli connection add type bridge-slave \
  con-name br0-eth0 \
  ifname eth0 \
  master br0

2. 高级网桥选项

# 配置 STP 参数
nmcli connection modify br0 \
  bridge.stp yes \
  bridge.priority 16384 \
  bridge.hello-time 2 \
  bridge.max-age 20 \
  bridge.forward-delay 15

六、综合配置示例

场景:绑定 → VLAN → 网桥

# 1. 创建绑定
nmcli connection add type bond \
  con-name bond0 \
  ifname bond0 \
  bond.options "mode=802.3ad,lacp_rate=fast"

nmcli connection add type bond-slave con-name bond0-eth1 ifname eth1 master bond0
nmcli connection add type bond-slave con-name bond0-eth2 ifname eth2 master bond0

# 2. 在绑定上创建 VLAN
nmcli connection add type vlan \
  con-name bond0-vlan100 \
  ifname vlan100 \
  dev bond0 \
  vlan.id 100

# 3. 创建网桥并添加 VLAN
nmcli connection add type bridge \
  con-name br-vlan100 \
  ifname br-vlan100 \
  ipv4.method manual \
  ipv4.addresses 10.100.0.1/24

nmcli connection add type bridge-slave \
  con-name br-vlan100-port \
  ifname vlan100 \
  master br-vlan100

# 4. 启动所有连接
nmcli connection up bond0
nmcli connection up bond0-vlan100
nmcli connection up br-vlan100

七、管理命令参考

1. 状态查看

# 查看所有连接
nmcli connection show

# 查看设备状态
nmcli device status

# 查看详细设备信息
nmcli device show eth0

# 查看绑定状态
cat /proc/net/bonding/bond0

2. 连接管理

# 启动连接
nmcli connection up br-vlan100

# 重启连接
nmcli connection down br-vlan100 && nmcli connection up br-vlan100

# 重载配置
nmcli connection reload

3. 配置持久化

# 保存所有配置
nmcli connection save

# 导出配置
nmcli connection export br-vlan100 > br-vlan100.nmconnection

# 导入配置
nmcli connection import type bridge file br-vlan100.nmconnection

八、故障排除

1. 常见问题解决

# 连接无法启动
journalctl -u NetworkManager -f

# VLAN 流量不通
bridge vlan show

# 绑定接口不工作
cat /proc/net/bonding/bond0

# 网桥成员异常
bridge link show

2. 调试命令

# 临时启用详细日志
nmcli general logging level DEBUG domains ALL

# 查看生成的后端配置
ls -l /run/NetworkManager/system-connections/

九、高级配置技巧

1. MTU 配置

# 设置全局 MTU
nmcli connection modify br0 ethernet.mtu 9000

# 设置特定成员 MTU
nmcli connection modify br0-eth0 ethernet.mtu 9000

2. MAC 地址控制

# 固定 MAC 地址
nmcli connection modify br0 ethernet.cloned-mac-address 00:11:22:33:44:55

# MAC 地址过滤
nmcli connection modify br0 bridge.mac-address-ageing-time 300

3. VLAN 过滤

# 启用 VLAN 过滤
nmcli connection modify br0 bridge.vlan-filtering yes

# 配置 VLAN 成员
nmcli connection modify br0-eth0 bridge-port.vlans "10-20,30"
nmcli connection modify br0-eth1 bridge-port.pvid 100

十、实际应用场景

1. KVM 虚拟化网络

# 创建专用网桥
nmcli connection add type bridge con-name br-kvm ifname br-kvm
nmcli connection add type bridge-slave con-name br-kvm-eth0 ifname eth0 master br-kvm

# 配置静态 IP
nmcli connection modify br-kvm ipv4.addresses 192.168.100.1/24 ipv4.method manual

# 启动网桥
nmcli connection up br-kvm

2. 容器网络隔离

# 创建带 VLAN 的网桥
nmcli connection add type vlan con-name eth0.300 dev eth0 id 300
nmcli connection add type bridge con-name br-container ifname br-container
nmcli connection add type bridge-slave con-name br-container-port ifname eth0.300 master br-container

# 配置 Docker 网络
docker network create -d macvlan \
  --subnet=10.30.0.0/24 \
  -o parent=br-container \
  container-net

3. 高可用网络拓扑

graph TB
    E1[eth1] --> BOND[bond0]
    E2[eth2] --> BOND
    BOND --> VLAN100[vlan100]
    BOND --> VLAN200[vlan200]
    VLAN100 --> BR_MGMT[br-mgmt]
    VLAN200 --> BR_DATA[br-data]
    BR_MGMT --> MGMT[管理网络]
    BR_DATA --> DATA[数据网络]

总结

通过 nmcli 可以高效管理各种网络配置:

  1. 以太网卡:基础网络连接点
  2. 绑定接口:提供链路冗余和负载均衡
  3. VLAN:实现网络逻辑隔离
  4. 网桥:整合网络组件,提供最终连接点

关键命令模式:

# 创建连接
nmcli connection add type <类型> con-name <名称> ifname <设备> [选项]

# 修改配置
nmcli connection modify <con-name> [参数]

# 管理连接
nmcli connection [up|down|delete] <con-name>

掌握这些配置方法,您可以构建从简单到复杂的企业级网络架构。



























nmcli connection add type 是 NetworkManager 命令行工具中用于创建网络连接配置的核心命令,其功能强大且灵活,支持多种网络类型。以下从五个维度全面解析该命令的使用方法及技术细节:


一、命令语法结构与核心参数

基础语法

nmcli connection add type <连接类型> [属性键值对]

关键参数

  1. type(必选)
    指定连接类型,如 ethernetvlanbondbridgewifi 等。不同类型需配合特定参数(如 vlan.idbond.mode)。
  2. con-name
    连接配置名称(逻辑标识),如不指定则自动生成(格式:类型-接口名)。示例:con-name "Office-LAN"
  3. ifname
    绑定的物理/虚拟接口名(如 eth0br0)。多数类型必需(除 bridgebond 等聚合类型外)。
  4. IP 配置相关
    • ipv4.addresses:静态 IP 地址(如 192.168.1.100/24
    • ipv4.gateway:默认网关
    • ipv4.dns:DNS 服务器
    • ipv4.methodmanual(静态)或 auto(DHCP)。

二、连接类型详解及配置示例

1. 以太网 (Ethernet)
  • 场景:基础物理网卡配置
  • 关键参数ifname 指定网卡
  • 示例
    nmcli con add type ethernet con-name "eth-static" ifname eth0 \
      ipv4.addresses 192.168.1.100/24 \
      ipv4.gateway 192.168.1.1 \
      ipv4.dns "8.8.8.8" \
      ipv4.method manual
    
2. VLAN 接口
  • 场景:基于物理网卡或 Bond 创建虚拟子网
  • 关键参数dev(父设备)、id(VLAN ID)
  • 示例
    nmcli con add type vlan con-name "vlan10" ifname vlan10 \
      dev eth0 id 10 \
      ipv4.method auto  # 使用 DHCP
    
3. 绑定接口 (Bond)
  • 场景:多网卡聚合提升带宽/冗余
  • 关键参数mode(绑定模式)
  • 模式对比
    模式名称特点
    balance-rr轮询负载均衡,容错
    active-backup主备故障切换
    802.3adLACP动态聚合(需交换机支持)
  • 示例
    nmcli con add type bond con-name "bond0" ifname bond0 \
      mode 802.3ad \
      ipv4.addresses 10.0.0.2/24
    
4. 网桥 (Bridge)
  • 场景:创建虚拟交换机连接 VM/容器
  • 关键参数stp(生成树协议开关)
  • 示例
    nmcli con add type bridge con-name "br0" ifname br0 \
      stp yes \
      ipv4.method auto
    
5. 其他类型
  • Wi-Fi:需 ssidpassword
  • Team:类似 Bond,配置更灵活(如 config '{"runner": {"name": "loadbalance"}}'

三、关键参数解析与技术细节

  • autoconnect yes
    设置开机自动激活连接(默认启用)。
  • 多 IP 与路由配置
    支持逗号分隔的多 IP 和自定义路由:
    ipv4.addresses '192.168.1.100/24, 10.0.0.100/8' \
    ipv4.routes '192.168.2.0/24 via 192.168.1.254'
    
  • 连接与设备的关系
    • 一个设备(如 eth0)可绑定多个连接配置(con-name
    • 同一时间仅一个连接可激活(通过 nmcli con up <con-name> 切换)。

四、配置生命周期管理

  1. 修改配置
    nmcli con modify "eth-static" ipv4.addresses "192.168.1.200/24"
    
  2. 增/删 IP
    nmcli con modify "eth-static" +ipv4.addresses "10.0.0.200/24"  # 增加
    nmcli con modify "eth-static" -ipv4.addresses "10.0.0.200/24"  # 删除
    
  3. 激活/停用
    nmcli con up "eth-static"    # 激活
    nmcli con down "eth-static"  # 停用
    
  4. 删除连接
    nmcli con delete "eth-static"
    

五、高级技巧与注意事项

  • 离线模式生成配置
    无需 NetworkManager 服务,直接生成配置文件:
    nmcli --offline con add type ethernet ... > /etc/NetworkManager/system-connections/eth0.nmconnection
    chmod 600 /etc/NetworkManager/system-connections/eth0.nmconnection
    
  • 配置生效条件
    • 新建设备首个连接:自动激活
    • 后续新增连接:需手动 nmcli con up <con-name>
  • 权限与文件位置
    配置文件保存于 /etc/NetworkManager/system-connections/,需 root 读写权限。

💡 故障排查工具

  • nmcli con show:查看所有连接配置
  • nmcli dev status:检查设备纳管状态
  • journalctl -u NetworkManager:查询服务日志。

通过灵活组合参数,可高效管理从基础以太网到复杂虚拟化网络的全场景需求。



























nmcli connection add type 是 NetworkManager 命令行工具中用于创建网络连接配置的核心命令,其功能强大且灵活,支持多种网络类型。以下从五个维度全面解析该命令的使用方法及技术细节:


一、命令语法结构与核心参数

基础语法

nmcli connection add type <连接类型> [属性键值对]

关键参数

  1. type(必选)
    指定连接类型,如 ethernetvlanbondbridgewifi 等。不同类型需配合特定参数(如 vlan.idbond.mode)。
  2. con-name
    连接配置名称(逻辑标识),如不指定则自动生成(格式:类型-接口名)。示例:con-name "Office-LAN"
  3. ifname
    绑定的物理/虚拟接口名(如 eth0br0)。多数类型必需(除 bridgebond 等聚合类型外)。
  4. IP 配置相关
    • ipv4.addresses:静态 IP 地址(如 192.168.1.100/24
    • ipv4.gateway:默认网关
    • ipv4.dns:DNS 服务器
    • ipv4.methodmanual(静态)或 auto(DHCP)。

二、连接类型详解及配置示例

1. 以太网 (Ethernet)
  • 场景:基础物理网卡配置
  • 关键参数ifname 指定网卡
  • 示例
    nmcli con add type ethernet con-name "eth-static" ifname eth0 \
      ipv4.addresses 192.168.1.100/24 \
      ipv4.gateway 192.168.1.1 \
      ipv4.dns "8.8.8.8" \
      ipv4.method manual
    
2. VLAN 接口
  • 场景:基于物理网卡或 Bond 创建虚拟子网
  • 关键参数dev(父设备)、id(VLAN ID)
  • 示例
    nmcli con add type vlan con-name "vlan10" ifname vlan10 \
      dev eth0 id 10 \
      ipv4.method auto  # 使用 DHCP
    
3. 绑定接口 (Bond)
  • 场景:多网卡聚合提升带宽/冗余
  • 关键参数mode(绑定模式)
  • 模式对比
    模式名称特点
    balance-rr轮询负载均衡,容错
    active-backup主备故障切换
    802.3adLACP动态聚合(需交换机支持)
  • 示例
    nmcli con add type bond con-name "bond0" ifname bond0 \
      mode 802.3ad \
      ipv4.addresses 10.0.0.2/24
    
4. 网桥 (Bridge)
  • 场景:创建虚拟交换机连接 VM/容器
  • 关键参数stp(生成树协议开关)
  • 示例
    nmcli con add type bridge con-name "br0" ifname br0 \
      stp yes \
      ipv4.method auto
    
5. 其他类型
  • Wi-Fi:需 ssidpassword
  • Team:类似 Bond,配置更灵活(如 config '{"runner": {"name": "loadbalance"}}'

三、关键参数解析与技术细节

  • autoconnect yes
    设置开机自动激活连接(默认启用)。
  • 多 IP 与路由配置
    支持逗号分隔的多 IP 和自定义路由:
    ipv4.addresses '192.168.1.100/24, 10.0.0.100/8' \
    ipv4.routes '192.168.2.0/24 via 192.168.1.254'
    
  • 连接与设备的关系
    • 一个设备(如 eth0)可绑定多个连接配置(con-name
    • 同一时间仅一个连接可激活(通过 nmcli con up <con-name> 切换)。

四、配置生命周期管理

  1. 修改配置
    nmcli con modify "eth-static" ipv4.addresses "192.168.1.200/24"
    
  2. 增/删 IP
    nmcli con modify "eth-static" +ipv4.addresses "10.0.0.200/24"  # 增加
    nmcli con modify "eth-static" -ipv4.addresses "10.0.0.200/24"  # 删除
    
  3. 激活/停用
    nmcli con up "eth-static"    # 激活
    nmcli con down "eth-static"  # 停用
    
  4. 删除连接
    nmcli con delete "eth-static"
    

五、高级技巧与注意事项

  • 离线模式生成配置
    无需 NetworkManager 服务,直接生成配置文件:
    nmcli --offline con add type ethernet ... > /etc/NetworkManager/system-connections/eth0.nmconnection
    chmod 600 /etc/NetworkManager/system-connections/eth0.nmconnection
    
  • 配置生效条件
    • 新建设备首个连接:自动激活
    • 后续新增连接:需手动 nmcli con up <con-name>
  • 权限与文件位置
    配置文件保存于 /etc/NetworkManager/system-connections/,需 root 读写权限。

💡 故障排查工具

  • nmcli con show:查看所有连接配置
  • nmcli dev status:检查设备纳管状态
  • journalctl -u NetworkManager:查询服务日志。

通过灵活组合参数,可高效管理从基础以太网到复杂虚拟化网络的全场景需求。



























nmcli connection add type 详解

nmcli connection add type 是 NetworkManager 命令行工具中用于创建各种类型网络连接的核心命令。它允许管理员通过命令行创建、配置和管理各种网络接口类型。下面我将详细解析这个命令的使用方法和各种参数。

命令基本结构

nmcli connection add type <connection-type> [选项]

一、核心参数详解

1. 必需参数

参数说明示例
type指定连接类型type ethernet
con-name连接配置的逻辑名称(唯一标识)con-name office-lan
ifname网络接口的实际设备名ifname eth0

2. 通用可选参数

参数说明示例
autoconnect是否自动连接 (yes/no)autoconnect yes
autoconnect-priority自动连接优先级 (0-999)autoconnect-priority 100
ipv4.methodIPv4 配置方法 (auto/manual/disabled)ipv4.method manual
ipv4.addressesIPv4 地址 (CIDR 格式)ipv4.addresses 192.168.1.100/24
ipv4.gatewayIPv4 默认网关ipv4.gateway 192.168.1.1
ipv4.dnsIPv4 DNS 服务器ipv4.dns "8.8.8.8 8.8.4.4"
ipv6.methodIPv6 配置方法 (auto/ignore/dhcp/manual)ipv6.method auto

二、不同连接类型的专用参数

1. ethernet (以太网)

nmcli connection add type ethernet \
  con-name "office-lan" \
  ifname eth0 \
  ipv4.method manual \
  ipv4.addresses 192.168.1.100/24 \
  ipv4.gateway 192.168.1.1 \
  ipv4.dns "8.8.8.8"

2. bridge (网桥)

专用参数说明示例
bridge.stp启用生成树协议 (yes/no)bridge.stp yes
bridge.priority网桥优先级 (0-65535)bridge.priority 16384
bridge.hello-timeSTP hello 时间 (1-10 秒)bridge.hello-time 2
bridge.max-ageSTP 最大存活时间 (6-40 秒)bridge.max-age 20

示例:

nmcli connection add type bridge \
  con-name "server-bridge" \
  ifname br0 \
  bridge.stp yes \
  ipv4.method manual \
  ipv4.addresses 10.0.0.1/24

3. bond (绑定)

专用参数说明示例
bond.options绑定模式及参数bond.options "mode=802.3ad,miimon=100"
mode绑定模式 (active-backup, balance-rr, 802.3ad 等)包含在 bond.options 中
miimon链路监测间隔 (ms)包含在 bond.options 中

示例:

nmcli connection add type bond \
  con-name "high-availability" \
  ifname bond0 \
  bond.options "mode=active-backup,miimon=100" \
  ipv4.method manual \
  ipv4.addresses 172.16.0.5/24

4. vlan (虚拟局域网)

专用参数说明示例
dev父接口设备dev eth0
vlan.idVLAN ID (1-4094)vlan.id 100
vlan.flagsVLAN 标志 (reorder_hdr, gvrp, loose_binding)vlan.flags reorder_hdr

示例:

nmcli connection add type vlan \
  con-name "vlan100" \
  ifname eth0.100 \
  dev eth0 \
  vlan.id 100 \
  ipv4.method manual \
  ipv4.addresses 192.168.100.10/24

5. bridge-slave (网桥成员)

专用参数说明示例
master所属主连接名称或 UUIDmaster br0
slave-type从属类型 (bridge)slave-type bridge

示例:

nmcli connection add type bridge-slave \
  con-name "bridge-port-eth1" \
  ifname eth1 \
  master br0

6. bond-slave (绑定成员)

专用参数说明示例
master所属主连接名称或 UUIDmaster bond0
slave-type从属类型 (bond)slave-type bond

示例:

nmcli connection add type bond-slave \
  con-name "bond-slave-eth2" \
  ifname eth2 \
  master bond0

三、高级配置选项

1. MTU 配置

nmcli connection add type ethernet \
  con-name "jumbo-frames" \
  ifname eth0 \
  ethernet.mtu 9000

2. MAC 地址克隆

nmcli connection add type ethernet \
  con-name "custom-mac" \
  ifname eth0 \
  ethernet.cloned-mac-address 00:11:22:33:44:55

3. 连接优先级

nmcli connection add type ethernet \
  con-name "primary-connection" \
  ifname eth0 \
  connection.autoconnect-priority 100

4. IPv6 隐私扩展

nmcli connection add type ethernet \
  con-name "ipv6-privacy" \
  ifname eth0 \
  ipv6.addr-gen-mode stable-privacy

四、综合配置示例

复杂场景:绑定 → VLAN → 网桥

# 1. 创建绑定
nmcli connection add type bond \
  con-name "trunk-bond" \
  ifname bond0 \
  bond.options "mode=802.3ad,miimon=100,lacp_rate=fast"

# 2. 添加绑定成员
nmcli connection add type bond-slave \
  con-name "bond-slave-eth1" \
  ifname eth1 \
  master bond0

nmcli connection add type bond-slave \
  con-name "bond-slave-eth2" \
  ifname eth2 \
  master bond0

# 3. 在绑定上创建 VLAN
nmcli connection add type vlan \
  con-name "vlan100" \
  ifname vlan100 \
  dev bond0 \
  vlan.id 100

# 4. 创建网桥
nmcli connection add type bridge \
  con-name "br-vlan100" \
  ifname br100 \
  bridge.stp no

# 5. 将 VLAN 加入网桥
nmcli connection add type bridge-slave \
  con-name "br100-port" \
  ifname vlan100 \
  master br100

# 6. 配置网桥 IP
nmcli connection modify br-vlan100 \
  ipv4.method manual \
  ipv4.addresses 10.100.0.1/24

五、查看和管理连接

1. 查看所有连接

nmcli connection show

2. 查看特定连接详情

nmcli connection show br-vlan100

3. 启动/停止连接

nmcli connection up br-vlan100
nmcli connection down br-vlan100

4. 修改连接配置

nmcli connection modify br-vlan100 ipv4.addresses "10.100.0.2/24"

5. 删除连接

nmcli connection delete br-vlan100

六、注意事项和最佳实践

  1. 命名规范

    • 使用有意义的 con-name:server-bridge, office-vlan100
    • 保持 ifname 标准化:eth0, br0, bond0
  2. 依赖顺序

    • 先创建主连接(网桥、绑定)
    • 再创建从属连接(成员接口)
    # 正确顺序
    nmcli connection add type bond ... # 先
    nmcli connection add type bond-slave ... # 后
    
  3. 配置持久化

    • 所有配置自动保存到 /etc/NetworkManager/system-connections/
    • 使用 nmcli connection save 显式保存
  4. 参数格式

    • 包含空格的参数需要引号:ipv4.dns "8.8.8.8 8.8.4.4"
    • 多个选项用逗号分隔:bond.options "mode=active-backup,miimon=100"
  5. 验证配置

    # 测试配置(不应用)
    nmcli connection add ... --dry-run
    
    # 查看生成的配置文件
    cat /etc/NetworkManager/system-connections/connection-name.nmconnection
    

七、常见错误处理

1. "Device not found"

# 错误:Device 'eth0' not found
# 解决:
ip link show # 验证接口名称
nmcli device status # 查看设备状态

2. "Connection activation failed"

# 查看详细错误信息
nmcli connection show --active
journalctl -u NetworkManager -f

3. "Master connection not found"

# 确保先创建主连接
nmcli connection show | grep master-name

4. "Invalid option"

# 检查参数拼写
nmcli connection add help type bond

八、特殊类型扩展

1. team (组合接口)

nmcli connection add type team \
  con-name "team0" \
  ifname team0 \
  team.config '{"runner": {"name": "activebackup"}}'

2. ip-tunnel (IP 隧道)

nmcli connection add type ip-tunnel \
  con-name "gre-tunnel" \
  ifname gre1 \
  ip-tunnel.mode gre \
  ip-tunnel.local 192.168.1.100 \
  ip-tunnel.remote 203.0.113.5

3. vxlan (虚拟扩展局域网)

nmcli connection add type vxlan \
  con-name "vxlan100" \
  ifname vxlan100 \
  vxlan.id 100 \
  vxlan.local 192.168.1.100 \
  vxlan.remote 203.0.113.10

总结

nmcli connection add type 命令是 NetworkManager 配置的核心,支持创建各种复杂网络配置:

  • 基本类型:ethernet, wifi, bridge, bond, vlan
  • 从属类型:bridge-slave, bond-slave
  • 高级类型:team, ip-tunnel, vxlan

关键要点:

  1. 始终指定 con-nameifname
  2. 按依赖顺序创建连接(先主后从)
  3. 使用 modify 调整现有配置
  4. 通过 show 命令验证配置

掌握这些命令可以高效管理 Linux 网络配置,从简单的以太网连接到复杂的多层网络架构。



























在Linux中使用nmcli配置网络涉及多种技术,包括以太网(Ethernet)、网桥(Bridge)、绑定(Bond)和虚拟局域网(VLAN)。以下是详细步骤和示例:


1. 以太网(Ethernet)配置

静态IP配置
# 创建新连接并配置静态IP
nmcli con add con-name "eth-static" ifname eth0 type ethernet \
  ip4 192.168.1.100/24 gw4 192.168.1.1
nmcli con mod "eth-static" ipv4.dns "8.8.8.8"
nmcli con up "eth-static"
DHCP配置
nmcli con add con-name "eth-dhcp" ifname eth0 type ethernet
nmcli con up "eth-dhcp"

2. 网桥(Bridge)配置

创建网桥并添加物理接口
# 创建网桥(无IP)
nmcli con add con-name br0 ifname br0 type bridge

# 将物理接口eth0加入网桥
nmcli con add con-name br0-slave-eth0 ifname eth0 type bridge-slave master br0

# 启动连接
nmcli con up br0
nmcli con up br0-slave-eth0

# 可选:为网桥分配IP(静态/DHCP)
nmcli con mod br0 ipv4.addresses "192.168.1.200/24"
nmcli con mod br0 ipv4.gateway "192.168.1.1"
nmcli con mod br0 ipv4.method manual
nmcli con up br0

3. 绑定(Bond)配置

创建绑定接口(mode=active-backup)
# 创建绑定接口
nmcli con add con-name bond0 ifname bond0 type bond bond.options "mode=active-backup"

# 添加从属接口(eth1和eth2)
nmcli con add con-name bond0-slave-eth1 ifname eth1 type bond-slave master bond0
nmcli con add con-name bond0-slave-eth2 ifname eth2 type bond-slave master bond0

# 为bond0分配IP(DHCP示例)
nmcli con mod bond0 ipv4.method auto
nmcli con up bond0
常用绑定模式
  • mode=balance-rr:轮询
  • mode=active-backup:主备
  • mode=802.3ad:LACP聚合

4. 虚拟局域网(VLAN)配置

在eth0上创建VLAN ID 10
# 创建VLAN接口(父接口eth0,VLAN ID 10)
nmcli con add con-name vlan10 ifname eth0.10 type vlan dev eth0 id 10

# 配置静态IP
nmcli con mod vlan10 ipv4.addresses "10.0.10.5/24"
nmcli con mod vlan10 ipv4.method manual
nmcli con up vlan10

关键命令

功能命令
列出连接nmcli con show
列出设备nmcli dev status
删除连接nmcli con del <name>
重载配置nmcli con reload

注意事项

  1. 依赖关系
    • 网桥/绑定需先创建主接口,再添加从属接口。
    • VLAN需要指定父接口(如dev eth0)。
  2. 持久化:所有nmcli配置自动保存到/etc/NetworkManager/system-connections/
  3. 冲突处理:确保物理接口(如eth0)未被其他连接占用。
  4. 绑定模式:使用bond.options "mode=..."指定模式(需内核支持)。

通过组合这些组件(如将绑定接口加入网桥,或在VLAN上创建绑定),可构建复杂网络拓扑。



























nmcli connection add type 是 NetworkManager 中用于创建各种类型网络连接的核心命令。下面详细解析其用法和常见类型的配置:

基本语法

nmcli connection add type <连接类型> [选项]

通用参数(适用于所有类型)

参数说明
con-name <名称>指定连接配置名称(推荐自定义)
ifname <接口名>指定网络接口(如 eth0, br0 等)
autoconnect yes/no是否开机自动连接(默认 yes)
ipv4.method manual/auto/disabledIPv4 配置方法(静态/DHCP/禁用)
ipv4.addresses <IP/掩码>静态 IPv4 地址(如 192.168.1.10/24)
ipv4.gateway <网关IP>默认网关
ipv4.dns <DNS服务器>DNS 服务器(多个用空格分隔)
ipv6.method ...IPv6 相关配置(类似 ipv4)

常见类型详解

1. 以太网 (ethernet)
nmcli con add type ethernet \
  con-name "eth-static" \
  ifname eth0 \
  ipv4.method manual \
  ipv4.addresses 192.168.1.100/24 \
  ipv4.gateway 192.168.1.1 \
  ipv4.dns "8.8.8.8 1.1.1.1"
2. 网桥 (bridge)
# 创建网桥主接口
nmcli con add type bridge \
  con-name br0 \
  ifname br0 \
  ipv4.method auto  # 使用DHCP

# 添加物理接口到网桥
nmcli con add type bridge-slave \
  con-name br0-port1 \
  ifname eth0 \
  master br0
3. 绑定接口 (bond)
# 创建绑定接口(模式:active-backup)
nmcli con add type bond \
  con-name bond0 \
  ifname bond0 \
  bond.options "mode=active-backup,miimon=100" \
  ipv4.method manual \
  ipv4.addresses 10.0.0.5/24

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

nmcli con add type bond-slave \
  con-name bond0-eth2 \
  ifname eth2 \
  master bond0
4. VLAN 接口 (vlan)
nmcli con add type vlan \
  con-name vlan10 \
  ifname eth0.10 \
  dev eth0 \         # 父接口
  id 10 \            # VLAN ID
  ipv4.method manual \
  ipv4.addresses 192.168.10.5/24

高级类型示例

组合配置:绑定 + 网桥 + VLAN
# 1. 创建绑定接口
nmcli con add type bond con-name mybond ifname bond0 bond.options "mode=802.3ad"

# 2. 添加物理接口到绑定
nmcli con add type bond-slave con-name bond-eth1 ifname eth1 master mybond
nmcli con add type bond-slave con-name bond-eth2 ifname eth2 master mybond

# 3. 在绑定接口上创建网桥
nmcli con add type bridge con-name br-bond ifname br0 master mybond

# 4. 在网桥上创建VLAN
nmcli con add type vlan con-name br-vlan20 ifname br0.20 dev br0 id 20 \
  ipv4.addresses 10.20.0.5/24

类型特定参数

绑定 (bond) 特有
bond.options "mode=<模式>,<选项>"
  • 常用模式:
    • balance-rr: 轮询
    • active-backup: 主备
    • 802.3ad: LACP 聚合
  • 常用选项:
    • miimon=100: 链路监测间隔(ms)
    • primary=eth1: 指定主接口
网桥 (bridge) 特有
bridge.stp yes/no       # 生成树协议
bridge.priority 32768   # 桥优先级(0-65535)
bridge.vlan-filtering yes # VLAN过滤
VLAN 特有
id <1-4094>            # VLAN ID (必需)
dev <父接口>           # 物理接口名 (必需)
flags <标志>           # 如 reorder_hdr=0

连接管理命令

命令作用
nmcli con show查看所有连接
nmcli con up <名称>激活连接
nmcli con down <名称>停用连接
nmcli con mod <名称> <参数>修改连接
nmcli con del <名称>删除连接

重要注意事项

  1. 依赖顺序

    • 先创建主接口(如 bridge/bond),再创建从属接口
    • 激活顺序:先启动从属接口,再启动主接口
    nmcli con up bond-slave-eth1
    nmcli con up bond0
    
  2. 持久化存储: 所有配置自动保存到 /etc/NetworkManager/system-connections/

  3. 配置冲突处理

    • 使用 ifname 指定物理接口时,会自动停用该接口上的现有连接
    • 通过 nmcli dev status 查看接口占用情况
  4. 连接优先级: 当多个连接可用于同一接口时,使用 connection.autoconnect-priority 控制优先级

  5. 重载配置: 修改系统配置后执行:

    nmcli con reload
    

通过灵活组合这些类型和参数,您可以构建从简单到复杂的各种网络拓扑结构。



























NetworkManager nmcli 网络配置全指南

下面将详细介绍如何使用 nmcli 命令配置以太网卡、网桥、绑定和 VLAN,包含基础配置、高级组合及管理技巧。

一、以太网卡 (Ethernet) 配置

1. 基础配置 (DHCP)

# 创建 DHCP 连接
sudo nmcli con add type ethernet con-name "eth-dhcp" ifname enp1s0 ipv4.method auto

# 激活连接
sudo nmcli con up "eth-dhcp"

2. 静态 IP 配置

sudo nmcli con add type ethernet con-name "eth-static" ifname enp1s0 \
    ipv4.addresses 192.168.1.100/24 \
    ipv4.gateway 192.168.1.1 \
    ipv4.dns "8.8.8.8" \
    ipv4.method manual

3. 多IP地址配置

sudo nmcli con modify "eth-static" +ipv4.addresses "10.0.0.50/24"

二、绑定 (Bond) 配置

1. 创建绑定接口

# 创建绑定接口 (active-backup 模式)
sudo nmcli con add type bond con-name "bond0" ifname bond0 \
    bond.options "mode=active-backup,miimon=100"

# 添加从属接口
sudo nmcli con add type bond-slave ifname enp2s0 master bond0 con-name "bond0-slave1"
sudo nmcli con add type bond-slave ifname enp3s0 master bond0 con-name "bond0-slave2"

2. 绑定模式选择

模式命令参数用途
负载均衡mode=balance-rr轮询分发数据包
主备模式mode=active-backup故障切换
链路聚合mode=802.3adLACP 聚合
广播mode=broadcast所有接口发送所有数据

三、网桥 (Bridge) 配置

1. 基本网桥创建

# 创建网桥
sudo nmcli con add type bridge con-name "br0" ifname br0

# 添加物理接口到网桥
sudo nmcli con add type bridge-slave ifname enp4s0 master br0 con-name "br0-slave"

# 配置网桥IP
sudo nmcli con modify "br0" ipv4.addresses 192.168.1.200/24 ipv4.method manual

2. 高级网桥参数

sudo nmcli con modify "br0" \
    bridge.stp no \          # 禁用生成树协议
    bridge.forward-delay 0 \ # 转发延迟
    bridge.hello-time 2      # STP Hello包间隔

四、虚拟局域网 (VLAN) 配置

1. 基于物理接口的 VLAN

# 在 enp5s0 上创建 VLAN 10
sudo nmcli con add type vlan con-name "vlan10" ifname vlan10 \
    dev enp5s0 id 10 \
    ipv4.addresses 10.10.10.2/24 \
    ipv4.method manual

2. 基于绑定的 VLAN

# 在绑定接口上创建 VLAN
sudo nmcli con add type vlan con-name "bond0-vlan20" ifname vlan20 \
    dev bond0 id 20

五、高级组合配置

1. 绑定 + 网桥 + VLAN

# 1. 创建绑定
sudo nmcli con add type bond con-name "bond1" ifname bond1 mode 802.3ad

# 2. 添加从属接口
sudo nmcli con add type bond-slave ifname enp6s0 master bond1
sudo nmcli con add type bond-slave ifname enp7s0 master bond1

# 3. 在绑定上创建 VLAN
sudo nmcli con add type vlan con-name "vlan-bond" ifname vlan30 dev bond1 id 30

# 4. 创建网桥并添加 VLAN
sudo nmcli con add type bridge con-name "br-vlan" ifname br-vlan
sudo nmcli con add type bridge-slave ifname vlan30 master br-vlan

# 5. 配置网桥IP
sudo nmcli con modify "br-vlan" ipv4.method auto

2. 网桥直接承载 VLAN

# 在网桥上直接创建 VLAN 接口
sudo nmcli con add type vlan con-name "br0-vlan40" ifname vlan40 \
    dev br0 id 40 \
    ipv4.addresses 192.168.40.1/24 \
    ipv4.method manual

六、连接管理命令

1. 查看连接状态

nmcli con show --active       # 查看活动连接
nmcli dev status             # 查看设备状态

2. 连接控制

nmcli con up "bond0"         # 启用连接
nmcli con down "vlan10"      # 禁用连接
nmcli con delete "br0"       # 删除连接

3. 配置重载

nmcli con reload             # 重载所有连接
nmcli con load /etc/NetworkManager/system-connections/br0.nmconnection # 加载特定配置

七、故障排查与优化

1. 常见问题解决

# 查看详细日志
journalctl -u NetworkManager -f

# 检查绑定状态
cat /proc/net/bonding/bond0

# 验证VLAN配置
ip -d link show vlan10

2. 性能优化参数

# 绑定优化
sudo nmcli con modify "bond0" bond.options "mode=802.3ad,xmit_hash_policy=layer3+4,lacp_rate=fast"

# 网桥优化
sudo nmcli con modify "br0" bridge.ageing-time 300 bridge.multicast-snooping 0

3. 持久化配置备份

# 导出所有配置
nmcli con export > nm_backup.conf

# 导入配置
nmcli con import < nm_backup.conf

八、配置示例表

场景命令
简单网桥nmcli con add type bridge con-name br0 ifname br0
nmcli con add type bridge-slave ifname eth0 master br0
带VLAN的绑定nmcli con add type bond con-name bond0 ifname bond0 mode=802.3ad
nmcli con add type vlan con-name vlan-bond dev bond0 id 10
多层虚拟化nmcli con add type vlan con-name vlan10 dev eth0 id 10
nmcli con add type bridge con-name br-vlan ifname br-vlan
nmcli con add type bridge-slave ifname vlan10 master br-vlan

九、最佳实践

  1. 命名规范

    # 物理接口: eth0, enp1s0
    # 绑定接口: bond0, bond-lan
    # VLAN接口: vlan10, vlan-mgmt
    # 网桥接口: br0, br-wan
    
  2. 配置顺序原则

    graph LR
        A[物理接口] --> B[绑定]
        A --> C[VLAN]
        B --> D[绑定上的VLAN]
        C --> E[网桥]
        D --> E
    
  3. 安全增强

    # 禁用IPv6路由器通告
    sudo nmcli con modify "br0" ipv6.accept-ra no
    
    # 启用连接防火墙
    sudo nmcli con modify "eth0" connection.zone public
    

通过掌握这些 nmcli 配置技巧,您可以灵活构建从简单到复杂的各种网络拓扑结构,满足不同场景的网络需求。



























nmcli connection add type 命令详解

nmcli connection add type 是 NetworkManager 中最核心的连接创建命令,用于创建各种类型的网络连接配置。以下是对该命令的全面解析:

一、命令基本结构

nmcli connection add 
    type <connection-type> 
    [connection.id <name>] 
    [ifname <interface-name>] 
    [其他类型特定参数]

二、核心参数说明

1. type - 连接类型(必需)

指定要创建的网络连接类型:

  • ethernet:物理以太网
  • bridge:网桥
  • bond:绑定接口
  • vlan:虚拟局域网
  • bridge-slave:网桥从属接口
  • bond-slave:绑定从属接口
  • team:协作接口
  • vpn:VPN连接
  • wifi:无线网络

2. connection.id - 连接名称(推荐)

  • 作用:逻辑连接名称(配置文件标识)
  • 默认:如果不指定,自动生成 "type-ifname" 格式名
  • 示例connection.id "Office-Network"

3. ifname - 接口名称(必需)

  • 作用:操作系统识别的物理/虚拟接口名
  • 注意:必须与实际存在的接口匹配
  • 示例ifname eth0, ifname br0

三、不同类型配置详解

1. 以太网 (ethernet)

nmcli con add type ethernet 
    con-name "eth-primary" 
    ifname eth0 
    ipv4.method auto       # DHCP
    # ipv4.method manual   # 静态IP
    # ipv4.addresses 192.168.1.100/24
    # ipv4.gateway 192.168.1.1
    # ipv4.dns "8.8.8.8"

2. 网桥 (bridge)

nmcli con add type bridge 
    con-name "main-bridge" 
    ifname br0 
    bridge.stp no          # 禁用生成树协议
    ipv4.method manual 
    ipv4.addresses 10.0.0.1/24

3. 绑定 (bond)

nmcli con add type bond 
    con-name "bond0" 
    ifname bond0 
    bond.options "mode=802.3ad,miimon=100" 
    ipv4.method auto

4. 虚拟局域网 (vlan)

nmcli con add type vlan 
    con-name "vlan-finance" 
    ifname vlan10 
    dev eth0               # 父设备
    id 10                  # VLAN ID
    ipv4.addresses 10.10.10.2/24

5. 网桥从属 (bridge-slave)

nmcli con add type bridge-slave 
    con-name "br-slave-eth1" 
    ifname eth1 
    master br0             # 关联的网桥名称

6. 绑定从属 (bond-slave)

nmcli con add type bond-slave 
    con-name "bond0-slave1" 
    ifname eth1 
    master bond0           # 关联的绑定名称

四、高级参数配置

1. IP 配置参数

ipv4.method <auto|manual|disabled|link-local>
ipv4.addresses <IP/prefix>  # 多个地址用逗号分隔
ipv4.gateway <gateway-ip>
ipv4.dns <dns-ip>           # 多个DNS用逗号分隔
ipv4.dns-search <domain>    # DNS搜索域
ipv4.ignore-auto-dns <yes|no>

2. 网桥专用参数

bridge.stp <yes|no>         # 生成树协议
bridge.priority <0-65535>   # 网桥优先级
bridge.forward-delay <0-30> # 转发延迟(秒)
bridge.hello-time <1-10>    # Hello包间隔
bridge.max-age <6-40>       # 最大消息年龄
bridge.ageing-time <0-1000000> # MAC老化时间(秒)

3. 绑定专用参数

bond.options "mode=<mode>,<key>=<value>,..."
# 模式选项:
#   balance-rr, active-backup, balance-xor, 
#   broadcast, 802.3ad, balance-tlb, balance-alb
# 其他选项:
#   miimon=100, lacp_rate=fast, xmit_hash_policy=layer3+4

五、配置关系图

graph TB
    A[物理网卡] -->|dev| B(VLAN)
    A -->|ifname| C(以太网)
    A -->|master| D[绑定]
    B -->|master| E[网桥]
    D -->|ifname| F[绑定接口]
    F -->|master| E
    E -->|ifname| G[网桥接口]
    
    classDef physical fill:#9cf,stroke:#333;
    classDef virtual fill:#f9c,stroke:#333;
    class A,C physical;
    class B,D,F,E,G virtual;

六、完整配置示例

场景:绑定+网桥+VLAN

# 1. 创建绑定
nmcli con add type bond con-name "bond0" ifname bond0 \
    bond.options "mode=802.3ad,miimon=100"

# 2. 添加从属接口
nmcli con add type bond-slave con-name "bond0-eth1" \
    ifname eth1 master bond0
nmcli con add type bond-slave con-name "bond0-eth2" \
    ifname eth2 master bond0

# 3. 在绑定上创建VLAN
nmcli con add type vlan con-name "vlan-bond" \
    ifname vlan30 dev bond0 id 30

# 4. 创建网桥
nmcli con add type bridge con-name "br-vlan30" \
    ifname br-vlan30 bridge.stp no

# 5. 将VLAN加入网桥
nmcli con add type bridge-slave con-name "br-slave-vlan30" \
    ifname vlan30 master br-vlan30

# 6. 配置网桥IP
nmcli con modify "br-vlan30" \
    ipv4.addresses 192.168.30.1/24 \
    ipv4.method manual

七、连接管理命令

1. 查看连接

nmcli con show                     # 所有连接
nmcli con show <con-name>          # 特定连接详情
nmcli -f GENERAL,IP4 con show      # 特定字段

2. 控制连接状态

nmcli con up <con-name>    # 启用连接
nmcli con down <con-name>  # 禁用连接
nmcli con delete <con-name> # 删除连接

3. 修改连接

nmcli con mod <con-name> <property> <value>
# 示例:添加辅助IP
nmcli con mod "br-vlan30" +ipv4.addresses "10.30.0.1/24"

八、常见错误处理

错误原因解决方案
Error: Connection activation failed: No suitable device found接口不存在检查 ifname 是否正确
Error: Master connection not found依赖连接未创建先创建主连接
Error: bond-slave option is required缺少必要参数检查 master 参数
Error: VLAN connection needs dev and id propertiesVLAN配置不全补全 devid

九、最佳实践

  1. 命名规范

    # 物理连接: eth0-primary
    # 网桥: br-dmz, br-internal
    # VLAN: vlan10-finance
    # 绑定: bond0-lacp
    
  2. 配置顺序

    graph LR
        A[物理接口] --> B[绑定/VLAN]
        B --> C[网桥]
        C --> D[IP配置]
    
  3. 持久化检查

    # 确认配置已保存
    ls /etc/NetworkManager/system-connections/
    
    # 重载配置
    nmcli con reload
    
  4. 批量操作脚本

    #!/bin/bash
    # 创建基础网桥
    nmcli con add type bridge con-name core-bridge ifname br-core
    # 添加物理接口
    nmcli con add type bridge-slave ifname eth0 master core-bridge
    # 配置IP
    nmcli con mod core-bridge ipv4.addresses 10.0.0.1/24 ipv4.method manual
    # 激活
    nmcli con up core-bridge
    

掌握 nmcli connection add type 命令,您可以高效地配置从简单到复杂的各种网络拓扑结构,满足不同场景的网络需求。



























以下是使用 nmcli 配置 Linux 网络组件的详细指南,包含 以太网(Ethernet)网桥(Bridge)绑定(Bond)虚拟网络(VLAN) 的示例命令和说明:


一、配置以太网接口(Ethernet)

1. 查看可用网卡
nmcli device status  # 查看所有网络设备
nmcli connection show  # 查看现有连接配置
2. 配置静态 IP
nmcli connection add type ethernet con-name "eth0-static" ifname eth0 \
  ipv4.addresses 192.168.1.100/24 \
  ipv4.gateway 192.168.1.1 \
  ipv4.dns "8.8.8.8,8.8.4.4" \
  ipv4.method manual
3. 配置 DHCP
nmcli connection add type ethernet con-name "eth0-dhcp" ifname eth0 ipv4.method auto

二、配置网桥(Bridge)

1. 创建网桥并添加从属接口
nmcli connection add type bridge con-name br0 ifname br0 \
  ipv4.addresses 192.168.2.1/24 \
  ipv4.method manual

nmcli connection add type ethernet con-name br0-port1 ifname eth1 master br0
nmcli connection add type ethernet con-name br0-port2 ifname eth2 master br0
2. 启用网桥
nmcli connection up br0
nmcli connection up br0-port1
nmcli connection up br0-port2

三、配置绑定(Bond)

1. 创建绑定接口(以 mode 0 为例)
nmcli connection add type bond con-name bond0 ifname bond0 \
  ipv4.addresses 192.168.3.100/24 \
  ipv4.method manual \
  bond.options "mode=balance-rr,miimon=100"

nmcli connection add type ethernet con-name bond0-slave1 ifname eth3 master bond0
nmcli connection add type ethernet con-name bond0-slave2 ifname eth4 master bond0
2. 常用绑定模式
  • mode=0 (balance-rr): 轮询策略
  • mode=1 (active-backup): 主备模式
  • mode=4 (802.3ad): LACP 动态聚合

四、配置 VLAN

1. 创建 VLAN 接口
nmcli connection add type vlan con-name eth0.100 ifname eth0.100 \
  dev eth0 id 100 \
  ipv4.addresses 192.168.100.1/24 \
  ipv4.method manual
2. 验证 VLAN
ip -d link show eth0.100  # 检查 VLAN 标记

五、通用操作

1. 启用/禁用连接
nmcli connection up <con-name>
nmcli connection down <con-name>
2. 修改配置
nmcli connection modify <con-name> ipv4.dns "8.8.8.8"
nmcli connection reload  # 重新加载配置
3. 删除配置
nmcli connection delete <con-name>

六、验证配置

ip addr show       # 查看接口状态
nmcli connection show <con-name>  # 查看详细配置
ping -I <interface> 8.8.8.8       # 测试连通性

注意事项

  1. 权限问题:使用 sudo 或 root 用户执行命令。
  2. 持久化配置nmcli 的配置默认持久化,重启后生效。
  3. 接口命名:根据实际网卡名称替换 eth0eth1 等。
  4. NetworkManager 版本:确保使用较新版本(≥ 1.14)以支持高级功能。

如果有具体需求(如特定绑定模式或 VLAN ID),可进一步调整参数!



























在 Linux 系统中,使用 nmcli(NetworkManager 命令行工具)可以灵活地配置网络接口,包括以太网(Ethernet)、网桥(Bridge)、绑定(Bonding)和 VLAN(虚拟局域网)。以下是详细的配置方法:


1. 配置以太网(Ethernet)

1.1 查看网络设备状态
nmcli dev status

输出示例:

DEVICE  TYPE      STATE      CONNECTION 
eth0    ethernet  connected  eth0-connection
eth1    ethernet  disconnected
1.2 创建静态 IP 的以太网连接
nmcli con add type ethernet con-name eth0-static ifname eth0 \
ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 \
ipv4.dns 8.8.8.8 ipv4.method manual
  • con-name:连接名称(可自定义)。
  • ifname:物理网卡名称。
  • ipv4.method manual:设置为静态 IP 模式。
1.3 启动连接
nmcli con up eth0-static
1.4 验证配置
nmcli con show eth0-static
ip addr show eth0

2. 配置网桥(Bridge)

2.1 创建网桥接口
nmcli con add type bridge ifname br0 con-name br0
2.2 将物理网卡加入网桥
nmcli con add type bridge-slave ifname eth0 master br0
2.3 为网桥配置 IP 地址
nmcli con modify br0 ipv4.addresses 192.168.1.200/24 \
ipv4.gateway 192.168.1.1 ipv4.dns 8.8.8.8 ipv4.method manual
2.4 启动网桥和从属接口
nmcli con up br0
nmcli con up bridge-slave-eth0
2.5 验证配置
ip addr show br0
brctl show  # 需安装 bridge-utils 工具

3. 配置绑定(Bonding)

3.1 创建 Bond 接口

mode=4(802.3ad/LACP)为例:

nmcli con add type bond ifname bond0 con-name bond0 \
bond.options "mode=4,miimon=100,lacp_rate=1"
  • mode=4:动态链路聚合模式(需要交换机支持 LACP)。
  • miimon=100:链路检测间隔(毫秒)。
  • lacp_rate=1:LACP 协议发送频率(1 表示每秒发送一次)。
3.2 将物理网卡加入 Bond
nmcli con add type bond-slave ifname eth0 master bond0
nmcli con add type bond-slave ifname eth1 master bond0
3.3 为 Bond 接口配置 IP 地址
nmcli con modify bond0 ipv4.addresses 192.168.1.150/24 \
ipv4.gateway 192.168.1.1 ipv4.dns 8.8.8.8 ipv4.method manual
3.4 启动 Bond 接口
nmcli con up bond0
3.5 验证配置
cat /proc/net/bonding/bond0
ip addr show bond0

4. 配置 VLAN(虚拟局域网)

4.1 创建 VLAN 接口

假设主接口为 bond0,VLAN ID 为 100:

nmcli con add type vlan con-name bond0-vlan100 ifname bond0.100 \
dev bond0 vlan-id 100
4.2 为 VLAN 接口配置 IP 地址
nmcli con modify bond0-vlan100 ipv4.addresses 192.168.100.1/24 \
ipv4.gateway 192.168.100.254 ipv4.dns 8.8.8.8 ipv4.method manual
4.3 启动 VLAN 接口
nmcli con up bond0-vlan100
4.4 验证配置
ip addr show bond0.100

5. 注意事项

  1. 服务状态:确保 NetworkManager 服务已启用并运行:

    systemctl enable NetworkManager
    systemctl start NetworkManager
    
  2. 冲突避免:如果系统使用 systemd-networkd 或传统 network 服务,需禁用以避免冲突:

    systemctl stop NetworkManager
    systemctl disable NetworkManager
    
  3. 权限问题:某些操作需要 sudo 权限,例如修改连接或启动接口。

  4. 配置持久化nmcli 的配置会自动保存到 /etc/NetworkManager/system-connections/ 目录下的文件中。

  5. 验证网络:配置完成后,使用 pingtraceroute 测试网络连通性:

    ping 8.8.8.8
    traceroute 8.8.8.8
    

6. 常见问题排查

  • 设备未启用:使用 nmcli dev status 检查设备状态,必要时启用:

    nmcli device set eth0 managed yes
    
  • Bond/VLAN 未生效:检查物理网卡是否正常工作,交换机是否配置了 LACP 或 VLAN Trunk。

  • IP 冲突:使用 arp -anmap 检查 IP 地址是否被占用。

通过以上步骤,你可以使用 nmcli 灵活地配置 Linux 网络接口,满足复杂网络环境的需求。



























以下是使用 Linux NetworkManager 的 nmcli 工具配置以太网卡(Ethernet)、网桥(Bridge)、绑定(Bond)和虚拟网络(VLAN)的详细指南,结合了多篇权威资料的实践方法:


一、以太网卡(Ethernet)配置

1. 静态 IP 配置
# 创建新连接并指定静态 IP
nmcli connection add type ethernet con-name static-eth0 ifname eth0 ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8" ipv4.method manual
# 激活连接
nmcli connection up static-eth0
  • 关键参数
    ipv4.addresses(IP/子网掩码)、ipv4.gateway(网关)、ipv4.dns(DNS)、ipv4.method manual(手动模式)。
2. 动态 IP(DHCP)配置
nmcli connection add type ethernet con-name dhcp-eth0 ifname eth0 ipv4.method auto
nmcli connection up dhcp-eth0
  • 说明ipv4.method auto 启用 DHCP。
3. 修改现有连接
# 修改 IP 和 DNS
nmcli connection modify static-eth0 ipv4.addresses 192.168.1.200/24 ipv4.dns "8.8.4.4"
# 重启生效
nmcli connection down static-eth0 && nmcli connection up static-eth0
  • 注意:修改后需重启连接。

二、网桥(Bridge)配置

1. 创建网桥并添加物理接口
# 创建网桥
nmcli connection add type bridge con-name br0 ifname br0
# 添加物理网卡(如 eth0)到网桥
nmcli connection add type bridge-slave con-name br0-eth0 ifname eth0 master br0
# 激活网桥
nmcli connection up br0
  • 关键参数
    type bridge(网桥类型)、master br0(绑定到网桥)。
2. 为网桥配置静态 IP
nmcli connection modify br0 ipv4.addresses 192.168.1.50/24 ipv4.gateway 192.168.1.1 ipv4.method manual
nmcli connection up br0
  • 说明:IP 需配置在网桥接口而非物理网卡上。

三、绑定(Bond)配置

1. 创建 Bond 接口(Active-Backup 模式)
# 创建 Bond 接口
nmcli connection add type bond con-name bond0 ifname bond0 mode active-backup
# 添加物理网卡(如 eth1、eth2)
nmcli connection add type bond-slave con-name bond0-eth1 ifname eth1 master bond0
nmcli connection add type bond-slave con-name bond0-eth2 ifname eth2 master bond0
# 配置静态 IP 并激活
nmcli connection modify bond0 ipv4.addresses 192.168.1.30/24 ipv4.method manual
nmcli connection up bond0
  • 模式说明
    mode active-backup(主备模式)、balance-rr(轮询)、802.3ad(LACP聚合)。
  • 验证状态cat /proc/net/bonding/bond0

四、虚拟网络(VLAN)配置

1. 创建 VLAN 子接口
# 在 eth0 上创建 VLAN ID 为 100 的子接口
nmcli connection add type vlan con-name vlan100 dev eth0 id 100 ipv4.addresses 192.168.100.10/24 ipv4.method manual
nmcli connection up vlan100
  • 前提条件
    交换机端口需配置为 Trunk 模式,且内核加载 8021q 模块(modprobe 8021q)。
  • 参数解释
    id 指定 VLAN ID,dev eth0 指定父接口。
2. 多 VLAN 批量创建
for vlan in {100..105}; do
    nmcli connection add type vlan con-name eth0.$vlan dev eth0 id $vlan
done
  • 适用场景:批量部署多业务隔离网络。

五、配置检查与故障排查

  1. 查看连接状态
    nmcli connection show --active(活动连接)。
  2. 设备状态
    nmcli device status(设备物理状态)。
  3. 日志分析
    journalctl -u NetworkManager(服务日志)。
  4. 临时恢复
    使用 ip addr adddhclient 临时配置,重启后失效。

六、注意事项

  • 持久化nmcli 配置默认持久化,无需额外保存。
  • 服务依赖:确保 NetworkManager 运行(systemctl enable --now NetworkManager)。
  • 兼容性:部分旧发行版(如 CentOS 6)需手动编辑 /etc/sysconfig/network-scripts/ 配置文件。

以上命令均需 root 权限执行(sudo)。实际使用时替换接口名(如 eth0)、IP、VLAN ID 等参数。更复杂场景(如多网卡绑定策略优化)可参考 [网络聚合配置] 或 [VLAN 高级管理]。



























以下是使用 nmcli 在 Linux 中配置以太网(Ethernet)、网桥(Bridge)、绑定(Bond)和虚拟网络(VLAN)的分步指南:


1. 以太网(Ethernet)配置

静态 IP 配置
# 创建以太网连接(假设接口名为 eth0)
sudo nmcli connection add type ethernet con-name eth0-static ifname eth0 ipv4.method manual ipv4.addresses 192.168.1.10/24 ipv4.gateway 192.168.1.1 ipv4.dns 8.8.8.8
动态 IP(DHCP)配置
sudo nmcli connection add type ethernet con-name eth0-dhcp ifname eth0 ipv4.method auto
启用/禁用连接
sudo nmcli connection up eth0-static
sudo nmcli connection down eth0-static

2. 网桥(Bridge)配置

创建网桥接口(如 br0)
sudo nmcli connection add type bridge con-name br0 ifname br0 ipv4.method manual ipv4.addresses 192.168.1.20/24
将物理接口(如 eth0)添加到网桥
sudo nmcli connection add type ethernet slave-type bridge con-name br0-port1 ifname eth0 master br0
启用网桥
sudo nmcli connection up br0

3. 绑定(Bond)配置

创建绑定接口(如 bond0)
sudo nmcli connection add type bond con-name bond0 ifname bond0 bond.options "mode=active-backup,primary=eth0" ipv4.method manual ipv4.addresses 192.168.1.30/24
将物理接口(如 eth0、eth1)添加到绑定
sudo nmcli connection add type ethernet slave-type bond con-name bond0-port1 ifname eth0 master bond0
sudo nmcli connection add type ethernet slave-type bond con-name bond0-port2 ifname eth1 master bond0
启用绑定接口
sudo nmcli connection up bond0

4. 虚拟网络(VLAN)配置

在物理接口(如 eth0)上创建 VLAN(ID 100)
sudo nmcli connection add type vlan con-name eth0.100 dev eth0 id 100 ipv4.method manual ipv4.addresses 192.168.2.40/24
启用 VLAN 接口
sudo nmcli connection up eth0.100

验证配置

  • 检查所有连接状态:
    nmcli connection show
    
  • 查看网络接口信息:
    ip a
    
  • 测试网络连通性:
    ping 192.168.1.1
    

注意事项

  1. 接口名称:确保替换示例中的接口名(如 eth0, br0)与实际名称一致(可通过 ip a 查看)。
  2. 持久化配置nmcli 的配置默认持久化,重启后无需重新配置。
  3. 冲突管理:若物理接口已存在其他连接,需先删除旧配置:
    nmcli connection delete <old-connection-name>
    

通过上述命令,您可以灵活管理以太网、网桥、绑定和 VLAN 的配置。如需更多选项(如 IPv6、MTU 等),可通过 nmcliman 手册查询详细参数。



























以下是使用 NetworkManager 的 nmcli 工具配置以太网卡、网桥、绑定和 VLAN 的完整指南,涵盖静态 IP、动态 DHCP 和常见网络架构场景。所有配置均持久化,并在重启后生效。


一、基本操作命令

命令说明
nmcli connection show查看所有连接配置
nmcli device status查看网络设备状态
nmcli connection delete <ID>删除指定连接
nmcli connection reload重载配置文件(修改后生效)

二、配置以太网卡(Ethernet)

1. 创建并启用动态 DHCP 连接
sudo nmcli connection add \
  con-name eth-dhcp \
  ifname enp3s0 \
  type ethernet \
  ipv4.method auto
  • con-name eth-dhcp:连接名称(自定义)。
  • ifname enp3s0:物理网卡名称(通过 ip a 查询)。
2. 创建静态 IP 连接
sudo nmcli connection add \
  con-name eth-static \
  ifname enp3s0 \
  type ethernet \
  ipv4.addresses 192.168.1.10/24 \
  ipv4.gateway 192.168.1.1 \
  ipv4.dns "8.8.8.8 8.8.4.4" \
  ipv4.method manual
  • ipv4.addresses:IP地址/子网掩码。
  • ipv4.method manual:手动配置静态 IP。
3. 启用/关闭连接
sudo nmcli connection up eth-static   # 启动
sudo nmcli connection down eth-static # 关闭

三、配置绑定(Bond)

绑定模式(mode)支持:active-backup, balance-tlb, balance-alb, 802.3ad(LACP)等。

1. 创建绑定接口(LACP 模式)
sudo nmcli connection add \
  con-name bond0 \
  ifname bond0 \
  type bond \
  bond.options "mode=802.3ad,miimon=100" \
  ipv4.method auto

# 将物理网卡加入绑定
sudo nmcli connection add \
  con-name bond0-slave1 \
  ifname enp3s0 \
  type bond-slave \
  master bond0

sudo nmcli connection add \
  con-name bond0-slave2 \
  ifname enp4s0 \
  type bond-slave \
  master bond0
  • bond.options:指定绑定参数,如 mode 和链路检测间隔 miimon
2. 验证绑定状态
cat /proc/net/bonding/bond0

四、配置 VLAN

在现有接口(以太网卡、绑定接口)上创建 VLAN 子接口。

1. 在物理网卡上创建 VLAN
sudo nmcli connection add \
  con-name vlan100 \
  ifname enp3s0.100 \
  dev enp3s0 \
  type vlan \
  vlan.id 100 \
  ipv4.method auto
  • dev enp3s0:父接口(物理网卡或绑定接口)。
  • vlan.id 100:VLAN 标签 ID。
2. 在绑定接口上创建 VLAN
sudo nmcli connection add \
  con-name bond0-vlan200 \
  ifname bond0.200 \
  dev bond0 \
  type vlan \
  vlan.id 200 \
  ipv4.method manual \
  ipv4.addresses 10.0.0.10/24

五、配置网桥(Bridge)

1. 创建网桥并绑定物理网卡
# 创建网桥
sudo nmcli connection add \
  con-name br0 \
  ifname br0 \
  type bridge \
  ipv4.method auto

# 将物理网卡加入桥接
sudo nmcli connection add \
  con-name br0-port1 \
  ifname enp3s0 \
  type bridge-slave \
  master br0
2. 绑定 VLAN 到网桥
# 创建 VLAN(假设已在 enp3s0 上创建 vlan100)
sudo nmcli connection add \
  con-name br0-vlan100 \
  ifname vlan100 \
  type bridge-slave \
  master br0

六、复杂架构示例

场景:物理网卡 → Bond → VLAN → Bridge
# 1. 创建 Bond
sudo nmcli connection add con-name bond0 ifname bond0 type bond bond.options "mode=802.3ad"
sudo nmcli connection add con-name bond0-slave1 ifname enp3s0 type bond-slave master bond0
sudo nmcli connection add con-name bond0-slave2 ifname enp4s0 type bond-slave master bond0

# 2. 在 Bond 上创建 VLAN
sudo nmcli connection add con-name vlan200 ifname bond0.200 dev bond0 type vlan vlan.id 200

# 3. 创建网桥并绑定 VLAN
sudo nmcli connection add con-name br0 ifname br0 type bridge ipv4.method auto
sudo nmcli connection add con-name br0-vlan200 ifname vlan200 type bridge-slave master br0

七、验证配置

1. 查看所有连接状态
nmcli connection show
2. 检查桥接和绑定状态
bridge link          # 查看桥接关联的接口
cat /proc/net/bonding/bond0  # 查看绑定接口状态
ip -d link show      # 显示接口详情(包括 VLAN 标签)
3. 测试网络连通性
ping 8.8.8.8         # 测试外网访问

八、配置文件位置

所有连接配置保存至以下目录(重启后自动加载):

/etc/NetworkManager/system-connections/
  • 文件名:如 br0.nmconnection, bond0.nmconnection

通过上述命令,您可以灵活组合以太网卡、绑定、VLAN 和桥接,构建从简单家用网络到企业级复杂拓扑的全场景解决方案。



























下面详细介绍如何使用 Linux NetworkManager 的 nmcli 命令配置以太网卡(Ethernet)、网桥(Bridge)、绑定(Bond)和 VLAN,涵盖基础配置到高级组合配置:


1. 以太网卡 (Ethernet) 配置

基础配置 (DHCP)
# 创建并激活 DHCP 连接
sudo nmcli con add type ethernet con-name eth0-dhcp ifname eth0
sudo nmcli con up eth0-dhcp
静态 IP 配置
# 创建静态 IP 连接
sudo nmcli con add type ethernet con-name eth0-static ifname eth0 \
    ipv4.addresses 192.168.1.100/24 \
    ipv4.gateway 192.168.1.1 \
    ipv4.dns "8.8.8.8,8.8.4.4" \
    ipv4.method manual

# 激活连接
sudo nmcli con up eth0-static

2. 绑定 (Bond) 配置

创建绑定接口 (mode=active-backup)
# 创建绑定主接口
sudo nmcli con add type bond con-name bond0 ifname bond0 \
    bond.options "mode=active-backup,miimon=100"

# 添加从属网卡
sudo nmcli con add type ethernet con-name bond0-slave1 ifname eth1 master bond0
sudo nmcli con add type ethernet con-name bond0-slave2 ifname eth2 master bond0

# 配置绑定IP
sudo nmcli con mod bond0 \
    ipv4.addresses 192.168.1.200/24 \
    ipv4.gateway 192.168.1.1 \
    ipv4.method manual

# 激活所有连接
sudo nmcli con up bond0
sudo nmcli con up bond0-slave1
sudo nmcli con up bond0-slave2
常用绑定模式:
模式参数描述
主备mode=active-backup故障切换
负载均衡mode=balance-rr轮询
广播mode=broadcast所有接口发送
LACPmode=802.3ad需要交换机支持

3. VLAN 配置

在物理接口上创建 VLAN
# 创建 VLAN 100 接口
sudo nmcli con add type vlan con-name eth0.100 ifname eth0.100 \
    dev eth0 id 100

# 配置 VLAN IP
sudo nmcli con mod eth0.100 \
    ipv4.addresses 192.168.100.10/24 \
    ipv4.method manual

# 激活连接
sudo nmcli con up eth0.100
在绑定接口上创建 VLAN
sudo nmcli con add type vlan con-name bond0.200 ifname bond0.200 \
    dev bond0 id 200

4. 网桥 (Bridge) 配置

基础网桥配置
# 创建网桥
sudo nmcli con add type bridge con-name br0 ifname br0

# 添加物理接口到网桥
sudo nmcli con add type bridge-slave con-name br0-eth3 ifname eth3 master br0

# 配置网桥IP
sudo nmcli con mod br0 \
    ipv4.addresses 10.0.0.1/24 \
    ipv4.method manual

# 激活连接
sudo nmcli con up br0
sudo nmcli con up br0-eth3

5. 组合配置示例

场景:绑定 + VLAN + 网桥
# 1. 创建绑定 bond0
sudo nmcli con add type bond con-name bond0 ifname bond0 mode=802.3ad

# 2. 添加从属网卡
sudo nmcli con add type ethernet con-name bond0-slave1 ifname eth1 master bond0
sudo nmcli con add type ethernet con-name bond0-slave2 ifname eth2 master bond0

# 3. 在绑定上创建 VLAN
sudo nmcli con add type vlan con-name bond0.300 ifname bond0.300 dev bond0 id 300

# 4. 创建网桥并添加 VLAN 接口
sudo nmcli con add type bridge con-name br-vlan300 ifname br-vlan300
sudo nmcli con add type bridge-slave con-name br-vlan300-port ifname bond0.300 master br-vlan300

# 5. 配置网桥IP
sudo nmcli con mod br-vlan300 \
    ipv4.addresses 172.16.30.1/24 \
    ipv4.method manual

# 6. 激活所有连接
sudo nmcli con up bond0
sudo nmcli con up bond0-slave1
sudo nmcli con up bond0-slave2
sudo nmcli con up bond0.300
sudo nmcli con up br-vlan300
sudo nmcli con up br-vlan300-port

6. 管理命令

查看连接状态
nmcli con show      # 列出所有连接
nmcli con show -a   # 包括活动连接
查看设备状态
nmcli dev status    # 设备简要状态
nmcli dev show      # 设备详细信息
修改配置
# 修改IP配置
nmcli con mod "eth0-static" ipv4.addresses "192.168.1.150/24"

# 修改绑定选项
nmcli con mod bond0 bond.options "mode=balance-rr,xmit_hash_policy=layer3+4"
删除配置
nmcli con delete bond0.300
nmcli con delete br-vlan300

7. 配置文件位置

所有配置保存在 /etc/NetworkManager/system-connections/

ls -l /etc/NetworkManager/system-connections/
# 典型文件命名:
# - eth0-static.nmconnection
# - bond0.nmconnection
# - bond0.300.nmconnection
# - br-vlan300.nmconnection

8. 高级技巧

连接优先级管理
# 设置连接自动激活优先级
nmcli con mod "eth0-backup" connection.autoconnect-priority -10
绑定监控参数
# 设置监控频率(毫秒)
nmcli con mod bond0 bond.options "miimon=100,updelay=200,downdelay=200"
网桥STP设置
nmcli con mod br0 bridge.stp yes
nmcli con mod br0 bridge.priority 32768
VLAN 重命名
nmcli con mod "bond0.300" connection.interface-name "prod-vlan"

9. 故障排查命令

# 查看绑定状态
cat /proc/net/bonding/bond0

# 查看VLAN配置
cat /proc/net/vlan/config

# 查看网桥信息
bridge link show

# NetworkManager日志
journalctl -u NetworkManager -f

通过掌握这些 nmcli 配置技巧,您可以灵活构建从简单到复杂的网络拓扑结构,满足服务器虚拟化、容器网络和高级网络隔离等需求。



























Linux NetworkManager 网络配置终极指南:nmcli 实战手册

本文提供使用 nmcli 配置以太网卡、网桥、绑定和 VLAN 的完整指南,涵盖基础配置到高级场景,帮助您构建复杂网络拓扑。


一、核心概念与准备

网络组件关系图

graph TD
    A[物理网卡] -->|成员| B(Bond聚合)
    A -->|成员| C(Bridge网桥)
    A -->|基础| D(VLAN)
    B -->|成员| C
    B -->|基础| D
    D -->|成员| C

必备命令

# 查看所有连接
nmcli con show

# 查看设备状态
nmcli dev status

# 查看连接详细信息
nmcli -f all con show "连接名"

# 重载配置
nmcli con reload

二、以太网卡 (Ethernet) 配置

1. 静态IP配置

sudo nmcli con add type ethernet con-name eth0-static ifname enp3s0 \
    ipv4.addresses 192.168.1.100/24 \
    ipv4.gateway 192.168.1.1 \
    ipv4.dns "8.8.8.8 8.8.4.4" \
    ipv4.method manual

2. DHCP配置

sudo nmcli con add type ethernet con-name eth0-dhcp ifname enp3s0 \
    ipv4.method auto

3. 修改现有连接

# 添加第二个IP
sudo nmcli con modify eth0-static +ipv4.addresses 10.0.0.100/24

# 更改DNS
sudo nmcli con modify eth0-static ipv4.dns "1.1.1.1 9.9.9.9"

# 应用更改
sudo nmcli con down eth0-static && sudo nmcli con up eth0-static

三、绑定 (Bond) 配置

1. 创建活动备份模式绑定

# 创建绑定接口
sudo nmcli con add type bond con-name bond0 ifname bond0 \
    bond.options "mode=active-backup,primary=enp3s0" \
    ipv4.method manual \
    ipv4.addresses 192.168.1.50/24

# 添加成员接口
sudo nmcli con add type bond-slave ifname enp3s0 master bond0 con-name bond0-slave1
sudo nmcli con add type bond-slave ifname enp4s0 master bond0 con-name bond0-slave2

# 激活连接
sudo nmcli con up bond0
sudo nmcli con up bond0-slave1
sudo nmcli con up bond0-slave2

2. 创建LACP聚合 (802.3ad)

sudo nmcli con add type bond con-name bond-lacp ifname bond1 \
    bond.options "mode=802.3ad,miimon=100,lacp_rate=fast,xmit_hash_policy=layer3+4" \
    ipv4.method auto

3. 绑定模式对比

模式命令参数适用场景
负载均衡 (balance-rr)mode=balance-rr高吞吐量文件传输
活动备份 (active-backup)mode=active-backup高可用性网络
LACP (802.3ad)mode=802.3ad交换机支持的聚合链路
自适应传输 (balance-tlb)mode=balance-tlb智能负载均衡,无需交换机支持

四、网桥 (Bridge) 配置

1. 基础网桥配置

# 创建网桥
sudo nmcli con add type bridge con-name br0 ifname br0 \
    ipv4.addresses 192.168.1.200/24 \
    ipv4.gateway 192.168.1.1 \
    ipv4.method manual

# 添加物理接口到网桥
sudo nmcli con add type bridge-slave con-name br0-slave ifname enp3s0 master br0

# 添加绑定接口到网桥
sudo nmcli con add type bridge-slave con-name br0-bond-slave ifname bond0 master br0

# 激活连接
sudo nmcli con up br0

2. 高级网桥参数

# 禁用STP
sudo nmcli con modify br0 bridge.stp no

# 设置转发延迟
sudo nmcli con modify br0 bridge.forward-delay 0

# 启用VLAN过滤
sudo nmcli con modify br0 bridge.vlan-filtering yes

五、虚拟局域网 (VLAN) 配置

1. 基于物理接口的VLAN

# 创建VLAN 10
sudo nmcli con add type vlan con-name vlan10 ifname enp3s0.10 dev enp3s0 id 10 \
    ipv4.addresses 10.10.10.1/24 \
    ipv4.method manual

2. 基于绑定的VLAN

# 在bond0上创建VLAN 20
sudo nmcli con add type vlan con-name bond0.20 ifname bond0.20 dev bond0 id 20 \
    ipv4.method disabled

3. 基于网桥的VLAN

# 在br0网桥上创建VLAN 30
sudo nmcli con add type vlan con-name br0.30 ifname br0.30 dev br0 id 30 \
    ipv4.addresses 10.30.30.1/24 \
    ipv4.method manual

4. VLAN高级选项

# 设置VLAN标志
sudo nmcli con modify vlan10 vlan.flags reorder_hdr

# 配置QoS映射
sudo nmcli con modify vlan10 vlan.ingress-qos-map "0:4 1:6"

六、综合配置示例

企业级网络拓扑

graph TD
    enp3s0 --> bond0
    enp4s0 --> bond0
    bond0 --> br0
    br0 --> vlan10
    br0 --> vlan20
    vlan10 --> br-vm
    vlan20 --> br-container

配置命令:

# 1. 创建绑定
sudo nmcli con add type bond con-name bond0 ifname bond0 bond.options "mode=802.3ad"

# 2. 添加成员
sudo nmcli con add type bond-slave ifname enp3s0 master bond0
sudo nmcli con add type bond-slave ifname enp4s0 master bond0

# 3. 创建核心网桥
sudo nmcli con add type bridge con-name br0 ifname br0

# 4. 绑定到网桥
sudo nmcli con add type bridge-slave ifname bond0 master br0

# 5. 在网桥上创建VLAN
sudo nmcli con add type vlan con-name br0.10 ifname br0.10 dev br0 id 10
sudo nmcli con add type vlan con-name br0.20 ifname br0.20 dev br0 id 20

# 6. 为虚拟机创建VLAN10网桥
sudo nmcli con add type bridge con-name br-vm ifname br-vm
sudo nmcli con add type bridge-slave ifname br0.10 master br-vm
sudo nmcli con modify br-vm ipv4.method manual ipv4.addresses 10.10.10.1/24

# 7. 为容器创建VLAN20网桥
sudo nmcli con add type bridge con-name br-container ifname br-container
sudo nmcli con add type bridge-slave ifname br0.20 master br-container
sudo nmcli con modify br-container ipv4.method manual ipv4.addresses 10.20.20.1/24

# 激活所有连接
for conn in $(nmcli -g NAME con show | grep -v '^lo'); do
  sudo nmcli con up "$conn"
done

七、维护与故障排除

1. 配置文件位置

所有配置存储在:

/etc/NetworkManager/system-connections/
  ├── bond0.nmconnection
  ├── br0.nmconnection
  ├── br0.10.nmconnection
  └── br-vm.nmconnection

2. 状态检查命令

# 绑定状态
cat /proc/net/bonding/bond0

# 网桥状态
bridge link show

# VLAN状态
ip -d link show | grep vlan

# 网络统计
nmtui-connect  # 图形化工具

3. 常见问题解决

问题:VLAN流量不通

# 检查VLAN过滤
bridge vlan show

# 临时禁用防火墙
sudo nmcli con modify br0 connection.zone trusted

问题:绑定接口不活跃

# 检查成员状态
nmcli dev status | grep 'bond-slave'

# 强制重新连接
sudo nmcli dev disconnect enp3s0 && sudo nmcli dev connect enp3s0

问题:配置不生效

# 查看日志
journalctl -u NetworkManager -f

# 完全重载
sudo systemctl restart NetworkManager

八、最佳实践

  1. 命名规范

    # 连接命名模板
    类型.用途.序号  # 如:bond.data, br-vm, vlan.mgmt
    
  2. 持久化配置

    # 备份配置
    sudo tar czf ~/nm-backup-$(date +%F).tar.gz /etc/NetworkManager/system-connections/
    
  3. 性能优化

    # 禁用IPv6(如果不使用)
    sudo nmcli con modify bond0 ipv6.method ignore
    
    # 增大传输队列
    sudo nmcli con modify bond0 ethtool.ring-rx 4096 ethtool.ring-tx 4096
    
  4. 安全加固

    # 禁用MAC地址学习
    sudo nmcli con modify br0 bridge.disable-mac-learning yes
    
    # 限制网桥流量
    sudo nmcli con modify br0 bridge.multicast-querier no
    

提示:生产环境变更前,先在测试环境验证配置。使用 nmcli con edit <连接名> 进入交互式编辑模式进行复杂配置。

通过掌握这些 nmcli 命令,您可以高效配置从简单桌面网络到复杂数据中心网络的各种拓扑结构。



























在 Linux 中使用 NetworkManager 的 nmcli 命令配置以太网卡、网桥、绑定和 VLAN 的完整指南如下:


一、核心概念与关系

graph TD
    A[物理网卡] --> B(Bond)
    A --> C(Bridge)
    B --> D(VLAN)
    C --> E(VLAN)
    D --> F(Bridge)
    E --> G[虚拟机]
  • Ethernet:物理网络接口
  • Bond:多个物理接口聚合(链路聚合)
  • Bridge:二层网络桥接设备
  • VLAN:虚拟局域网(802.1Q)

二、配置命令模板

1. 以太网卡 (Ethernet)
# 静态 IP
sudo nmcli con add type ethernet con-name eth-static ifname enp3s0 \
  ipv4.addresses 192.168.1.100/24 \
  ipv4.gateway 192.168.1.1 \
  ipv4.dns "8.8.8.8" \
  ipv4.method manual

# DHCP
sudo nmcli con add type ethernet con-name eth-dhcp ifname enp3s0 \
  ipv4.method auto
2. 绑定 (Bond)
# 创建 bond0 (mode=802.3ad)
sudo nmcli con add type bond con-name bond0 ifname bond0 \
  bond.options "mode=802.3ad,miimon=100,lacp-rate=fast"

# 添加物理接口到 bond
sudo nmcli con add type bond-slave con-name bond0-slave1 ifname enp3s0 master bond0
sudo nmcli con add type bond-slave con-name bond0-slave2 ifname enp4s0 master bond0

# 配置 IP
sudo nmcli con modify bond0 ipv4.addresses 192.168.1.200/24
sudo nmcli con modify bond0 ipv4.method manual
3. 网桥 (Bridge)
# 创建桥接
sudo nmcli con add type bridge con-name br0 ifname br0

# 添加物理接口到桥接
sudo nmcli con add type bridge-slave con-name br0-port ifname enp3s0 master br0

# 配置 IP (可选)
sudo nmcli con modify br0 ipv4.method auto  # DHCP
# 或静态 IP
sudo nmcli con modify br0 ipv4.addresses 10.0.0.1/24
4. 虚拟网络 (VLAN)
# 在物理接口上创建 VLAN
sudo nmcli con add type vlan con-name vlan100 dev enp3s0 id 100 ifname vlan100 \
  ipv4.addresses 192.168.100.10/24 \
  ipv4.method manual

# 在绑定上创建 VLAN
sudo nmcli con add type vlan con-name bond0-vlan200 dev bond0 id 200 ifname vlan200

# 在桥接上创建 VLAN
sudo nmcli con add type vlan con-name br0-vlan300 dev br0 id 300 ifname vlan300

三、组合配置示例

场景 1:物理接口 → VLAN → Bridge
# 1. 在物理接口上创建 VLAN
sudo nmcli con add type vlan con-name enp3s0-vlan100 dev enp3s0 id 100 ifname vlan100

# 2. 创建桥接
sudo nmcli con add type bridge con-name br-vlan100 ifname br100

# 3. 将 VLAN 接口加入桥接
sudo nmcli con add type bridge-slave con-name br100-port ifname vlan100 master br100

# 4. 激活所有连接
sudo nmcli con up enp3s0-vlan100
sudo nmcli con up br-vlan100
场景 2:物理接口 → Bond → Bridge → VLAN
# 1. 创建绑定
sudo nmcli con add type bond con-name bond0 ifname bond0 bond.options "mode=active-backup"

# 2. 添加物理接口到绑定
sudo nmcli con add type bond-slave con-name bond0-slave1 ifname enp3s0 master bond0
sudo nmcli con add type bond-slave con-name bond0-slave2 ifname enp4s0 master bond0

# 3. 在绑定上创建桥接
sudo nmcli con add type bridge con-name br-bond ifname br-bond0

# 4. 将绑定加入桥接
sudo nmcli con add type bridge-slave con-name br-bond-port ifname bond0 master br-bond0

# 5. 在桥接上创建 VLAN
sudo nmcli con add type vlan con-name br-bond-vlan200 dev br-bond0 id 200 ifname vlan200

# 6. 激活
sudo nmcli con up bond0-slave1
sudo nmcli con up bond0-slave2
sudo nmcli con up bond0
sudo nmcli con up br-bond
sudo nmcli con up br-bond-vlan200

四、管理命令

1. 查看配置
# 列出所有连接
nmcli con show

# 查看设备状态
nmcli device status

# 查看详细配置
nmcli -p con show "eth-static"
2. 修改配置
# 修改 IP
sudo nmcli con modify "eth-static" ipv4.addresses "192.168.1.150/24"

# 添加 DNS
sudo nmcli con modify "eth-static" +ipv4.dns "1.1.1.1"

# 更改 VLAN ID
sudo nmcli con modify "vlan100" vlan.id 150
3. 删除配置
# 删除连接
sudo nmcli con delete "vlan100"

# 删除设备(谨慎使用)
sudo nmcli device delete enp3s0
4. 连接控制
# 激活连接
sudo nmcli con up "br0"

# 关闭连接
sudo nmcli con down "eth-static"

# 重新加载配置
sudo nmcli con reload

五、高级配置选项

1. Bonding 模式
模式命令参数说明
负载均衡mode=802.3adLACP 动态聚合
主备模式mode=active-backup故障切换
广播mode=broadcast所有接口传输
轮询mode=round-robin循环发送
sudo nmcli con modify bond0 bond.options "mode=802.3ad,xmit_hash_policy=layer3+4"
2. 桥接参数
sudo nmcli con modify br0 bridge.stp yes       # 启用生成树
sudo nmcli con modify br0 bridge.priority 16384 # 设置优先级
sudo nmcli con modify br0 bridge.forward-delay 4 # 转发延迟(秒)
3. VLAN 参数
sudo nmcli con modify vlan100 vlan.flags 1   # 启用 reorder_hdr
sudo nmcli con modify vlan100 ethernet.mtu 9000 # 设置 MTU
4. QoS 配置
# 设置带宽限制
sudo nmcli con modify br0 tc.qdiscs "root pfifo_fast"
sudo nmcli con modify br0 tc.filters "parent 1: protocol ip prio 10 u32 match ip src 192.168.1.0/24 police rate 100mbit burst 10k"

六、持久化与恢复

配置文件位置
/etc/NetworkManager/system-connections/
  • 每个连接对应一个 .nmconnection 文件
  • 格式:INI 风格
备份与恢复
# 备份配置
sudo cp -r /etc/NetworkManager/system-connections/ ~/nm-backup

# 恢复配置
sudo cp ~/nm-backup/* /etc/NetworkManager/system-connections/
sudo nmcli con reload
重置网络
# 删除所有自定义配置
sudo rm /etc/NetworkManager/system-connections/*

# 重启 NetworkManager
sudo systemctl restart NetworkManager

七、故障排除

1. 诊断工具
# 查看日志
journalctl -u NetworkManager -f

# 测试连通性
nmcli networking connectivity check

# 详细调试
sudo NM_LOG_LEVEL=DEBUG /usr/sbin/NetworkManager
2. 常见问题解决
  • VLAN 不通

    # 检查交换机 Trunk 配置
    # 启用混杂模式
    sudo nmcli con modify enp3s0 ethernet.accept-all-mac-addresses 1
    
  • Bond 不聚合

    # 检查两端模式是否匹配
    sudo cat /proc/net/bonding/bond0
    
    # 更新驱动
    sudo ethtool -i enp3s0 | grep driver
    
  • Bridge 无转发

    # 检查内核转发
    sysctl net.ipv4.ip_forward
    sudo nmcli con modify br0 ipv4.never-default no
    

八、最佳实践

  1. 命名规范

    • 物理接口:enp3s0, eth0
    • Bond:bond0, bond-mgmt
    • Bridge:br0, br-wan
    • VLAN:vlan100, vlan200-mgmt
  2. 安全建议

    # 禁用未使用的协议
    sudo nmcli con modify eth-static ipv6.method disabled
    
    # 启用 MAC 地址过滤
    sudo nmcli con modify br0 bridge.mac-address-filtering 1
    
  3. 性能优化

    # 开启巨帧
    sudo nmcli con modify bond0 ethernet.mtu 9000
    
    # 禁用 STP(小型网络)
    sudo nmcli con modify br0 bridge.stp no
    

通过 nmcli 可以构建从简单到复杂的各种网络拓扑。关键是根据需求选择合适的组合方式,并遵循配置层级关系(物理接口 → Bond → VLAN → Bridge)。生产环境中建议先在小范围测试配置方案。



























nmcli connection add 是 NetworkManager 中用于创建新连接配置的核心命令。下面详细解析该命令的用法、参数和实际应用场景:


基本语法

nmcli connection add [通用选项] [类型特定选项]

通用连接选项

这些选项适用于所有连接类型:

选项描述示例
type <类型>必填,指定连接类型
(ethernet, bridge, bond, vlan, team, vpn 等)
type ethernet
con-name <名称>必填,连接配置名称(自定义标识)con-name "Server-LAN"
ifname <接口>必填,绑定的网络接口名称ifname enp3s0
autoconnect <yes/no>是否自动连接(默认 yes)autoconnect yes
save <yes/no>是否保存配置(默认 yes)save yes
--temporary创建临时连接(重启后消失)nmcli --temporary ...
master <主连接>指定主连接(用于从属接口)master br0

类型特定选项

根据不同的连接类型,需使用特定参数:

1. 以太网 (ethernet)
nmcli con add type ethernet \
    con-name "eth-static" \
    ifname enp3s0 \
    ipv4.method manual \
    ipv4.addresses 192.168.1.10/24 \
    ipv4.gateway 192.168.1.1 \
    ipv4.dns "8.8.8.8,8.8.4.4" \
    ipv6.method disabled
2. 网桥 (bridge)
# 创建网桥
nmcli con add type bridge \
    con-name br0 \
    ifname br0 \
    stp yes \
    priority 32768 \
    ipv4.method manual \
    ipv4.addresses 10.0.0.1/24

# 添加网桥从接口
nmcli con add type bridge-slave \
    con-name br0-port1 \
    ifname enp3s0 \
    master br0
3. 绑定 (bond)
# 创建绑定接口
nmcli con add type bond \
    con-name bond0 \
    ifname bond0 \
    mode active-backup \
    miimon 100 \
    primary enp3s0 \
    ipv4.method auto

# 添加绑定从接口
nmcli con add type ethernet \
    con-name bond0-slave1 \
    ifname enp3s0 \
    master bond0

nmcli con add type ethernet \
    con-name bond0-slave2 \
    ifname enp4s0 \
    master bond0
4. VLAN
# 在物理接口上创建 VLAN
nmcli con add type vlan \
    con-name vlan100 \
    ifname vlan100 \
    dev enp3s0 \
    id 100 \
    ipv4.method manual \
    ipv4.addresses 192.168.100.5/24

# 在绑定接口上创建 VLAN
nmcli con add type vlan \
    con-name bond0.200 \
    ifname vlan200 \
    dev bond0 \
    id 200

IP 配置选项

所有连接类型通用的 IP 设置:

选项描述示例
ipv4.method <manual/auto/disabled>IPv4 配置方法ipv4.method manual
ipv4.addresses <IP/前缀>IPv4 地址(支持多个)ipv4.addresses "192.168.1.10/24, 10.0.0.1/24"
ipv4.gateway <网关IP>默认网关ipv4.gateway 192.168.1.1
ipv4.dns <DNS服务器>DNS 服务器(支持多个)ipv4.dns "8.8.8.8, 1.1.1.1"
ipv4.routes <路由>自定义路由ipv4.routes "10.8.0.0/24 192.168.1.254"
ipv6.method <manual/auto/ignore>IPv6 配置方法ipv6.method auto

高级用法示例

组合配置:绑定 + VLAN + 网桥
# 1. 创建绑定
nmcli con add type bond con-name bond0 ifname bond0 mode=802.3ad

# 2. 添加从接口
nmcli con add type ethernet con-name bond0-slave1 ifname enp3s0 master bond0
nmcli con add type ethernet con-name bond0-slave2 ifname enp4s0 master bond0

# 3. 在绑定上创建 VLAN
nmcli con add type vlan con-name bond0.300 ifname vlan300 dev bond0 id 300

# 4. 创建网桥并添加 VLAN
nmcli con add type bridge con-name br300 ifname br300
nmcli con add type bridge-slave con-name br300-port ifname vlan300 master br300

# 5. 配置网桥 IP
nmcli con mod br300 ipv4.addresses 172.16.30.1/24 ipv4.method manual
带优先级的 DHCP 回退配置
nmcli con add type ethernet \
    con-name "eth-primary" \
    ifname enp5s0 \
    ipv4.method auto \
    connection.autoconnect-priority 100  # 高优先级

nmcli con add type ethernet \
    con-name "eth-backup" \
    ifname enp6s0 \
    ipv4.method auto \
    connection.autoconnect-priority 50   # 低优先级

连接管理命令

创建后管理连接:

# 激活连接
nmcli con up "eth-static"

# 停用连接
nmcli con down "eth-static"

# 修改连接
nmcli con mod "eth-static" ipv4.dns "9.9.9.9"

# 删除连接
nmcli con del "eth-static"

重要注意事项

  1. 命名规范

    • con-name 是配置标识,可自定义
    • ifname 必须与实际接口名匹配(物理接口)或符合命名惯例(虚拟接口)
  2. 依赖关系

    • 从属接口(如 bridge-slave, bond-slave)需在创建主接口后添加
    • VLAN 需要指定有效的 dev(父接口)
  3. 配置存储

    • 默认保存在 /etc/NetworkManager/system-connections/
    • 使用 --temporary 创建临时内存配置
  4. 冲突处理

    • 避免多个连接绑定同一接口
    • 使用 nmcli con show --active 检查冲突
  5. 原子操作

    • 单个 nmcli con add 命令是原子的
    • 复杂配置需按顺序执行多个命令

调试技巧

# 1. 显示完整命令帮助
nmcli con add help

# 2. 查看特定类型帮助
nmcli con add type vlan help

# 3. 预览生成的配置
nmcli --offline con add type bridge ... > bridge.nmconnection

# 4. 检查日志
journalctl -u NetworkManager -f

# 5. 验证配置
nmcli -p con show "br0"

掌握 nmcli connection add 的用法,可以高效配置从简单到复杂的各种网络场景,是 Linux 网络管理的核心技能之一。



























nmcli connection add 命令详解

nmcli connection add 是 NetworkManager 中最核心的命令之一,用于创建各种类型的网络连接配置。它提供了灵活的参数系统,可以配置从简单的以太网连接到复杂的虚拟网络拓扑。

一、命令基本结构

nmcli connection add 
    [connection.property value]... 
    [type <type>] 
    [ifname <interface>] 
    [con-name <name>] 
    [其他类型特定参数]

二、核心参数详解

1. 通用参数

参数必选描述示例
type连接类型type ethernet, type bridge
con-name连接名称(配置文件标识)con-name "Office-LAN"
ifname网络接口名称ifname eth0, ifname br0
autoconnect是否自动连接autoconnect yes
save是否保存配置save yes (默认)

2. IP 配置参数

参数描述示例
ipv4.methodIPv4 配置方法auto (DHCP), manual, disabled
ipv4.addressesIPv4 地址192.168.1.100/24
ipv4.gatewayIPv4 网关192.168.1.1
ipv4.dnsDNS 服务器8.8.8.8,8.8.4.4
ipv4.dns-searchDNS 搜索域example.com
ipv6.methodIPv6 配置方法auto, dhcp, manual, ignore

三、不同连接类型的专用参数

1. 以太网 (ethernet)

nmcli con add type ethernet 
    con-name "eth-primary" 
    ifname eth0 
    ipv4.method auto

2. 网桥 (bridge)

参数描述默认值
bridge.stp启用生成树协议yes
bridge.priority网桥优先级32768
bridge.forward-delay转发延迟(秒)2
bridge.hello-timeHello包间隔(秒)2
nmcli con add type bridge 
    con-name "main-bridge" 
    ifname br0 
    bridge.stp no

3. 绑定 (bond)

参数描述示例值
bond.options绑定选项mode=802.3ad,miimon=100
bond.mode绑定模式balance-rr, active-backup
nmcli con add type bond 
    con-name "bond0" 
    ifname bond0 
    bond.options "mode=802.3ad,miimon=100"

4. VLAN (vlan)

参数描述必选
dev父接口
idVLAN ID
flagsVLAN 标志
nmcli con add type vlan 
    con-name "vlan10" 
    ifname vlan10 
    dev eth0 
    id 10

5. 网桥从属 (bridge-slave)

参数描述必选
master主网桥名称
priority端口优先级
nmcli con add type bridge-slave 
    con-name "br-slave-eth1" 
    ifname eth1 
    master br0

6. 绑定从属 (bond-slave)

参数描述必选
master主绑定名称
queue-id队列ID
nmcli con add type bond-slave 
    con-name "bond0-slave1" 
    ifname eth1 
    master bond0

四、高级配置技巧

1. 多参数组合

nmcli con add type bridge 
    con-name "secure-bridge" 
    ifname br-sec 
    bridge.stp no 
    bridge.forward-delay 0 
    ipv4.method manual 
    ipv4.addresses 10.10.10.1/24 
    ipv4.gateway 10.10.10.254 
    ipv4.dns "192.168.1.1"

2. 批量操作

# 创建绑定
nmcli con add type bond con-name bond0 ifname bond0 bond.options "mode=active-backup"

# 添加两个从属接口
for i in {1..2}; do
  nmcli con add type bond-slave con-name "bond0-slave$i" ifname eth$i master bond0
done

3. 连接克隆

# 克隆现有连接
nmcli con clone "Office-WiFi" "Home-WiFi"

# 修改克隆连接
nmcli con mod "Home-WiFi" wifi.ssid "HomeNetwork"

五、配置关系图

graph LR
    A[物理网卡] -->|bridge-slave| B(网桥)
    A -->|bond-slave| C(绑定)
    C -->|vlan| D[VLAN接口]
    D -->|bridge-slave| B
    B -->|IP配置| E[网络访问]
    
    classDef physical fill:#9cf,stroke:#333;
    classDef virtual fill:#f9c,stroke:#333;
    class A physical;
    class B,C,D virtual;

六、完整配置示例

企业级网络配置

# 1. 创建绑定接口
nmcli con add type bond con-name "core-bond" ifname bond0 \
    bond.options "mode=802.3ad,miimon=100,lacp_rate=fast"

# 2. 添加物理网卡到绑定
nmcli con add type bond-slave con-name "bond-slave1" ifname eth1 master bond0
nmcli con add type bond-slave con-name "bond-slave2" ifname eth2 master bond0

# 3. 在绑定上创建VLAN
nmcli con add type vlan con-name "vlan-mgmt" ifname vlan10 dev bond0 id 10
nmcli con add type vlan con-name "vlan-data" ifname vlan20 dev bond0 id 20

# 4. 创建管理网桥
nmcli con add type bridge con-name "br-mgmt" ifname br-mgmt \
    ipv4.method manual \
    ipv4.addresses 10.10.10.1/24 \
    bridge.stp no

# 5. 将管理VLAN加入网桥
nmcli con add type bridge-slave con-name "br-slave-mgmt" \
    ifname vlan10 master br-mgmt

# 6. 创建数据网桥
nmcli con add type bridge con-name "br-data" ifname br-data \
    ipv4.method disabled \
    bridge.stp no

# 7. 将数据VLAN加入网桥
nmcli con add type bridge-slave con-name "br-slave-data" \
    ifname vlan20 master br-data

七、连接管理

1. 查看连接

nmcli con show                     # 所有连接
nmcli con show "br-mgmt"           # 特定连接详情
nmcli -f name,type,device con show # 特定字段

2. 控制连接状态

nmcli con up "br-mgmt"     # 启用连接
nmcli con down vlan-data   # 禁用连接
nmcli con reload           # 重载配置

3. 修改连接

nmcli con mod "br-mgmt" ipv4.dns "10.10.10.53"  # 修改DNS
nmcli con mod bond0 +bond.options "xmit_hash_policy=layer3+4" # 添加选项

八、故障排查

常见错误及解决

错误信息原因解决方案
Error: Connection activation failed: No suitable device found接口不存在检查 ifname 是否正确
Error: Master connection not found依赖连接未创建先创建主连接
Error: bond-slave option is required缺少必要参数检查 master 参数
Error: VLAN connection needs dev and id propertiesVLAN配置不全补全 devid

调试命令

# 查看详细日志
journalctl -u NetworkManager -f

# 检查连接配置文件
ls -l /etc/NetworkManager/system-connections/

# 测试配置语法
nmcli con add --dry-run type bridge con-name test ifname test-br

九、最佳实践

  1. 命名规范

    # 使用描述性名称
    con-name "br-dmz" 
    con-name "vlan30-finance"
    
  2. 配置顺序

    graph TB
        A[物理接口] --> B[绑定/VLAN]
        B --> C[网桥]
        C --> D[IP配置]
    
  3. 持久化备份

    # 导出所有配置
    nmcli con export > nm_backup.nmconnection
    
    # 导入配置
    nmcli con import < nm_backup.nmconnection
    
  4. 批量操作脚本

    #!/bin/bash
    # 创建基础网络配置
    interfaces=(eth1 eth2)
    for iface in "${interfaces[@]}"; do
      nmcli con add type ethernet con-name "$iface" ifname "$iface" autoconnect no
    done
    
  5. 安全增强

    # 禁用IPv6路由器通告
    nmcli con mod "br0" ipv6.accept-ra no
    
    # 限制管理访问
    nmcli con mod "br-mgmt" connection.permissions "user:admin"
    

通过掌握 nmcli connection add 命令,您可以高效地配置从简单到复杂的各种网络拓扑结构,实现灵活可靠的网络管理。



























nmcli connection add 命令详解

nmcli connection add 是 NetworkManager 命令行工具中用于创建新网络连接的核心命令,它提供了灵活的方式来配置各种网络接口和虚拟设备。下面是对该命令的全面解析:

命令基本结构

nmcli connection add [选项] [属性 值] ...

核心选项详解

1. 必需选项

  • type:指定连接类型

    type ethernet      # 以太网
    type wifi          # 无线网络
    type bridge        # 网桥
    type bond          # 绑定(链路聚合)
    type vlan          # VLAN
    type team          # 另一种链路聚合技术
    type vpn           # VPN连接
    type infiniband    # InfiniBand
    type bluetooth     # 蓝牙
    
  • con-name:指定连接名称

    con-name my-connection
    
  • ifname:指定网络接口名称

    ifname eth0        # 物理接口
    ifname br0         # 虚拟接口
    

2. 常用可选选项

  • save:是否保存配置(默认 yes)

    save no            # 创建临时连接(重启后消失)
    
  • autoconnect:是否自动连接(默认 yes)

    autoconnect no     # 需手动激活
    
  • master:指定主设备(用于从属设备)

    master br0         # 用于bridge-slave或bond-slave
    

连接类型与属性详解

1. 以太网连接 (ethernet)

nmcli con add type ethernet \
  con-name "eth-static" \
  ifname enp3s0 \
  ipv4.method manual \
  ipv4.addresses 192.168.1.100/24 \
  ipv4.gateway 192.168.1.1 \
  ipv4.dns "8.8.8.8 8.8.4.4" \
  ethernet.mtu 1500

关键属性

  • ipv4.method: manual(静态) 或 auto(DHCP)
  • ipv6.method: IPv6 配置方法
  • ethernet.mac-address: 设置MAC地址
  • ethernet.wake-on-lan: 网络唤醒设置

2. 网桥连接 (bridge)

nmcli con add type bridge \
  con-name br0 \
  ifname br0 \
  ipv4.method manual \
  ipv4.addresses 192.168.1.200/24 \
  bridge.stp no \
  bridge.forward-delay 0

关键属性

  • bridge.stp: 生成树协议 (yes/no)
  • bridge.priority: 网桥优先级 (0-65535)
  • bridge.forward-delay: 转发延迟 (秒)
  • bridge.hello-time: STP Hello包间隔
  • bridge.max-age: STP最大消息年龄

3. 绑定连接 (bond)

nmcli con add type bond \
  con-name bond0 \
  ifname bond0 \
  bond.options "mode=802.3ad,miimon=100,lacp_rate=fast" \
  ipv4.method auto

绑定模式选项

模式描述
负载均衡balance-rr轮询传输
活动备份active-backup故障切换
LACP动态聚合802.3ad需要交换机支持
广播broadcast所有接口发送相同数据
XOR哈希balance-xor基于哈希策略
自适应传输负载均衡balance-tlb发送负载均衡
自适应负载均衡balance-alb发送接收负载均衡

4. VLAN连接 (vlan)

nmcli con add type vlan \
  con-name vlan10 \
  ifname eth0.10 \
  dev eth0 \
  id 10 \
  ipv4.method manual \
  ipv4.addresses 10.10.10.1/24

关键属性

  • id: VLAN ID (必需, 1-4094)
  • dev: 父接口名称 (必需)
  • vlan.flags: 标志 (如 reorder_hdr)

5. 从属连接 (bridge-slave/bond-slave)

# 网桥从属
nmcli con add type bridge-slave \
  con-name br0-slave \
  ifname eth0 \
  master br0

# 绑定从属
nmcli con add type bond-slave \
  con-name bond0-slave1 \
  ifname eth1 \
  master bond0

高级用法示例

1. 创建带VLAN过滤的网桥

nmcli con add type bridge con-name br-filter ifname br0 \
  bridge.vlan-filtering yes \
  bridge.vlan-default-pvid 1

nmcli con add type bridge-slave con-name br-slave ifname eth0 master br0 \
  bridge-port.vlans "1-10,20 pvid 1 untagged; 30-40"

2. 创建带QoS的VLAN

nmcli con add type vlan con-name vlan-qos ifname eth0.100 dev eth0 id 100 \
  vlan.ingress-qos-map "0:3 1:4 2:6" \
  vlan.egress-qos-map "3:0 4:1 6:2"

3. 创建带故障转移的绑定

nmcli con add type bond con-name bond-failover ifname bond0 \
  bond.options "mode=active-backup,primary=eth0,fail_over_mac=active" \
  ipv4.method auto

4. 创建无线网络连接

nmcli con add type wifi con-name office-wifi ifname wlp2s0 \
  wifi.ssid "Office-Network" \
  wifi-sec.key-mgmt wpa-psk \
  wifi-sec.psk "mysecretpassword" \
  ipv4.method auto

属性管理技巧

1. 修改现有连接属性

nmcli con modify "eth-static" ipv4.addresses "192.168.1.101/24"

2. 添加/删除多值属性

# 添加DNS服务器
nmcli con modify "eth-static" +ipv4.dns 1.1.1.1

# 删除DNS服务器
nmcli con modify "eth-static" -ipv4.dns 8.8.4.4

3. 查看支持的属性

nmcli connection add help type bridge

连接生命周期管理

1. 激活连接

nmcli con up "br0"

2. 停用连接

nmcli con down "br0"

3. 删除连接

nmcli con del "br0"

4. 导出连接配置

nmcli -f all con show "br0" > br0-backup.nmconnection

最佳实践

  1. 命名规范

    # 类型.用途.序号
    con-name bridge.lan
    con-name vlan.mgmt
    
  2. 配置验证

    # 试运行(不实际应用)
    nmcli --offline con add type bridge ... 
    
    # 语法检查
    nmcli con add --check
    
  3. 批量操作

    # 创建网桥和从属接口
    nmcli -e yes con add type bridge con-name br0 ifname br0
    nmcli -e yes con add type bridge-slave ifname eth0 master br0
    
  4. 持久化与临时连接

    # 临时连接(重启后消失)
    nmcli con add ... save no
    
    # 永久连接(保存到/etc)
    nmcli con add ... save yes
    

配置文件位置

创建的连接配置存储在:

/etc/NetworkManager/system-connections/
  ├── br0.nmconnection
  ├── eth-static.nmconnection
  └── vlan10.nmconnection

nmcli connection add 是构建复杂网络配置的核心工具,通过组合不同连接类型和属性,可以创建从简单以太网连接到多层虚拟化网络的任意拓扑结构。