Linux网络管理工具NetworkManager笔记250726

312 阅读38分钟

Linux网络管理工具NetworkManager笔记250726

简介

NetworkManager(简称 NM)是一个现代化的、动态的网络配置管理守护进程和服务,旨在简化 Linux 及其它类 Unix 操作系统上的网络连接管理。它尤其适合在需要频繁切换网络环境(如笔记本电脑在多个 Wi-Fi 网络、有线网络、移动宽带之间移动)的桌面和移动设备上使用,同时也广泛应用于服务器环境中提供灵活的网络配置能力。

核心目标和优势

  1. 简化网络管理: 为用户(尤其是非专业用户)提供直观的图形界面(GUI)和文本用户界面(TUI)来管理网络连接。
  2. 自动化连接: 自动检测和连接可用的有线、无线网络,支持自动漫游。
  3. 统一管理接口: 提供一个统一的接口(DBus API、命令行工具 nmcli、GUI)来管理各种网络设备(以太网、Wi-Fi、蓝牙、Bond、Bridge、VLAN、VPN、移动宽带等)和连接类型。
  4. 处理复杂场景: 处理多网络接口、设备依赖、并发连接、连接优先级等复杂网络场景。
  5. 动态配置: 能够响应网络环境的变化(如网线插拔、Wi-Fi 信号强弱变化、网络切换)并动态调整配置。
  6. 与系统集成: 与系统启动、电源管理(挂起/恢复)、用户会话等紧密集成,确保网络状态的一致性。
  7. 支持现代技术: 积极支持 IPv6、Wi-Fi WPA3、802.1X 企业认证、OpenVPN、WireGuard、VXLAN 等现代网络技术和协议。

主要组件和架构

  1. NetworkManager 守护进程 (NetworkManager.service):

    • 核心组件,以 root 权限运行的系统级服务。
    • 负责:
      • 检测硬件设备状态变化(插拔网线、发现 Wi-Fi AP)。
      • 管理网络连接配置(读取、存储、应用)。
      • 控制设备(启用/禁用接口、配置 IP 地址、路由、DNS)。
      • 执行连接激活、停用操作。
      • 通过 D-Bus 提供 API 供其他组件调用。
      • 处理 DHCP 请求(通常委托给 dhclientsystemd-networkd 的内置 DHCP 客户端)。
      • 管理 DNS 配置(通常与 systemd-resolveddnsmasq 集成)。
  2. 管理接口:

    • 图形用户界面 (GUI):
      • GNOME: 集成在 GNOME Shell 的系统菜单/设置中。
      • KDE Plasma: 通过 Plasma NetworkManager applet (plasma-nm)。
      • 其他桌面环境通常也有对应的 NM 小程序。
    • 文本用户界面 (TUI): nmtui 命令提供一个基于 curses 的简单文本界面,适合无 GUI 的服务器环境进行基本配置。
    • 命令行工具 (CLI): nmcli 是一个功能极其强大的命令行工具,用于查询状态、控制连接、修改配置等。是脚本编写和高级管理的首选。
    • D-Bus API: 底层编程接口,允许应用程序、脚本和其他系统服务(如 VPN 客户端、桌面环境)与 NetworkManager 交互。nmcli 和 GUI 工具都是基于此 API 构建的。
  3. 插件和后台服务:

    • 设备插件: 处理特定类型的硬件设备(如 wifi, ethernet, bluetooth, wwan 等)。
    • 设置插件: 处理特定类型的连接配置(如 keyfile, ifcfg-rh)。
    • 配置服务: 管理连接配置的存储。主要有两种:
      • keyfile (默认且推荐): 将连接配置存储在 /etc/NetworkManager/system-connections/ 目录下的 .nmconnection 文件(INI 格式)中。更现代、通用。
      • ifcfg-rh (传统): 主要为了兼容 RHEL/CentOS 旧版,使用 /etc/sysconfig/network-scripts/ifcfg-<ifname> 文件。在新系统中逐渐被淘汰。
    • DHCP 客户端: NM 本身不实现 DHCP,它调用外部客户端(如 dhclient)或使用内置于 systemd-networkd 的客户端。
    • DNS 解析器: NM 通常配置系统解析器(通过 /etc/resolv.conf)。现代发行版常将其指向 systemd-resolved (管理 /run/systemd/resolve/stub-resolv.conf) 或本地运行的 dnsmasq 实例(由 NM 管理),以处理 VPN 等场景的 DNS 配置。

关键概念

  1. 设备: 物理或虚拟的网络接口(如 eth0, wlan0, vpn0)。由 NM 检测和管理。
  2. 连接 (Connection Profile): 核心概念! 这是 NetworkManager 配置的实体。它定义了一组用于在特定设备(或设备类型)上建立网络连接的设置(如 IP 地址获取方式 - DHCP/Static、SSID、密码、VPN 配置、路由、DNS、安全认证方式等)。
    • 一个连接配置可以应用于多个兼容的设备(如一个 Wi-Fi 配置可以用于任何 Wi-Fi 网卡)。
    • 一个设备上同一时间只能激活一个连接配置
    • 连接配置存储在磁盘上(如 /etc/NetworkManager/system-connections/),具有唯一名称 (connection.id)。
  3. 活动连接: 当一个连接配置被成功应用到一个设备上并建立了网络连接时,就形成了一个“活动连接”。nmcli connection show --active 显示的就是活动连接。
  4. 自动连接: 连接配置可以设置为 connection.autoconnect=yes。当满足条件时(如设备可用、网络存在),NM 会自动尝试激活该连接。
  5. 连接优先级: 当多个连接配置都适用于一个设备且都设置了自动连接时,优先级 (connection.autoconnect-priority) 高的会被优先尝试激活。

使用方式 (以 nmcli 为例)

nmcli 是管理和故障排除的利器。常用命令模式:

  • 查询状态:

    • nmcli: 显示设备、连接、网络等简要状态。
    • nmcli device status: 列出设备状态(连接状态、类型、连接名)。
    • nmcli connection show: 列出所有存储的连接配置。
    • nmcli connection show "Your Connection Name": 查看特定连接的详细配置。
    • nmcli device wifi list: 扫描并列出可用 Wi-Fi 网络。
  • 控制连接:

    • nmcli connection up "Your Connection Name": 激活一个连接。
    • nmcli connection down "Your Connection Name": 停用一个连接。
    • nmcli device connect <ifname>: 尝试在指定设备上自动激活一个合适的连接(通常根据自动连接设置)。
    • nmcli device disconnect <ifname>: 断开指定设备上的连接。
  • 修改配置 (通常需要 sudo):

    • nmcli connection add ...: 添加一个新连接配置(参数很多,定义类型、接口名、IP 设置、Wi-Fi 设置等)。
    • nmcli connection modify "Your Connection Name" <setting>.<property> <value>: 修改现有连接配置的某个属性。例如:
      • nmcli con mod "MyWiFi" wifi-sec.psk "newpassword": 修改 Wi-Fi 密码。
      • nmcli con mod "MyEth" ipv4.addresses "192.168.1.100/24": 设置静态 IPv4 地址。
      • nmcli con mod "MyEth" ipv4.method manual: 设置 IPv4 方法为手动(静态)。
      • nmcli con mod "MyEth" ipv4.dns "8.8.8.8 8.8.4.4": 设置 DNS 服务器。
      • nmcli con mod "MyEth" connection.autoconnect yes: 启用自动连接。
    • nmcli connection delete "Your Connection Name": 删除一个连接配置。
  • 设备操作:

    • nmcli device wifi connect "SSID" password "password": 快速连接到一个 Wi-Fi 网络(如果不存在对应配置,会创建一个新的临时配置)。
    • nmcli radio wifi on/off: 打开/关闭 Wi-Fi 硬件。

配置文件位置 (keyfile 插件)

  • 系统级连接配置: /etc/NetworkManager/system-connections/*.nmconnection (通常需要 root 权限读写)。
  • 用户级连接配置 (较少见): /etc/NetworkManager/system-connections/ 有时也会用于用户特定的配置,但更常见的是所有配置都在系统级。
  • 主配置文件: /etc/NetworkManager/NetworkManager.conf - 用于配置守护进程的全局行为(如默认插件、日志级别、DNS 处理方式等)。通常不需要频繁修改。

与其它网络配置方式的比较

  • /etc/network/interfaces (Debian/Ubuntu legacy): 传统的静态配置方式。功能有限,无法处理动态场景(如移动设备)。NetworkManager 可以与之共存,但通常建议只让其中一个管理接口(通过 ifupdownmanaged=false 配置)。
  • systemd-networkd 另一个现代的、低级别的网络配置守护进程。更轻量级,专注于服务器和嵌入式环境,配置基于 .network, .netdev 文件。功能也很强大,但在桌面环境(尤其是需要 Wi-Fi 和 VPN 管理)的集成度和易用性上通常不如 NetworkManager。两者可以共存,但需要小心协调(通常让 NetworkManager 管理特定接口,或完全禁用其中一个)。
  • 手动 ip/ifconfig/route 临时调试有用,但配置无法持久化,也不处理动态事件。

优缺点总结

  • 优点:
    • 用户友好(GUI/TUI)。
    • 强大的命令行 (nmcli) 和 API (D-Bus) 支持自动化。
    • 优秀的动态网络环境处理能力(特别是桌面/移动)。
    • 统一管理多种网络技术(有线、无线、VPN、宽带等)。
    • 广泛的发行版支持和集成(主流桌面发行版默认)。
    • 活跃的开发和社区支持。
  • 缺点:
    • 相对复杂,学习曲线稍陡(尤其是深入 nmcli 和 D-Bus)。
    • 在极简或资源极度受限的环境(某些嵌入式系统)可能显得“重”。
    • 与某些非常定制化或传统的网络设置(如复杂路由策略、某些高级隧道)的集成可能需要额外工作。
    • 如果配置不当,多个网络管理工具共存可能冲突。

适用场景

  • 桌面/Laptop 用户: 绝对首选,处理 Wi-Fi、有线、VPN 切换无缝衔接。
  • 带有 GUI 的服务器: 方便管理。
  • 需要动态网络配置的服务器: 例如在云环境或需要根据条件自动切换网络的服务器。
  • 需要统一管理多种连接类型(包括 VPN)的环境。

总结

NetworkManager 是 Linux 网络管理现代化和易用性的重要代表。它通过“连接配置”的概念抽象了复杂的网络设置,提供了从图形界面到强大命令行再到编程接口的完整管理方案。虽然底层可能涉及多种技术(D-Bus, 插件),但其核心目标是让用户和系统管理员能更简单、更动态、更可靠地管理各种网络连接。掌握 nmcli 是有效利用 NetworkManager 的关键,尤其在服务器和无 GUI 环境中。对于大多数现代 Linux 发行版(无论是桌面还是服务器),NetworkManager 都是网络配置管理的可靠和推荐选择。

















用 NetworkManager 设置网卡 IP

在 NetworkManager 中为网卡(网络接口)设置 IP 地址(无论是静态还是 DHCP)主要是通过创建或修改一个 连接配置 来实现的。这个配置会被应用到特定的网卡上。

以下是几种常用的设置方法:

📍 方法 1:使用 nmcli 命令行工具 (推荐,适用于所有环境)

这是最强大、最灵活且脚本友好的方式。

     🖥️ 场景 1:为新网卡创建并激活一个静态 IP 连接配置 (例如 enp1s0)

sudo nmcli connection add type ethernet con-name "MyStaticEth" ifname enp1s0 \
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
  • con-name "MyStaticEth": 给这个连接配置起个名字(可自定义)。
  • ifname enp1s0: 指定要应用配置的物理网卡名称(用 ip anmcli device status 查看你的实际网卡名)。
  • ipv4.addresses 192.168.1.100/24: 设置静态 IPv4 地址和子网掩码(/24 对应 255.255.255.0)。
  • ipv4.gateway 192.168.1.1: 设置默认网关。
  • ipv4.dns "8.8.8.8,8.8.4.4": 设置 DNS 服务器(逗号分隔)。
  • ipv4.method manual: 明确指定使用静态 IP(手动配置)。
  • type ethernet: 连接类型是以太网。

激活新配置:

sudo nmcli connection up "MyStaticEth"

     🔄 场景 2:为新网卡创建并激活一个使用 DHCP 的连接配置

sudo nmcli connection add type ethernet con-name "MyDHCPEth" ifname enp1s0 ipv4.method auto
sudo nmcli connection up "MyDHCPEth"
  • ipv4.method auto: 指定使用 DHCP 自动获取 IP 地址、网关、DNS。

     ✏️ 场景 3:修改现有连接配置为静态 IP

假设已有一个名为 "MyDHCPEth" 的配置绑定在 enp1s0 上,现在要改成静态 IP:

# 关闭当前活动连接(如果正在使用)
sudo nmcli connection down "MyDHCPEth"

# 修改配置
sudo nmcli connection modify "MyDHCPEth" \
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 connection up "MyDHCPEth"

     🔍 场景 4:修改现有连接配置为 DHCP

sudo nmcli connection modify "MyStaticEth" ipv4.method auto
sudo nmcli connection up "MyStaticEth"  # 如果之前是手动IP,可能需要先down再up

     📝 关键 nmcli 命令总结

  • sudo nmcli connection add ...: 创建新连接配置。
  • sudo nmcli connection modify <连接名> <属性> <值>: 修改现有配置的属性。
  • sudo nmcli connection up <连接名>: 激活连接。
  • sudo nmcli connection down <连接名>: 停用连接(通常修改配置前建议先 down)。
  • nmcli connection show: 列出所有存储的连接配置。
  • nmcli connection show <连接名>: 查看特定连接的详细配置。
  • nmcli device status: 查看设备状态及其关联的连接。
  • ip aip addr show: 查看接口的当前 IP 地址信息(验证是否生效)。

🖥️ 方法 2:使用 nmtui 文本用户界面 (适用于无 GUI 的服务器)

  1. 在终端运行:
    sudo nmtui
    
  2. 使用键盘方向键选择 Edit a connection,回车。
  3. 选择你要修改的网卡对应的连接配置(如 enp1s0),或者按 <Add> 创建新配置。
  4. 在编辑界面:
    • 如果是新配置,先选择连接类型(如 Ethernet),并给 Profile name 起名。
    • 确保 Device 字段是你的物理网卡名(如 enp1s0)。
    • 移动到 IPv4 configuration 行。
      • 按回车,选择 Manual 设置静态 IP。
      • 选择 Automatic 设置 DHCP。
    • 如果选择了 Manual
      • <Show> 展开详细设置。
      • Addresses 行输入 IP 地址和子网掩码(格式:192.168.1.100/24)。
      • Gateway 行输入网关地址(如 192.168.1.1)。
      • DNS servers 行输入 DNS 地址(如 8.8.8.8,多个用逗号隔开)。
  5. <OK> 保存配置。
  6. 回到主菜单,选择 Activate a connection
  7. 找到你刚修改或创建的配置,按 <Deactivate>(如果已激活),然后按 <Activate> 重新激活使新配置生效。
  8. 选择 <Back> 然后 <Quit> 退出 nmtui

🖼️ 方法 3:使用图形界面 GUI (适用于桌面环境)

不同桌面环境(GNOME, KDE Plasma, XFCE 等)位置略有不同,但流程相似。以 GNOME 为例:

  1. 点击屏幕右上角的网络图标。
  2. 选择 Wired Settings(有线)或 Wi-Fi Settings(无线),然后点击齿轮图标⚙️(或类似设置按钮)。
  3. 找到你要配置的有线连接或 Wi-Fi 连接,点击它。
  4. 在打开的设置窗口中,切换到 IPv4IPv6 标签页。
  5. 设置静态 IP:
    • IPv4 Method 改为 Manual
    • Addresses 下:
      • 输入 Address (IP 地址,如 192.168.1.100)。
      • 输入 Netmask (子网掩码,通常 255.255.255.0 对应 /24)。
      • 输入 Gateway (网关,如 192.168.1.1)。
    • DNS 部分输入 DNS 服务器地址(如 8.8.8.8),一行一个。
  6. 设置 DHCP:
    • IPv4 Method 改为 Automatic (DHCP)
  7. 点击 ApplySave 按钮保存设置。
  8. 如果网络图标状态没有立即更新,可能需要点击一下开关暂时禁用再启用该连接,或者重启 NetworkManager 服务:
    sudo systemctl restart NetworkManager
    

📂 方法 4:直接编辑配置文件 (高级,不推荐日常使用)

NetworkManager 的连接配置文件通常存储在 /etc/NetworkManager/system-connections/ 目录下(使用 keyfile 插件时,这是现代发行版的默认方式)。文件名通常是连接名加上 .nmconnection 后缀。

⚠️ 重要提示:

  • 编辑配置文件时,必须先停用该连接:sudo nmcli connection down "连接名"
  • 编辑完成后,必须让 NetworkManager 重新加载配置:sudo nmcli connection reload
  • 然后才能重新激活连接:sudo nmcli connection up "连接名"
  • 直接编辑文件出错可能导致连接无法激活!nmtuinmcli 是更安全的选择。

示例静态 IP 配置文件 (/etc/NetworkManager/system-connections/MyStaticEth.nmconnection) 内容:

[connection]
id=MyStaticEth
uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (自动生成,保持唯一)
type=ethernet
interface-name=enp1s0

[ipv4]
address1=192.168.1.100/24,192.168.1.1  # IP/掩码,网关
dns=8.8.8.8;8.8.4.4;                   # DNS 服务器,分号分隔
method=manual

[ipv6]
method=ignore                           # 通常先忽略 IPv6 简化配置

[ethernet]
mac-address=xx:xx:xx:xx:xx:xx          # 可选,绑定到特定 MAC

修改后生效步骤:

sudo nmcli connection down "MyStaticEth"
sudo nmcli connection reload  # 或在编辑后运行 `sudo systemctl reload NetworkManager`
sudo nmcli connection up "MyStaticEth"

🔍 验证设置是否生效

无论使用哪种方法配置后,都应该验证:

  1. 查看接口 IP 和路由:
    ip addr show enp1s0  # 检查分配的 IP 地址和子网掩码
    ip route show        # 检查默认网关是否正确
    
  2. 测试网络连通性:
    ping 192.168.1.1     # 测试是否能 ping 通网关
    ping 8.8.8.8         # 测试是否能 ping 通公网 IP
    ping www.google.com  # 测试 DNS 解析和公网连通性
    
  3. 检查 DNS 解析:
    cat /etc/resolv.conf  # 查看当前使用的 DNS 服务器(注意:可能会被 systemd-resolved 或 dnsmasq 代理)
    nslookup www.google.com
    

💡 关键点总结:

  • 核心是连接配置: IP 地址是设置在 连接配置 上,然后由 NetworkManager 应用给 网卡
  • 静态 vs DHCP: ipv4.method manual 是静态,ipv4.method auto 是 DHCP。
  • 修改后需激活: 创建新配置或修改现有配置后,需要 up 该连接配置才能生效。
  • 优先使用 nmcli 功能最全,适合脚本和服务器管理。
  • nmtui 适合无 GUI 服务器: 比直接编辑配置文件更直观安全。
  • GUI 适合桌面用户: 图形化操作最直观。
  • 谨慎直接编辑配置文件: 容易出错,需要手动 reload 和 down/up 连接。仅在需要精细控制特定属性时使用。

















用 NetworkManager 设置无线网络 Wifi

















用 NetworkManager 配置网桥bridge

以下是使用 NetworkManager 配置网桥(Bridge)的详细步骤,涵盖命令行(nmcli)和配置文件两种方法。网桥用于将多个物理/虚拟网络接口组合成单一逻辑接口,常用于虚拟化(KVM/Docker)、高可用集群等场景。


一、核心概念

  • 网桥作用:在二层(数据链路层)转发流量,使多个接口共享同一网络。
  • 典型结构
    graph LR
      Bridge(br0) -->|绑定| eth0(物理网卡)
      Bridge -->|绑定| eth1(物理网卡)
      Bridge -->|接入| vm1(虚拟机)
      Bridge -->|接入| vm2(虚拟机)
    
  • 关键点
    • IP 地址需配置在网桥接口(如 br0)上,物理网卡(如 eth0)必须设为 从接口(slave) 且不能有独立 IP。
    • 物理网卡需处于未激活状态(由网桥接管控制)。

二、命令行配置(nmcli推荐      场景:创建网桥 br0,绑定物理网卡 enp1s0,设置静态 IP

# 1. 创建网桥接口 br0(不绑定物理网卡)
sudo nmcli connection add type bridge con-name br0 ifname br0

# 2. 配置网桥 IP(静态/DHCP)
# 静态 IP 配置:
sudo nmcli connection modify br0 \
    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 connection modify br0 ipv4.method auto

# 3. 创建物理网卡连接并绑定到网桥(关键步骤!)
sudo nmcli connection add type ethernet \
    con-name br0-slave-enp1s0 \  # 连接名可自定义
    ifname enp1s0 \             # 物理网卡名
    master br0 \                # 指定主网桥
    slave-type bridge           # 类型为网桥从接口

# 4. 激活网桥和从接口
sudo nmcli connection up br0
sudo nmcli connection up br0-slave-enp1s0

     验证配置:

# 查看网桥状态
bridge link show     # 显示绑定的从接口
ip addr show br0     # 查看网桥 IP
ping 192.168.1.1    # 测试网络连通性

三、配置文件方法(手动编辑)      创建网桥配置文件:/etc/NetworkManager/system-connections/br0.nmconnection

[connection]
id=br0
type=bridge
interface-name=br0

# 网桥 IP 配置(静态)
[ipv4]
address1=192.168.1.100/24,192.168.1.1
dns=8.8.8.8;
method=manual

# 或 DHCP 配置
# [ipv4]
# method=auto

[bridge]
stp=false  # 关闭生成树协议(小型网络建议关闭)

     创建从接口配置文件:/etc/NetworkManager/system-connections/br0-slave-enp1s0.nmconnection

[connection]
id=br0-slave-enp1s0
type=ethernet
interface-name=enp1s0
master=br0         # 关联主网桥
slave-type=bridge   # 类型为网桥从接口

[ethernet]
mac-address=00:11:22:33:44:55  # 可选:绑定物理网卡 MAC

     应用配置:

sudo nmcli connection reload  # 重载配置
sudo nmcli connection up br0
sudo nmcli connection up br0-slave-enp1s0

四、高级配置选项      1. 启用 STP(生成树协议)

sudo nmcli connection modify br0 bridge.stp yes  # 防止环路(大型网络启用)

     2. 添加多个从接口

# 绑定第二个网卡 enp2s0
sudo nmcli connection add type ethernet \
    con-name br0-slave-enp2s0 \
    ifname enp2s0 \
    master br0 \
    slave-type bridge

     3. 设置网桥优先级

sudo nmcli connection modify br0 bridge.priority 16384  # 默认32768,值越小优先级越高

     4. 绑定 VLAN 接口

# 创建 VLAN 子接口
sudo nmcli connection add type vlan \
    con-name vlan10 \
    ifname enp1s0.10 \
    dev enp1s0 \
    id 10

# 将 VLAN 接口加入网桥
sudo nmcli connection modify vlan10 master br0 slave-type bridge

五、删除网桥

# 1. 停用网桥和从接口
sudo nmcli connection down br0
sudo nmcli connection down br0-slave-enp1s0

# 2. 删除连接配置
sudo nmcli connection delete br0
sudo nmcli connection delete br0-slave-enp1s0

# 3. 重启 NetworkManager
sudo systemctl restart NetworkManager

⚠️ 关键注意事项

  1. 物理网卡必须解除原有配置

    • 若物理网卡已有 IP(如 DHCP),需先删除原有连接:
      nmcli connection show | grep enp1s0  # 查找关联连接
      nmcli connection delete "old-connection-name"
      
  2. 虚拟机/容器接入

    • KVM/QEMU:使用 -net bridge,br=br0 参数将虚拟机网卡接入网桥。
    • Docker:创建网桥网络:
      docker network create -d bridge --subnet 192.168.1.0/24 my-bridge-net
      
  3. 网络性能优化

    # 关闭 GRO/GSO 提升小包吞吐量(万兆以上网络)
    sudo ethtool -K enp1s0 gro off gso off
    
  4. 故障排查命令

    journalctl -u NetworkManager -f  # 查看实时日志
    bridge fdb show                  # 显示网桥 MAC 表
    brctl show br0                   # 传统网桥工具(需安装 bridge-utils)
    

通过 NetworkManager 配置的网桥重启后自动生效,适合生产环境使用。对于临时测试,可用 ip link 命令创建(重启失效):

sudo ip link add name br0 type bridge
sudo ip link set enp1s0 master br0
sudo ip addr add 192.168.1.100/24 dev br0
sudo ip link set br0 up

















用 NetworkManager 配置无线网桥bridge-wifi

NetworkManager 配置无线网桥 (WiFi Bridge) 详解

无线网桥用于将无线网络接口(WiFi)桥接到有线网络,实现无线客户端与有线设备的无缝通信(二层互通)。以下是完整的配置指南:


🔧 一、核心概念与前提条件

  1. 无线网桥作用

    • 将 WiFi 接口(如 wlan0)加入网桥
    • 使连接到该 WiFi 的设备与网桥成员处于同一局域网
    • 常见用途:无线 AP 扩展、IoT 设备接入、虚拟化网络
  2. 必要条件

    # 检查网卡是否支持 AP 和网桥模式
    iw list | grep -E "AP|bridge" -A 5
    
    # 安装必要工具
    sudo apt install wireless-tools iw bridge-utils
    
  3. 关键限制

    • 无线网卡必须支持 4 地址模式 (4addr),否则无法加入网桥
    • 部分 USB 网卡可能不支持此模式

🛠️ 二、配置步骤(使用 nmcli

     场景:创建网桥 br-wifi,绑定 WiFi 接口 wlan0 作为接入点

# 1. 启用无线接口的 4 地址模式(关键!)
sudo iw dev wlan0 set 4addr on

# 2. 创建网桥接口
sudo nmcli connection add type bridge con-name br-wifi ifname br-wifi

# 3. 配置网桥 IP(DHCP 或静态)
# DHCP 示例:
sudo nmcli connection modify br-wifi ipv4.method auto

# 静态 IP 示例:
# sudo nmcli connection modify br-wifi \
#   ipv4.addresses 192.168.1.100/24 \
#   ipv4.gateway 192.168.1.1 \
#   ipv4.dns "8.8.8.8" \
#   ipv4.method manual

# 4. 创建 WiFi 接入点配置并绑定到网桥
sudo nmcli connection add type wifi \
    con-name br-wifi-ap \
    ifname wlan0 \
    ssid MyBridgeNetwork \
    mode ap \
    master br-wifi \
    slave-type bridge \
    wifi-sec.key-mgmt wpa-psk \
    wifi-sec.psk "SecurePassword123"

# 5. 激活所有配置
sudo nmcli connection up br-wifi
sudo nmcli connection up br-wifi-ap

⚙️ 三、永久启用 4 地址模式(解决重启失效)

     方法 1:创建 systemd 服务

# 创建服务文件
echo '[Unit]
Description=Enable 4addr mode for wlan0
After=network.target

[Service]
Type=oneshot
ExecStart=/sbin/iw dev wlan0 set 4addr on

[Install]
WantedBy=multi-user.target' | sudo tee /etc/systemd/system/wifi-4addr.service

# 启用服务
sudo systemctl daemon-reload
sudo systemctl enable wifi-4addr.service
sudo systemctl start wifi-4addr.service

     方法 2:NetworkManager 调度脚本

# 创建调度目录
sudo mkdir -p /etc/NetworkManager/dispatcher.d

# 创建脚本
echo '#!/bin/bash
if [ "$1" == "wlan0" ] && [ "$2" == "up" ]; then
    iw dev wlan0 set 4addr on
fi' | sudo tee /etc/NetworkManager/dispatcher.d/10-wifi-4addr.sh

# 设置权限
sudo chmod +x /etc/NetworkManager/dispatcher.d/10-wifi-4addr.sh

📡 四、配置为无线客户端网桥(连接现有 WiFi)

# 1. 启用 4 地址模式(同上)
sudo iw dev wlan0 set 4addr on

# 2. 创建网桥
sudo nmcli connection add type bridge con-name br-wifi-client ifname br-wifi-client

# 3. 创建 WiFi 客户端配置并绑定网桥
sudo nmcli connection add type wifi \
    con-name br-wifi-client-sta \
    ifname wlan0 \
    ssid ExistingNetwork \
    wifi-sec.key-mgmt wpa-psk \
    wifi-sec.psk "NetworkPassword" \
    master br-wifi-client \
    slave-type bridge

# 4. 激活连接
sudo nmcli connection up br-wifi-client
sudo nmcli connection up br-wifi-client-sta

🔍 五、验证与故障排查

     验证命令:

# 查看网桥状态
bridge link show | grep wlan0

# 检查 4 地址模式
iw dev wlan0 info | grep 4addr

# 测试连通性
ping 192.168.1.1 -I br-wifi

# 查看关联设备
iw dev wlan0 station dump

     常见问题解决:

  1. 无法加入网桥

    # 检查内核日志
    dmesg | grep -i wlan0
    
    # 尝试卸载/重载驱动
    sudo modprobe -r <driver_name>  # 如 mt76x2u
    sudo modprobe <driver_name>
    
  2. 连接不稳定

    # 调整 MTU
    sudo nmcli connection modify br-wifi ethernet.mtu 1500
    
    # 关闭省电模式
    sudo iw dev wlan0 set power_save off
    
  3. AP 模式无法启动

    # 检查冲突服务
    sudo systemctl stop hostapd
    sudo systemctl disable hostapd
    

🧩 六、高级配置选项

     1. 隔离客户端流量

sudo nmcli connection modify br-wifi bridge.vlan-filtering yes
sudo nmcli connection modify br-wifi bridge.vlan-default-pvid 100

     2. 多 SSID 网桥(VLAN 隔离)

# 创建 VLAN 子接口
sudo nmcli connection add type vlan con-name vlan10 dev wlan0 id 10

# 将 VLAN 加入网桥
sudo nmcli connection modify br-wifi connection.slave-type bridge
sudo nmcli connection modify vlan10 master br-wifi

     3. Mesh 网络桥接

# 配置 802.11s Mesh
sudo iw dev wlan0 set type mesh
sudo iw dev wlan0 mesh join my-mesh-network

# 将 mesh 接口加入网桥
sudo nmcli connection add type ethernet con-name mesh-bridge ifname mesh0 master br-wifi

🧯 七、完整卸载

# 停用连接
sudo nmcli connection down br-wifi
sudo nmcli connection down br-wifi-ap

# 删除配置
sudo nmcli connection delete br-wifi
sudo nmcli connection delete br-wifi-ap

# 关闭 4 地址模式
sudo iw dev wlan0 set 4addr off

# 删除持久化配置
sudo rm /etc/systemd/system/wifi-4addr.service
sudo rm /etc/NetworkManager/dispatcher.d/10-wifi-4addr.sh

关键提示

  1. 优先使用支持 AP 模式的无线网卡(如 Atheros AR9xxx, MediaTek MT76xx)
  2. 生产环境建议使用专业无线 AP(OpenWRT 等)
  3. 复杂场景考虑替代方案:hostapd + bridge-utilswpa_supplicant

















NetworkManager主配置文件/etc/NetworkManager/NetworkManager.conf详解

以下是 /etc/NetworkManager/NetworkManager.conf 配置文件的详细解析,涵盖所有核心参数及其应用场景。此文件控制 NetworkManager 守护进程的全局行为,修改后需重启服务生效:

sudo systemctl restart NetworkManager

配置文件结构解析 配置文件采用 INI 格式(分段键值对),主要包含以下段落:

段落作用描述
[main]核心功能设置(插件、DNS、DHCP 等)
[logging]日志级别与输出控制
[connection]连接管理策略(如 IPv6 支持、离线模式)
[device]设备级规则(接口黑名单、WiFi 扫描行为)
[keyfile]keyfile 插件专属配置(配置文件存储路径、权限)
[ifupdown]兼容 Debian 传统网络配置 (/etc/network/interfaces)
[wif]WiFi 设备全局设置 (RPM 系特有)

一、核心配置段 [main] 控制 NetworkManager 的基础行为,常用参数如下:

参数值类型默认值说明
plugins插件列表发行版指定启用插件:keyfile (默认), ifcfg-rh (RHEL), ifupdown (Debian)
dns字符串systemd-resolveddefaultDNS 处理方式:
- systemd-resolved (推荐)
- dnsmasq (本地缓存)
- unbound
- none (手动管理 /etc/resolv.conf)
rc-manager布尔/字符串auto控制 /etc/resolv.conf 处理:
- auto: 自动选择管理器
- file: 直接修改文件
- symlink: 创建符号链接
- resolvconf: 调用 resolvconf 工具
dhcp字符串internalDHCP 客户端实现:
- internal: 内置客户端 (轻量)
- dhclient: 传统客户端
- dhcpcd
systemd-resolved布尔true (若存在)是否与 systemd-resolved 集成
no-auto-defaultMAC 列表禁止自动创建默认连接的接口 (逗号分隔 MAC)
例: no-auto-default=00:11:22:33:44:55,AA:BB:CC:DD:EE:FF
ignore-carrier接口列表忽略物理链路状态 (强制认为网卡已连接)
例: ignore-carrier=eth1,tun0
autoconnect-retries-default整数-1 (无限重试)自动连接失败后的重试次数
configure-and-quit布尔false配置完成后退出守护进程 (适用无状态系统)

示例

[main]
plugins=keyfile
dns=systemd-resolved
dhcp=internal
no-auto-default=00:11:22:33:44:55  # 禁止为指定 MAC 创建默认连接
ignore-carrier=eth2                # 强制 eth2 保持连接状态

二、日志配置段 [logging] 控制日志输出级别和方式:

参数值类型默认值说明
level日志级别INFO可选: DEBUG, INFO, WARN, ERROR (建议生产环境用 WARN)
domains模块列表指定模块日志:
- PLATFORM, RFKILL, ETHER, WIFI
- IP4, DHCP4, VPN
例: domains=DHCP:DEBUG,WIFI:TRACE
backend日志后端syslog输出到:
- syslog (系统日志)
- journal (systemd journal)
- file:/path/to/log

示例

[logging]
level=WARN
domains=DHCP:DEBUG,WIFI:ERROR  # DHCP 模块 DEBUG 级,WIFI 模块 ERROR 级
backend=journal                # 日志输出到 systemd journal

三、连接管理段 [connection] 控制连接行为的全局策略:

参数值类型默认值说明
ipv6.ip6-privacy整数-1 (内核默认)IPv6 隐私扩展:
- -1: 保持内核设置
- 0: 禁用
- 2: 启用(临时地址)
connection.stable-id字符串生成稳定连接 ID 的模板 (用于 VPN 重连)
例: connection.stable-id=${CONNECTION}/${BOOT}
connection.llmnr开关defaultLLMNR 解析支持:
- yes/no/resolve (参考 systemd-resolved)
connection.mdns开关defaultmDNS 支持:
- yes/no/resolve
connection.auth-retries整数-1认证失败重试次数 (-1=无限)

示例

[connection]
ipv6.ip6-privacy=2             # 启用 IPv6 隐私地址
connection.stable-id=MyNetwork-${RANDOM}

四、设备管理段 [device] 控制物理/虚拟设备的行为:

参数值类型默认值说明
wifi.scan-rand-mac-address布尔yes扫描 WiFi 时使用随机 MAC (保护隐私)
wifi.backend字符串defaultWiFi 后端:
- wpa_supplicant (标准)
- iwd (Intel 新驱动)
match-device规则列表接口匹配规则:
- interface-name:eth*
- driver:rtl8187

示例

[device]
wifi.scan-rand-mac-address=no   # 禁用随机 MAC (企业网络需固定 MAC)
match-device=interface-name:eth*,driver:iwlwifi  # 为 eth* 和 Intel 无线网卡应用规则

五、[keyfile] 插件专属配置 控制连接配置文件的存储方式(路径为 /etc/NetworkManager/system-connections/):

参数值类型默认值说明
path目录路径自动选择配置文件存储目录
unmanaged-devices设备列表不管理的设备 (MAC/接口名)
例: unmanaged-devices=mac:00:11:22:33:44:55;interface-name:veth*
hostname字符串从此文件读取主机名 (优先级高于 hostnamectl)

示例

[keyfile]
unmanaged-devices=interface-name:docker0,virbr*  # 不管理 Docker 和虚拟网桥
path=/var/lib/custom-nm-connections              # 自定义配置文件存储路径

六、传统兼容段 [ifupdown] 仅适用于 Debian/Ubuntu,控制与 /etc/network/interfaces 的兼容性:

参数值类型默认值说明
managed布尔false若为 true,NetworkManager 接管所有在 interfaces 中定义的接口

示例

[ifupdown]
managed=true  # NM 管理所有接口(包括 /etc/network/interfaces 中的配置)

七、完整配置示例

[main]
plugins=keyfile
dns=systemd-resolved
dhcp=internal
no-auto-default=00:11:22:33:44:55

[logging]
level=INFO
domains=DHCP:DEBUG

[connection]
ipv6.ip6-privacy=2

[device]
wifi.scan-rand-mac-address=no
match-device=interface-name:wlan*

[keyfile]
unmanaged-devices=interface-name:docker0,virbr0

[ifupdown]
managed=false

⚠️ 关键注意事项

  1. 配置优先级

    • 命令行 (nmcli) > 连接配置文件 > NetworkManager.conf
    • 使用 nmcli connection modify 会覆盖全局设置
  2. DNS 冲突处理
    若出现 DNS 解析问题,检查:

    # 查看当前 DNS 解析器
    systemd-resolve --status      # systemd-resolved
    cat /etc/resolv.conf          # 传统配置
    
  3. 接口管理冲突
    若设备未被 NM 管理 (nmcli dev 显示 unmanaged),检查:

    • [keyfile] 中的 unmanaged-devices
    • [ifupdown] managed=false
    • 是否存在 /etc/network/interfaces 定义
  4. 调试模式
    临时启用详细日志(不修改配置文件):

    sudo nmcli general logging level DEBUG domains ALL
    sudo journalctl -fu NetworkManager  # 查看实时日志
    
  5. 配置备份
    修改前备份原始配置:

    sudo cp /etc/NetworkManager/NetworkManager.conf{,.bak}
    

通过合理配置此文件,可精确控制 NetworkManager 在复杂网络环境中的行为,尤其适用于服务器集群、云主机或网络隔离场景。

















NetworkManager/system-connections/*.nmconnection 配置文件详解

*.nmconnection 配置文件深度详解

NetworkManager 连接配置文件(位于 /etc/NetworkManager/system-connections/)是网络配置的核心,采用 INI 格式存储,每个文件对应一个网络连接配置。以下是全面解析:


一、文件基础信息

属性说明
文件位置/etc/NetworkManager/system-connections/
文件命名连接名.nmconnection (特殊字符会被转义)
文件权限600 (root 读写)
生效方式sudo nmcli con reload + nmcli con up <id>
编辑工具nmcli, nmtui, 手动编辑 (不推荐)

二、核心配置段详解

     1. [connection] - 连接元数据

参数类型默认值说明
id字符串必填连接显示名称 (人类可读)
uuidUUID自动生成全局唯一标识符 (不可修改)
type字符串必填连接类型:ethernet, wifi, bridge, vpn
interface-name字符串强绑定到指定接口 (优先级高)
autoconnect布尔true是否自动连接
autoconnect-priority整数0自动连接优先级 (值越高越优先)
timestamp时间戳自动更新最后修改时间 (epoch 秒)
permissions用户列表允许控制连接的用户:user:alice:;
zone字符串防火墙区域 (配合 firewalld)

示例

[connection]
id=Office-WiFi
uuid=550e8400-e29b-41d4-a716-446655440000
type=wifi
autoconnect=true
autoconnect-priority=100

     2. [match] - 设备匹配规则 控制连接适用的设备,支持高级匹配语法

[match]
# 基础匹配
interface-name=eth0,enp*  # 接口名(支持通配符)
mac-address=00:11:22:33:44:55  # MAC地址
driver=e1000e  # 网卡驱动

# 高级匹配
path=pci-0000:03:00.0  # 设备路径
kernel-command-line=net.ifnames=0  # 内核参数
ssid=MyOfficeNetwork  # WiFi专用(需配合[ipv4])

📌 匹配优先级:当多个连接匹配同一设备时,按:

  1. 匹配规则精确度
  2. autoconnect-priority
  3. UUID 字母顺序

     3. IP 配置段          (1) [ipv4] - IPv4 设置

参数值类型说明
method字符串auto(DHCP), manual(静态), disabled
addressesIP/掩码列表192.168.1.100/24, 10.0.0.1/8
gatewayIP默认网关
dnsIP列表8.8.8.8,1.1.1.1; (分号结尾)
dns-search域名列表example.com,lab.example.com;
route-metric整数路由优先级 (值小优先)
ignore-auto-routes布尔忽略自动获取的路由
never-default布尔禁止设为默认路由

静态IP示例

[ipv4]
method=manual
addresses=192.168.1.100/24
gateway=192.168.1.1
dns=8.8.8.8;
dns-search=mydomain.com;

         (2) [ipv6] - IPv6 设置 参数与 IPv4 类似,额外选项:

[ipv6]
method=auto
addr-gen-mode=stable-privacy  # 地址生成模式
ip6-privacy=2  # 隐私扩展 (0=关, 1=临时地址, 2=开启)

     4. 设备类型专用段          (1) [ethernet] - 有线设置

参数说明
mac-address绑定到特定MAC
mtu最大传输单元
auto-negotiate是否自动协商
duplex双工模式:half, full
speed速率:10, 100, 1000

         (2) [wifi] - 无线基础

参数说明
ssid网络名称 (十六进制或字符串)
modeinfrastructure(默认), ap, adhoc
banda(5GHz), bg(2.4GHz)
channel无线信道
bssid指定接入点MAC

SSID 编码

# 字符串格式(ASCII)
ssid=MyNetwork

# 十六进制格式
ssid=4d794e6574776f726b

         (3) [wifi-sec] - 无线安全

参数说明
key-mgmt加密方式:none, wpa-psk, wpa-eap
pskWPA预共享密钥
wep-key-typeWEP类型:key, phrase
wep-key0WEP密钥1 (索引0-3)
eapEAP方法:peap, tls, ttls
identity802.1X认证用户名
password认证密码

WPA2-PSK 示例

[wifi-sec]
key-mgmt=wpa-psk
psk=SecurePassword123

     5. 高级配置段          (1) [bridge] - 网桥设置

参数说明
stp是否启用生成树协议
priority网桥优先级 (默认32768)
ageing-timeMAC老化时间 (秒)
hello-timeSTP Hello包间隔 (秒)

         (2) [vlan] - VLAN 设置

参数说明
idVLAN ID (1-4094)
parent父接口名
flagsVLAN标志:reorder-hdr(默认)

         (3) [proxy] - 代理设置

参数说明
methodnone, auto, manual
pac-url自动配置脚本URL
http-proxyHTTP代理:host:port
https-proxyHTTPS代理
no-proxy排除代理的域名:*.local,192.168.*

     6. VPN 配置段 (以 OpenVPN 为例)

[vpn]
service-type=org.freedesktop.NetworkManager.openvpn
username=vpnu
comp-lzo=yes
remote=ovpn.example.com:1194
connection-type=password
password-flags=1  # 1=询问, 0=明文存储, 2=密钥环

[vpn-secrets]
password=MyVPNPassword

三、配置示例全集

     示例 1:静态IP有线连接

[connection]
id=Server-NIC1
uuid=550e8400-e29b-41d4-a716-446655440000
type=ethernet
interface-name=eno1

[ethernet]
mac-address=00:11:22:33:44:55

[ipv4]
method=manual
addresses=192.168.1.10/24
gateway=192.168.1.1
dns=192.168.1.1;

     示例 2:WPA3企业级WiFi

[connection]
id=Enterprise-WiFi
type=wifi

[wifi]
ssid=CorpNet
mode=infrastructure

[wifi-sec]
key-mgmt=wpa-eap
eap=peap;
identity=jsmith
phase2-auth=mschapv2

[ipv4]
method=auto

[802-1x]
eap=peap;
identity=jsmith
password=!secret_password
phase2-autheap=mschapv2

     示例 3:网桥连接

[connection]
id=Network-Bridge
type=bridge
interface-name=br0

[bridge]
stp=false

[ipv4]
method=manual
addresses=10.0.0.1/24

# 从接口配置(单独文件)
[connection]
id=br0-slave-eth1
type=ethernet
master=br0
slave-type=bridge

















[connection]

*.nmconnection 配置文件中 [connection] 段详解

[connection] 段是 NetworkManager 连接配置文件(*.nmconnection)的核心部分,它定义了网络连接的基本属性和全局行为。以下是该段的全面解析:


一、[connection] 段的核心作用

  1. 连接元数据定义:唯一标识连接的基本信息
  2. 连接类型声明:确定网络连接的类型和行为
  3. 全局行为控制:管理连接的激活、优先级和安全策略
  4. 设备绑定:指定连接的物理/虚拟接口
  5. 多连接协调:处理主从连接关系

二、完整参数列表及详解

     1. 基础标识参数

参数值类型默认值说明
id字符串必填连接的人类可读名称(显示名)
示例:id=Office-WiFi
uuidUUID必填全局唯一标识符(32字符)
自动生成示例:uuid=550e8400-e29b-41d4-a716-446655440000
type字符串必填连接类型:
ethernet, wifi, bridge, vlan, bond, vpn

     2. 接口绑定参数

参数值类型默认值说明
interface-name字符串强绑定到指定网络接口
示例:interface-name=eth0
(优先级高于[match]段)
llmnr整型-1LLMNR解析支持:
-1=默认, 0=禁用, 1=解析, 2=解析+广播
mdns整型-1mDNS支持:
-1=默认, 0=禁用, 1=解析, 2=解析+广播
dns-over-tls整型-1DNS-over-TLS支持:
-1=默认, 0=禁用, 1=机会模式, 2=严格模式

     3. 自动连接控制

参数值类型默认值说明
autoconnect布尔true是否自动尝试连接
true/false
autoconnect-priority整型0自动连接优先级(-999~999)
值越高优先级越高
autoconnect-retries整型-1连接失败重试次数
-1=无限重试
autoconnect-slaves整型-1主连接激活时从接口行为:
-1=默认, 0=不激活, 1=激活

     4. 主从连接管理

参数值类型默认值说明
masterUUID主连接UUID(用于从属接口)
示例:master=2fbd0e58-9a8d-4f5a-a340-6a0ad00d8c99
slave-type字符串从接口类型:
bridge, bond, team
controllerUUID控制器连接UUID(同master)
port-type字符串端口类型(同slave-type)

     5. 安全与权限

参数值类型默认值说明
permissions字符串访问控制列表
格式:user:<username>:;<group>:<groupname>:
示例:permissions=user:alice:;group:netadmins:
timestamp时间戳当前时间最后修改时间(epoch秒)
read-only布尔false是否只读连接

     6. 高级参数

参数值类型默认值说明
gateway-ping-timeout整型0网关ping超时时间(秒)
0=禁用
metered整型-1网络计量状态:
-1=未知, 0=不计费, 1=计费
stable-id字符串稳定连接ID模板
示例:stable-id=${CONNECTION}-${BOOT}
wait-activation-delay整型-1等待激活延迟(毫秒)
zone字符串防火墙区域
示例:zone=trusted

三、参数使用场景详解

     1. 基本连接定义

[connection]
id=Primary-Ethernet
uuid=550e8400-e29b-41d4-a716-446655440000
type=ethernet

     2. 接口强绑定

[connection]
interface-name=eno1  # 严格绑定到 eno1 接口

     3. 自动连接优化

[connection]
autoconnect=true
autoconnect-priority=500  # 高优先级
autoconnect-retries=5     # 最多重试5次

     4. 主从连接配置

# 从接口配置
[connection]
master=2fbd0e58-9a8d-4f5a-a340-6a0ad00d8c99  # 主网桥UUID
slave-type=bridge

     5. 权限管理

[connection]
permissions=user:admin:;group:wheel:;  # 允许admin用户和wheel组管理
read-only=true  # 普通用户不可修改

     6. 高级网络特性

[connection]
mdns=2            # 启用完整mDNS支持
dns-over-tls=2    # 启用严格DNS-over-TLS
metered=0         # 标记为不计费网络
zone=internal     # 分配到内部防火墙区域

四、特殊值与变量扩展

     1. 布尔值表示

  • true/yes/on/1
  • false/no/off/0

     2. 环境变量扩展

[connection]
id=Host-${HOSTNAME}  # 使用系统主机名
stable-id=${CONNECTION}-${MAC}  # 使用连接名和MAC组合

     3. 保留值

说明
${BOOT}系统启动ID
${CONNECTION}连接名称
${DEVICE}接口名称
${MAC}MAC地址
${RANDOM}随机数

五、配置示例

     示例1:标准企业有线连接

[connection]
id=Corporate-LAN
uuid=550e8400-e29b-41d4-a716-446655440000
type=ethernet
interface-name=eno1
autoconnect=true
autoconnect-priority=1000
permissions=user:admin:;group:it:;
zone=corporate

     示例2:高优先级WiFi连接

[connection]
id=Enterprise-WiFi
uuid=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
type=wifi
autoconnect=true
autoconnect-priority=900  # 低于有线但高于其他无线
metered=0
dns-over-tls=2

     示例3:网桥从接口

[connection]
id=br0-slave-eth1
uuid=bbbbbbbb-cccc-dddd-eeee-ffffffffffff
type=ethernet
master=2fbd0e58-9a8d-4f5a-a340-6a0ad00d8c99  # 主网桥UUID
slave-type=bridge
autoconnect=true
autoconnect-slaves=1  # 随主连接自动激活

六、最佳实践与注意事项

  1. UUID管理

    # 生成新UUID
    uuidgen
    > 550e8400-e29b-41d4-a716-446655440000
    

    避免手动复制UUID导致冲突

  2. 优先级策略

    • 有线连接:1000-900
    • 主无线:800-700
    • 备用无线:600-500
    • VPN连接:400-300
  3. 安全建议

    # 限制管理权限
    permissions=user:admin:;
    
    # 敏感连接设为只读
    read-only=true
    
  4. 接口绑定选择

    • 服务器/固定设备:使用interface-name
    • 移动设备/通用配置:使用[match]
  5. 连接重载

    # 修改后必须重载
    sudo nmcli con reload
    
  6. 故障排查

    # 查看完整连接属性
    nmcli -g all connection show "Connection-Name"
    
    # 检查活动连接
    nmcli con show --active
    

⚠️ 关键警告

  • 避免直接编辑活动连接的配置文件
  • 修改前备份:sudo cp filename.nmconnection{,.bak}
  • 测试配置:nmcli con load filename.nmconnection

















[match]

*.nmconnection 配置文件中的 [match] 段详解

在 NetworkManager 的连接配置文件(/etc/NetworkManager/system-connections/*.nmconnection)中,[match] 段用于精确控制该连接配置在哪些网络设备上生效。这是实现设备特定配置的核心机制。


一、[match] 段的核心作用

  • 设备过滤:指定连接配置仅应用于匹配特定条件的物理/虚拟设备
  • 精确控制:避免通用配置应用到不兼容的设备
  • 多设备管理:为不同设备创建专属配置(如不同网卡使用不同 IP)
  • 热插拔支持:自动应用于新插入的匹配设备

二、完整参数列表与用法

     1. 基础匹配参数

参数值类型示例说明
interface-name接口名/通配符eth0, enp*, !veth0按接口名匹配(!表示排除)
mac-addressMAC 地址00:11:22:33:44:55按物理地址匹配(字母小写)
driver驱动名e1000e, rtl8169按网卡驱动匹配
path设备路径pci-0000:00:1c.0按硬件路径匹配(通过 udevadm info /sys/class/net/eth0 获取)

     2. 高级匹配参数

参数值类型示例说明
kernel-command-line内核参数net.ifnames=0按内核启动参数匹配
s390-subchannels子通道号0.0.1234,0.0.5678IBM s390 架构专用
type设备类型vlan, bridge按虚拟设备类型匹配
ssidWiFi SSIDMyHomeWiFiWiFi 连接的 SSID 匹配(需配合 [wifi] 段)

     3. 特殊匹配语法

语法示例说明
通配符 *enp*s0匹配 enp3s0, enp4s0
列表分隔符 ,eth0,wlan0同时匹配多个设备
排除符 !!docker0排除特定设备
正则表达式mac:aa:.*:cc正则匹配(需用引号包裹)

三、配置示例

     示例 1:为特定网卡设置静态 IP

[connection]
id=Server-Eth0
type=ethernet
uuid=550e8400-e29b-41d4-a716-446655440000

[match]
mac-address=00:11:22:33:44:55  # 只应用于此 MAC 的网卡

[ipv4]
method=manual
address1=192.168.1.100/24,192.168.1.1
dns=8.8.8.8;

     示例 2:排除虚拟设备

[connection]
id=Main-Ethernet
type=ethernet

[match]
interface-name=eth*,!eth1:avahi  # 匹配所有 eth* 但不包含 eth1:avahi

[ipv4]
method=auto

     示例 3:多条件组合匹配

[connection]
id=Intel-WiFi
type=wifi

[match]
driver=iwlwifi          # Intel 无线网卡驱动
path=pci-0000:03:00.0   # 特定 PCI 路径

[wifi]
ssid=Office-Network
mode=infrastructure

[ipv4]
method=auto

四、匹配优先级规则 当多个连接配置匹配同一设备时,按以下顺序确定优先级:

  1. 显式匹配[match] 段配置越具体,优先级越高
    # 优先级 1: 同时匹配 MAC 和接口名
    [match]
    mac-address=00:11:22:33:44:55
    interface-name=eth0
    
    # 优先级 2: 只匹配 MAC
    [match]
    mac-address=00:11:22:33:44:55
    
    # 优先级 3: 通配符匹配
    [match]
    interface-name=eth*
    
  2. 连接 UUID:当匹配条件相同时,按 UUID 字母顺序激活
  3. 手动覆盖nmcli con up <id> 强制指定连接

五、调试匹配问题

     1. 查看设备信息

# 获取设备详细信息
nmcli -f GENERAL,DEVICE,TYPE,DRIVER device show eth0

# 输出示例
GENERAL.DEVICE:                         eth0
GENERAL.TYPE:                           ethernet
GENERAL.DRIVER:                         e1000e
GENERAL.HWADDR:                         00:11:22:33:44:55
GENERAL.PATH:                           pci-0000:00:1c.0

     2. 测试匹配结果

# 检查配置是否匹配设备
sudo nmcli connection load /etc/NetworkManager/system-connections/MyConnection.nmconnection
nmcli -g match connection show "MyConnection"

     3. 日志分析

# 启用 DEBUG 日志
sudo nmcli general logging level DEBUG domains HW,RFKILL

# 查看匹配过程
journalctl -u NetworkManager | grep -i "match"

六、最佳实践与注意事项

  1. MAC 地址规范

    # 正确(小写无分隔符)
    mac-address=001122334455
    
    # 正确(小写冒号分隔)
    mac-address=00:11:22:33:44:55
    
    # 错误(大写)
    mac-address=00:11:22:33:44:55  # 不会匹配!
    
  2. 虚拟设备处理

    # 排除 Docker 和 libvirt 虚拟接口
    [match]
    interface-name=*,!veth*,!virbr*,!docker*
    
  3. 热插拔设备

    # 匹配所有 USB 以太网适配器
    [match]
    path=usb-*
    
  4. WiFi 特殊匹配

    [connection]
    id=Home-WiFi
    type=wifi
    
    [match]
    ssid=MyHomeNetwork  # 匹配特定 SSID
    
    [wifi-sec]
    key-mgmt=wpa-psk
    psk=Passw0rd123
    
  5. 配置重载

    # 修改后必须重载配置
    sudo nmcli connection reload
    

⚠️ 关键提示:当设备同时匹配多个连接时,NetworkManager 优先选择 autoconnect-priority 值最高 的连接。可通过以下命令设置优先级:

nmcli con mod "MyConnection" connection.autoconnect-priority 10

















[ipv4]

*.nmconnection 配置文件中 [ipv4] 段深度详解

[ipv4] 段是 NetworkManager 连接配置文件的核心组成部分,负责定义 IPv4 网络的所有关键参数。以下是该段的全面解析:


一、[ipv4] 段的核心作用

  1. IP地址分配:定义静态IP或DHCP自动获取
  2. 路由控制:管理网关、静态路由和路由优先级
  3. DNS配置:设置域名解析服务器和搜索域
  4. 高级网络特性:控制地址冲突检测、连接超时等
  5. 网络计量:标记计费网络以优化流量使用

二、完整参数列表与详解

     1. 基础地址配置

参数值类型默认值说明
method字符串必填auto(DHCP), manual(静态), link-local, shared, disabled
addressesIP列表静态IP地址:192.168.1.100/24
多IP格式address1=192.168.1.100/24; address2=10.0.0.2/16;
gatewayIP默认网关:192.168.1.1
route-metric整数0路由优先级 (值小优先)
dnsIP列表DHCP提供DNS服务器:8.8.8.8,1.1.1.1;
注意分号结尾
dns-search域名列表DNS搜索域:example.com,lab.example.com;

     2. DHCP 高级控制

参数值类型默认值说明
dhcp-send-hostname布尔true是否发送主机名给DHCP服务器
dhcp-hostname字符串系统主机名指定发送的DHCP主机名
dhcp-client-id字符串DHCP客户端标识符
dhcp-timeout整数45DHCP请求超时(秒)
dhcp-hostname-flags整型00=始终发送, 1=仅当配置

     3. 路由与网关控制

参数值类型默认值说明
routes路由列表静态路由:10.0.0.0/8 192.168.1.254, 20
(目标 网关 跃点数)
ignore-auto-routes布尔false忽略DHCP提供的路由
never-default布尔false禁止设为默认路由
route-table整数main自定义路由表ID
routing-rule规则列表高级路由规则

     4. DNS 高级控制

参数值类型默认值说明
ignore-auto-dns布尔false忽略DHCP提供的DNS
dns-options字符串DNS解析选项:rotate,timeout:2
dns-priority整数0DNS服务器优先级

     5. 高级网络特性

参数值类型默认值说明
may-fail布尔trueIP获取失败时仍激活连接
required-timeout整数-1IP获取等待时间(毫秒)
dad-timeout整数0重复地址检测超时
dhcp-fqdn字符串完全限定域名(FQDN)
gateway-ping-timeout整数0网关可达性检测超时(秒)

     6. 网络计量与优化

参数值类型默认值说明
metered整型-1-1=未知, 0=不计费, 1=计费
auto-route-ext-gw布尔true是否添加默认路由

三、配置模式详解

     1. DHCP 模式 (method=auto)

[ipv4]
method=auto
dns=8.8.8.8;  # 覆盖DHCP提供的DNS
ignore-auto-dns=true
dhcp-hostname=client01
dhcp-timeout=30

     2. 静态 IP 模式 (method=manual)

[ipv4]
method=manual
addresses=192.168.1.100/24,10.0.0.2/16;  # 多IP支持
gateway=192.168.1.1
dns=192.168.1.1,8.8.8.8;
dns-search=mydomain.com;
routes=10.10.0.0/16 192.168.1.254, 20;  # 静态路由
route-metric=100

     3. 仅链路本地地址 (method=link-local)

[ipv4]
method=link-local
# 自动获取169.254.0.0/16地址

     4. 共享网络模式 (method=shared)

[ipv4]
method=shared
# 启用NAT共享网络 (常用于热点)

四、高级配置技巧

     1. 多IP地址配置

[ipv4]
method=manual
addresses=192.168.1.100/24;  # 主IP
addresses=10.0.0.100/16;      # 辅助IP
addresses=172.16.0.50/12;     # 第三个IP

     2. 复杂静态路由

[ipv4]
routes=10.0.0.0/8 192.168.1.254, 10;      # 目标网络/掩码 网关 跃点数
routes=172.16.0.0/12 192.168.1.253, 20;
routes=0.0.0.0/0 192.168.1.1;             # 默认路由
never-default=false                        # 允许默认路由

     3. 企业级DNS配置

[ipv4]
dns=10.10.10.10,10.10.10.20;  # 内部DNS
dns=8.8.8.8;                   # 备用DNS
dns-search=corp.example.com,region.corp.example.com;
dns-options=rotate,timeout:2,attempts:3;
dns-priority=50

     4. 路由优先级优化

# 有线连接 - 高优先级
[ipv4]
route-metric=100  # 值小优先级高

# WiFi连接 - 低优先级
[ipv4]
route-metric=300

     5. 网关健康检查

[ipv4]
gateway=192.168.1.1
gateway-ping-timeout=5  # 5秒内无响应则切换
may-fail=true           # 允许临时失败

五、企业级场景配置

     场景1:双网关负载均衡

[ipv4]
method=manual
addresses=192.168.1.100/24

# 主网关
routes=0.0.0.0/0 192.168.1.1, 100

# 备用网关
routes=0.0.0.0/0 192.168.1.254, 200

# 特定流量走专线
routes=10.100.0.0/16 192.168.1.50, 50

     场景2:VPN分流路由

[ipv4]
method=auto

# 忽略VPN默认路由
never-default=true

# 仅公司内网走VPN
routes=10.0.0.0/8 192.168.1.254;
routes=172.16.0.0/12 192.168.1.254;
ignore-auto-routes=true

     场景3:高可用数据中心网络

[ipv4]
method=manual
addresses=10.0.0.100/24
gateway=10.0.0.1

# 多路径路由
routes=192.168.0.0/16 10.0.0.10, 10 table=100
routes=192.168.0.0/16 10.0.0.20, 20 table=100

# 路由规则
routing-rule=priority 100 from 10.0.0.100 table 100

六、故障排查与验证

     1. 配置验证命令

# 查看生效的IPv4配置
nmcli -g ipv4 connection show "Connection-Name"

# 详细路由信息
ip -4 route show

# DNS配置验证
systemd-resolve --status

     2. 日志调试

# 启用DHCP调试
sudo nmcli general logging level DEBUG domains DHCP

# 查看实时日志
journalctl -f -u NetworkManager

     3. 连接测试

# 网关可达性
ping 192.168.1.1

# DNS解析
nslookup example.com

# 路由追踪
traceroute 8.8.8.8

     4. 常见问题解决方案

问题解决方案
IP冲突增加 dad-timeout=5000
DHCP超时减少 dhcp-timeout=30
路由缺失检查 ignore-auto-routesnever-default
DNS不生效设置 ignore-auto-dns=true 并指定DNS
多IP失效确认使用分号分隔地址

七、最佳实践建议

  1. 生产环境推荐配置

    [ipv4]
    method=manual
    addresses=192.168.1.100/24
    gateway=192.168.1.1
    dns=192.168.1.1;
    dns-search=example.com;
    ignore-auto-dns=true
    route-metric=100
    may-fail=false
    
  2. 安全强化配置

    [ipv4]
    dhcp-hostname-flags=1  # 不发送主机名
    dns-options=edns0     # 启用DNSSEC
    
  3. 移动设备优化

    [ipv4]
    method=auto
    dhcp-timeout=15
    may-fail=true
    metered=1  # 标记为计费网络
    
  4. 云环境特殊配置

    [ipv4]
    method=manual
    addresses=10.0.0.100/24
    routes=0.0.0.0/0 10.0.0.1 table=main
    route-metric=50
    

⚠️ 关键提示:修改后必须执行:

sudo nmcli con reload
sudo nmcli con down "Connection-Name" && sudo nmcli con up "Connection-Name"

通过合理配置 [ipv4] 段,可以实现从简单家庭网络到复杂企业网络的全方位IP管理,满足各种网络架构需求。

















[ipv6]

*.nmconnection 配置文件中 [ipv6] 段深度详解

[ipv6] 段是 NetworkManager 连接配置文件中管理 IPv6 网络的核心部分,它控制着 IPv6 地址分配、路由、DNS 以及高级隐私特性。以下是全面解析:


一、[ipv6] 段的核心作用

  1. IPv6地址分配:SLAAC、DHCPv6 或静态地址配置
  2. 路由管理:IPv6 网关和静态路由控制
  3. DNS配置:IPv6 DNS 服务器和搜索域设置
  4. 隐私保护:管理临时地址和隐私扩展
  5. 地址生成:控制 EUI-64 或随机地址生成
  6. 双栈协调:与 IPv4 配置协同工作

二、完整参数列表与详解

     1. 基础地址配置

参数值类型默认值说明
method字符串必填auto(SLAAC+DHCPv6), dhcp(仅DHCPv6), manual(静态), link-local, ignore, disabled
addressesIPv6列表静态地址:2001:db8::1/64
多地址格式address1=2001:db8::1/64; address2=2001:db8:1::2/64;
gatewayIPv6默认网关:fe80::1
route-metric整数-1路由优先级 (-1=自动)
dnsIPv6列表DNS服务器:2001:4860:4860::8888, 2606:4700:4700::1111;
dns-search域名列表DNS搜索域:example.com;

     2. 自动配置参数

参数值类型默认值说明
addr-gen-mode整型1地址生成模式:
0=EUI-64
1=稳定隐私(默认)
2=随机
dhcp-send-hostname布尔true是否发送主机名
dhcp-hostname字符串系统主机名指定发送的主机名
ra-timeout整数0路由器通告等待超时(秒)

     3. 隐私扩展控制

参数值类型默认值说明
ip6-privacy整型-1隐私扩展:
-1=全局默认
0=禁用
1=仅临时地址
2=启用(临时+优选)
temp-addr字符串已废弃(用ip6-privacy代替)

     4. 路由与网关控制

参数值类型默认值说明
routes路由列表静态路由:2001:db8:1::/64 fe80::1, 10
ignore-auto-routes布尔false忽略RA提供的路由
never-default布尔false禁止设为默认路由
route-table整数main自定义路由表ID
tokenIPv6::用于SLAAC的地址生成令牌

     5. DNS 高级控制

参数值类型默认值说明
ignore-auto-dns布尔false忽略RA提供的DNS
dns-priority整数0DNS服务器优先级

     6. 高级网络特性

参数值类型默认值说明
may-fail布尔trueIP获取失败时仍激活连接
required-timeout整数-1IP获取等待时间(毫秒)
dhcp-timeout整数45DHCPv6请求超时(秒)
dhcp-duid字符串DHCP唯一标识符

三、配置模式详解

     1. SLAAC+DHCPv6 (method=auto)

[ipv6]
method=auto
addr-gen-mode=1        # 稳定隐私地址(默认)
ip6-privacy=2          # 启用隐私扩展
dns=2606:4700:4700::1111;  # 指定DNS
ignore-auto-dns=true

     2. 仅DHCPv6 (method=dhcp)

[ipv6]
method=dhcp
dhcp-timeout=30        # 缩短超时时间
dhcp-hostname=client01 # 指定主机名
dhcp-duid=00030001aabbccddeeff # 固定DUID

     3. 静态IPv6 (method=manual)

[ipv6]
method=manual
addresses=2001:db8::100/64, 2001:db8:1::100/64;
gateway=fe80::1%eth0   # 指定作用域
dns=2001:4860:4860::8888;
routes=2001:db8:2::/64 fe80::2, 10;  # 静态路由

     4. 仅链路本地地址 (method=link-local)

[ipv6]
method=link-local
# 自动生成fe80::/10地址

四、高级配置技巧

     1. 隐私地址最佳实践

[ipv6]
method=auto
addr-gen-mode=1      # 稳定隐私地址
ip6-privacy=2        # 启用隐私扩展(生成临时地址)
token=::             # 使用默认令牌

     2. 多前缀地址配置

[ipv6]
method=manual
addresses=2001:db8:100::10/64;   # 主前缀
addresses=2001:db8:200::20/64;   # 辅助前缀
addresses=fd00:1234:5678::1/64;  # ULA地址

     3. 企业级DNS配置

[ipv6]
dns=2001:db8::53;    # 内部DNS
dns=2606:4700:4700::1111;  # 备用DNS
dns-search=example.com;
dns-priority=100     # 高优先级

     4. 路由策略优化

[ipv6]
gateway=fe80::1%eth0
route-metric=100
routes=2001:db8:100::/48 fe80::2, 10;
routes=2001:db8:200::/48 fe80::3, 20;
never-default=false

     5. DHCPv6企业级配置

[ipv6]
method=dhcp
dhcp-hostname=server01.example.com
dhcp-duid=00030001aabbccddeeff  # 固定DUID
dhcp-timeout=15
may-fail=false

五、企业级场景配置

     场景1:双栈网络配置

# IPv4配置
[ipv4]
method=manual
addresses=192.168.1.100/24
gateway=192.168.1.1
dns=192.168.1.1;

# IPv6配置
[ipv6]
method=manual
addresses=2001:db8::100/64
gateway=fe80::1%eth0
dns=2001:db8::53
route-metric=100

     场景2:IPv6-only网络

[ipv4]
method=disabled      # 禁用IPv4

[ipv6]
method=auto
addr-gen-mode=1
ip6-privacy=2
ignore-auto-dns=true
dns=2606:4700:4700::1111;
dns-search=ipv6-only.example.com;

     场景3:6in4隧道配置

[connection]
id=HE-tunnel
type=ip-tunnel
tunnel-mode=6in4

[ip-tunnel]
mode=6
local=203.0.113.5
remote=216.66.84.46   # HE隧道服务器

[ipv6]
method=manual
addresses=2001:470:1f10:1234::2/64
gateway=2001:470:1f10:1234::1

     场景4:多宿主IPv6路由

[ipv6]
method=manual
addresses=2001:db8:100::10/64

# 主ISP路由
routes=::/0 2001:db8:100::1, 100

# 备份ISP路由
routes=::/0 2001:db8:200::1, 200

# 内部网络路由
routes=2001:db8:300::/48 2001:db8:100::254, 10

六、故障排查与验证

     1. 配置验证命令

# 查看IPv6配置
nmcli -g ipv6 connection show "Connection-Name"

# 检查IPv6地址
ip -6 addr show

# 查看IPv6路由
ip -6 route show

# 测试IPv6连通性
ping6 2001:4860:4860::8888

     2. 日志调试

# 启用IPv6调试
sudo nmcli general logging level DEBUG domains IP6

# 查看RA报文
sudo tcpdump -i eth0 -vvv icmp6 and ip6[40] == 134

     3. 连接测试

# 网关可达性
ping6 fe80::1%eth0

# DNS解析
dig AAAA example.com @2001:4860:4860::8888

# 路径MTU发现
tracepath6 example.com

     4. 常见问题解决方案

问题解决方案
无IPv6地址检查method是否设为automanual
临时地址未生成确保ip6-privacy=2
DNS解析失败检查ignore-auto-dnsdns设置
网关不可达确认gateway格式含作用域%eth0
DHCPv6超时减少dhcp-timeout

七、最佳实践建议

  1. 生产环境推荐配置

    [ipv6]
    method=manual
    addresses=2001:db8::100/64
    gateway=fe80::1%eth0
    dns=2001:db8::53;
    ignore-auto-dns=true
    route-metric=100
    ip6-privacy=2
    
  2. 隐私保护配置

    [ipv6]
    method=auto
    addr-gen-mode=1      # 稳定隐私地址
    ip6-privacy=2        # 启用隐私扩展
    token=::             # 默认令牌
    
  3. 双栈网络优化

    [ipv4]
    ... # IPv4配置
    route-metric=100
    
    [ipv6]
    ... # IPv6配置
    route-metric=100     # 相同优先级
    
  4. 企业网络规范

    [ipv6]
    dhcp-duid=00030001aabbccddeeff  # 固定DUID
    dhcp-hostname=server01.example.com
    never-default=false
    ignore-auto-routes=true
    

⚠️ 关键提示:修改后必须执行:

sudo nmcli con reload
sudo nmcli con down "Connection-Name" && sudo nmcli con up "Connection-Name"

通过合理配置 [ipv6] 段,您可以构建从基础 IPv6 连接到复杂企业级 IPv6 网络的全套解决方案,满足现代网络对 IPv6 的各种需求。

















[ethernet]`段

*.nmconnection 配置文件中 [ethernet] 段深度详解

[ethernet] 段是专门用于有线以太网连接的配置部分,提供了对物理网卡行为的精细控制。以下是该段的全面解析:


一、[ethernet] 段的核心作用

  1. 硬件控制:管理网卡速度和双工模式
  2. MAC地址操作:设置克隆地址或固定MAC
  3. 流量控制:配置巨型帧和流控制
  4. 唤醒功能:管理网络唤醒设置
  5. 连接验证:配置链路检测机制

二、完整参数列表与详解

     1. MAC地址控制

参数值类型默认值说明
mac-addressMAC地址永久绑定到特定MAC
示例:mac-address=00:11:22:33:44:55
cloned-mac-addressMAC地址临时克隆MAC地址
random=每次连接随机生成
stable=生成稳定地址
preserve=保持当前MAC
generate-mac-address-mask字符串生成MAC的掩码规则
示例:02:00:00:00:00:00
mac-address-blacklistMAC列表禁止使用的MAC地址

     2. 速度与双工控制

参数值类型默认值说明
speed整数0强制端口速度(Mbps)
10,100,1000,2500,10000
duplex字符串双工模式:half,full
auto-negotiate布尔true是否自动协商速度/双工

     3. 高级特性配置

参数值类型默认值说明
mtu整数1500最大传输单元(巨型帧)
范围:68-65535
s390-subchannels字符串IBM s390架构通道ID
s390-nettype字符串s390网络类型:lcs,ctc,qeth
wake-on-lan整型1网络唤醒功能
0=禁用,1=启用(默认),2=仅魔法包
wake-on-lan-passwordMACWoL安全密码

     4. 链路检测与验证

参数值类型默认值说明
link-negated布尔false反转链路检测逻辑
assume-carrier布尔false假设载波始终存在

三、参数使用场景详解

     1. 企业网络MAC绑定

[ethernet]
mac-address=00:50:56:12:34:56  # 固定MAC
cloned-mac-address=preserve     # 保持真实MAC

     2. 数据中心高速网络

[ethernet]
speed=10000        # 10Gbps
duplex=full        # 全双工
auto-negotiate=false  # 禁用自动协商
mtu=9000           # 巨型帧支持

     3. 服务器唤醒配置

[ethernet]
wake-on-lan=2      # 仅响应魔法包
wake-on-lan-password=00:11:22:33:44:55  # WoL密码

     4. 网络隔离环境

[ethernet]
assume-carrier=true  # 无物理链路时仍激活
link-negated=true    # 反转链路检测

     5. 虚拟化环境优化

[ethernet]
mtu=1500            # 标准MTU
cloned-mac-address=random  # 每次随机MAC

四、企业级场景配置

     场景1:金融交易网络

[ethernet]
speed=10000        # 10Gbps固定
duplex=full
auto-negotiate=false
mtu=9000           # 低延迟巨型帧
wake-on-lan=0      # 禁用唤醒功能

     场景2:虚拟化主机

[ethernet]
cloned-mac-address=stable  # 生成稳定MAC
generate-mac-address-mask=02:00:00:00:00:00
mtu=1500
assume-carrier=true  # 应对虚拟网卡

     场景3:工业控制系统

[ethernet]
speed=100          # 强制100Mbps
duplex=full
auto-negotiate=false
link-negated=true  # 反转链路检测逻辑

     场景4:IBM s390主机

[ethernet]
s390-subchannels=0.0.0a00,0.0.0a01
s390-nettype=qeth
s390-options=portname=FOOBAR

五、最佳实践与注意事项

     1. 速度协商规则

场景推荐配置
已知交换机speed=1000, duplex=full, auto-negotiate=false
未知环境auto-negotiate=true (默认)
混合环境speed=0, duplex=null, auto-negotiate=true

     2. MTU配置指南

网络类型推荐MTU
标准以太网1500
巨型帧网络9000
PPPoE1492
互联网VPN1400

     3. MAC安全实践

# 禁止使用厂商默认MAC
mac-address-blacklist=00:50:56:00:00:00-00:50:56:FF:FF:FF

# 生成唯一MAC
cloned-mac-address=random
generate-mac-address-mask=02:00:00:00:00:00

     4. 故障排查命令

# 查看协商状态
ethtool eth0

# 检查MTU配置
ip link show eth0

# 验证MAC地址
ip link | grep eth0 -A1

# 测试链路状态
ethtool -t eth0

     5. 配置验证流程

  1. 检查物理连接状态
  2. 验证速度/双工匹配交换机
  3. 确认MTU端到端一致
  4. 测试网络唤醒功能
  5. 检查MAC地址是否符合策略

六、特殊配置技巧

     1. 永久MAC与临时MAC组合

[ethernet]
mac-address=00:11:22:33:44:55  # 真实MAC
cloned-mac-address=random       # 对外使用随机MAC

     2. 巨型帧端到端配置

# 服务器端
[ethernet]
mtu=9000

# 交换机配置
switch(config)# system mtu jumbo 9000

# 客户端配置
[ethernet]
mtu=9000

     3. 工业环境抗干扰配置

[ethernet]
speed=10            # 强制10Mbps提高抗干扰
duplex=half
auto-negotiate=false
assume-carrier=true # 忽略瞬断

     4. 虚拟化热迁移优化

[ethernet]
cloned-mac-address=stable  # 保持MAC稳定
generate-mac-address-mask=02:00:00:00:00:00
wake-on-lan=0              # 禁用唤醒

⚠️ 关键警告

  1. 修改MTU需确保网络设备支持
  2. 固定速度/双工时需匹配交换机配置
  3. MAC变更可能导致DHCP租约问题
  4. 配置后需重启连接:
    sudo nmcli con down "Connection" && sudo nmcli con up "Connection"
    

通过合理配置 [ethernet] 段,可以实现从基础网络连接到企业级高性能网络的精细控制,满足各种有线网络场景的需求。

















[wifi]

*.nmconnection 配置文件中 [wifi] 段深度详解

[wifi] 段是无线网络连接的核心配置部分,控制着 Wi-Fi 的 SSID、操作模式、频段选择等关键参数。以下是全面解析:


一、[wifi] 段的核心作用

  1. 网络标识:定义连接的 SSID(网络名称)
  2. 操作模式:配置设备角色(客户端、热点、点对点等)
  3. 频段控制:优化 2.4GHz 和 5GHz 性能
  4. AP锁定:强制连接到特定接入点
  5. 隐藏网络:连接不可见的 SSID
  6. 网状网络:配置 Wi-Fi Mesh 网络

二、完整参数列表与详解

     1. 基础网络参数

参数值类型默认值说明
ssid字节数组必填网络SSID(十六进制或字符串)
示例:ssid=4d7957694669 (MyWiFi)
mode字符串infrastructure设备模式:
infrastructure(客户端)
ap(热点)
adhoc(点对点)
mesh(网状网络)
bssidMAC地址指定接入点MAC(格式:00:11:22:33:44:55

     2. 无线性能优化

参数值类型默认值说明
band字符串频段限制:
a(5GHz)
bg(2.4GHz)
auto(自动)
channel整数0无线信道(0=自动)
常用:1,6,11(2.4G) 36,149(5G)
rate整数0固定传输速率(Mb/s,0=自动)
tx-power整数0发射功率(dBm,0=自动)

     3. 特殊网络类型

参数值类型默认值说明
hidden布尔false是否隐藏网络
mesh-channel整数0网状网络信道
mesh-psk字符串网状网络预共享密钥
mesh-mtu整数0网状网络MTU

三、SSID 编码详解

     1. ASCII 字符串格式

[wifi]
ssid=MyHomeWiFi

     2. 十六进制格式(推荐)

# 转换SSID为十六进制
echo -n "MyWiFi" | xxd -ps
# 输出:4d7957694669
[wifi]
ssid=4d7957694669

     3. 特殊字符处理

# 包含空格的SSID
ssid=4f66666963652057694669  # "Office WiFi"

# 中文SSID
ssid=e4b8ade69687e7bd91e7bb9c  # "中文网络"

四、操作模式详解

     1. 客户端模式 (mode=infrastructure)

[wifi]
ssid=CoffeeShop
mode=infrastructure
band=a      # 优先5GHz

     2. 热点模式 (mode=ap)

[wifi]
ssid=MyHotspot
mode=ap
band=bg     # 2.4GHz
channel=6

     3. 点对点模式 (mode=adhoc)

[wifi]
ssid=Direct-Link
mode=adhoc
channel=11

     4. 网状网络 (mode=mesh)

[wifi]
ssid=CommunityMesh
mode=mesh
mesh-channel=1
mesh-psk=SharedSecret123

五、高级配置技巧

     1. 锁定最佳接入点

[wifi]
ssid=OfficeNet
bssid=00:11:22:33:44:55  # 固定连接高质量AP

     2. 双频段优化配置

# 5GHz优先配置
[wifi]
ssid=HomeNetwork
band=a
channel=149

# 2.4GHz备选配置
[wifi]
ssid=HomeNetwork
band=bg
channel=1

     3. 隐藏网络连接

[wifi]
ssid=SecretNet
hidden=true

     4. 企业级漫游优化

[wifi]
ssid=Enterprise-Net
# 不指定bssid实现AP间无缝漫游
band=auto

六、企业级场景配置

     场景1:高密度场所WiFi

[wifi]
ssid=Stadium-WiFi
band=a          # 5GHz抗干扰
channel=157     # 高频信道
tx-power=15     # 降低功率减少干扰

     场景2:工业物联网网络

[wifi]
ssid=Factory-Net
mode=adhoc      # 点对点直连
channel=6       # 2.4GHz穿墙
rate=24         # 固定低速率增强稳定性

     场景3:企业网状网络

[wifi]
ssid=Corp-Mesh
mode=mesh
mesh-channel=36
mesh-psk=Ky9#x!W8qZ
mesh-mtu=1500

     场景4:临时活动热点

[wifi]
ssid=Event-Hotspot
mode=ap
band=bg         # 兼容旧设备
channel=11      # 非重叠信道

七、安全配置联动

     1. WPA3 个人版

[wifi]
ssid=SecureNet

[wifi-sec]
key-mgmt=wpa-psk
psk=StrongPassw0rd!
proto=rsn
pairwise=ccmp
group-management=sha256

     2. WPA2 企业级

[wifi]
ssid=Enterprise-Net

[wifi-sec]
key-mgmt=wpa-eap

[802-1x]
eap=peap;
identity=user@company.com
password=MySecurePassword
phase2-auth=mschapv2

     3. 开放式热点

[wifi]
ssid=Free-WiFi

[wifi-sec]
key-mgmt=none

八、故障排查与优化

     1. 诊断命令

# 扫描无线网络
sudo iw dev wlan0 scan | egrep "SSID|freq|signal"

# 查看连接质量
iw dev wlan0 link

# 测试传输速率
iperf3 -c server_ip

     2. 日志调试

# 启用WiFi调试
sudo nmcli general logging level DEBUG domains WIFI

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

     3. 常见问题解决

问题解决方案
无法连接检查ssid编码和mode设置
速度慢优化channel选择,减少干扰
频繁断开设置bssid锁定高质量AP
隐藏网络不可见确保hidden=true
5GHz不可用检查band=a和网卡支持

     4. 性能优化矩阵

场景推荐配置
高密度环境band=a, channel>100, tx-power=15
远距离覆盖band=bg, channel=1/6/11, rate=24
低延迟应用band=a, fixed-channel, no-ht
旧设备兼容band=bg, mode=ap, no-vht

九、最佳实践建议

     1. 信道规划指南

频段推荐信道
2.4GHz1,6,11(非重叠)
5GHz低频36,40,44,48
5GHz高频149,153,157,161

     2. 企业SSID命名规范

# 部门+位置+频段
ssid=4567f1e4e5b7  # ENG-Floor1-5G

     3. 安全配置原则

[wifi-sec]
# 优先WPA3
key-mgmt=wpa-psk
proto=rsn
pairwise=ccmp
group-management=sha256

     4. 多AP部署建议

# 相同SSID,不同信道
AP1: [wifi] channel=1
AP2: [wifi] channel=6
AP3: [wifi] channel=11

⚠️ 关键提示:修改后需重启连接:

sudo nmcli con down "WiFi-Connection" && sudo nmcli con up "WiFi-Connection"

通过合理配置 [wifi] 段,可以实现从家庭网络到企业级无线网络的全方位优化,满足各种无线场景需求。

















[wifi-security]

*.nmconnection 配置文件中 [wifi-security] 段深度详解

[wifi-security] 段(也常写作 [wifi-sec])是无线网络安全配置的核心部分,负责管理认证、加密和安全协议。以下是该段的全面解析:


一、[wifi-security] 段的核心作用

  1. 认证管理:控制网络接入认证方式
  2. 加密配置:定义数据加密算法
  3. 密钥管理:设置预共享密钥或企业级凭证
  4. 安全协议:指定安全协议版本
  5. 高级保护:配置管理帧保护等增强功能

二、完整参数列表与详解

     1. 认证与密钥管理

参数值类型默认值说明
key-mgmt字符串必填密钥管理协议:
none(开放网络)
wpa-psk(WPA2个人版)
wpa-eap(WPA2企业版)
sae(WPA3个人版)
owe(WPA3增强开放)
psk字符串WPA预共享密钥(ASCII或十六进制)
示例:psk=Secret123psk=536563726574313233
psk-flags整型0密钥存储标志:
0=明文存储
1=每次询问
2=密钥环存储
leap-username字符串LEAP认证用户名
leap-password字符串LEAP密码(需配合psk-flags

     2. 加密协议配置

参数值类型默认值说明
proto字符串列表rsn安全协议:
wpa(WPA1)
rsn(WPA2)
wpa3(WPA3)
多协议:proto=rsn,wpa
pairwise字符串列表ccmp单播加密算法:
tkip(TKIP)
ccmp(AES-CCMP)
gcmp(AES-GCMP)
多算法:pairwise=ccmp,tkip
group字符串列表ccmp组播加密算法(选项同pairwise
group-management字符串default组密钥管理算法:
default
sha256(WPA3要求)

     3. WPA3/企业级扩展

参数值类型默认值说明
ieee80211w整型0PMF保护管理帧:
0=禁用
1=可选
2=必需
sae-pwe整型0SAE抗暴力破解机制:
0=自动
1=哈希迭代
2=狩猎与啄击
auth-alg字符串open认证算法:
open
shared
leap

     4. WEP配置(已淘汰)

参数值类型默认值说明
wep-key0~3字符串WEP密钥(索引0-3)
wep-key-type整型0WEP密钥类型:
0=十六进制
1=ASCII
wep-tx-keyidx整型0默认WEP密钥索引(0-3)

三、安全配置模式详解

     1. 开放网络(无加密)

[wifi-security]
key-mgmt=none

     2. WPA2 个人版 (PSK)

[wifi-security]
key-mgmt=wpa-psk
psk=MySecurePassword
proto=rsn
pairwise=ccmp
group=ccmp

     3. WPA3 个人版 (SAE)

[wifi-security]
key-mgmt=sae
psk=StrongerPassw0rd!
proto=wpa3
pairwise=ccmp
group=ccmp
ieee80211w=2  # 强制PMF

     4. WPA2 企业版 (EAP)

[wifi-security]
key-mgmt=wpa-eap
proto=rsn
pairwise=ccmp
group=ccmp

# 需配合802-1x段
[802-1x]
eap=peap;
identity=user@company.com
password=123456
phase2-auth=mschapv2

     5. WPA3 企业版

[wifi-security]
key-mgmt=wpa-eap
proto=wpa3
pairwise=ccmp
group=ccmp
ieee80211w=2

[802-1x]
eap=tls;
identity=user@company.com
private-key=/path/to/key.pem
client-cert=/path/to/cert.pem

四、高级配置技巧

     1. PSK安全存储

# 密钥环存储(推荐)
[wifi-security]
psk-flags=2

# 每次连接询问(最安全)
[wifi-security]
psk-flags=1

     2. 混合加密支持

# 兼容WPA/WPA2
[wifi-security]
proto=rsn,wpa
pairwise=ccmp,tkip
group=ccmp,tkip

     3. PMF保护配置

# 强制PMF(WPA3要求)
[wifi-security]
ieee80211w=2
group-management=sha256

     4. 企业级证书配置

[802-1x]
eap=tls;
identity=user@company.com
private-key=/etc/ssl/private/user.key
client-cert=/etc/ssl/certs/user.crt
ca-cert=/etc/ssl/certs/ca.crt

五、企业级场景配置

     场景1:金融机构WPA3

[wifi-security]
key-mgmt=sae
psk=Kj7#2!9xQ0z
proto=wpa3
pairwise=ccmp
group=ccmp
ieee80211w=2
sae-pwe=2  # 狩猎与啄击抗破解

     场景2:医院WPA2企业级

[wifi-security]
key-mgmt=wpa-eap
proto=rsn
pairwise=ccmp
group=ccmp

[802-1x]
eap=ttls;
identity=doctor_id
anonymous-identity=guest
password=medical$123
phase2-auth=md5

     场景3:教育机构混合网络

# 教师网络 (WPA3)
[wifi-security]
key-mgmt=sae
...

# 学生网络 (WPA2)
[wifi-security]
key-mgmt=wpa-psk
psk=Student$2023
...

     场景4:政府安全网络

[wifi-security]
key-mgmt=wpa-eap
proto=wpa3
ieee80211w=2

[802-1x]
eap=tls;
identity=employee@agency.gov
private-key=/etc/ssl/private/user.key
client-cert=/etc/ssl/certs/user.crt
ca-cert=/etc/ssl/certs/ca.crt

六、故障排查与安全审计

     1. 连接测试命令

# 扫描网络安全信息
sudo iw dev wlan0 scan | grep -E "SSID|capability|RSN|WPA|Authentication"

# 查看连接状态
nmcli -f GENERAL.WIFI-PROPERTIES dev wifi list

     2. 日志分析

# 启用WPA调试
sudo systemctl restart wpa_supplicant
sudo journalctl -u wpa_supplicant -f

     3. 安全审计要点

项目安全配置
加密协议WPA3 > WPA2 > WPA
加密算法CCMP > GCMP > TKIP
PMF支持强制(2) > 可选(1) > 禁用(0)
密钥存储密钥环(2) > 询问(1) > 明文(0)

     4. 常见问题解决

问题解决方案
无法连接WPA3检查网卡驱动是否支持WPA3
企业认证失败验证[802-1x]段配置
PMF不兼容降级为ieee80211w=1
WEP连接失败确认密钥索引和类型正确

七、最佳实践建议

     1. 安全配置矩阵

安全级别推荐配置
最高WPA3企业版+强制PMF+EAP-TLS
企业级WPA3个人版/企业版+强制PMF
标准WPA2企业版(EAP-PEAP/MSCHAPv2)
兼容WPA2个人版(AES-CCMP)
遗留WPA2混合加密(TKIP/CCMP)

     2. 密钥管理规范

# 禁用明文存储
psk-flags=1  # 或 2

# 定期更换PSK
[connection]
timestamp=1672531200  # 设置过期时间

     3. 企业网络策略

[wifi-security]
key-mgmt=wpa-eap
proto=wpa3
ieee80211w=2

[802-1x]
eap=peap;
ca-cert=/etc/ssl/certs/company-ca.pem

     4. 多SSID安全分级

# 安全区
ssid=SecureZone
[wifi-security] key-mgmt=wpa-eap...

# 访客区
ssid=GuestZone
[wifi-security] key-mgmt=wpa-psk...

⚠️ 关键警告

  1. 避免使用WEP和WPA(TKIP)
  2. 企业网络必须配合[802-1x]
  3. 修改后需重启连接:
    sudo nmcli con down "SSID" && sudo nmcli con up "SSID"
    

通过合理配置 [wifi-security] 段,可构建从基础家庭网络到高安全企业网络的无线安全体系。

















[bridge]

*.nmconnection 配置文件中 [bridge] 段深度详解

[bridge] 段是 NetworkManager 中网桥连接配置的核心部分,用于定义二层网桥设备的特性和行为。以下是该段的全面解析:


一、[bridge] 段的核心作用

  1. 环路防护:通过STP协议防止网络环路
  2. 性能优化:控制MAC地址老化、转发延迟等参数
  3. VLAN支持:配置VLAN过滤和默认PVID
  4. 多播管理:优化组播流量处理
  5. 高级控制:设置网桥优先级和哈希大小

二、完整参数列表与详解

     1. STP生成树协议

参数值类型默认值说明
stp布尔true启用生成树协议(防止环路)
priority整数(0-65535)32768网桥优先级(值小优先)
forward-delay整数(秒)15端口状态转换延迟
hello-time整数(秒)2BPDU发送间隔
max-age整数(秒)20BPDU最大生存时间
ageing-time整数(秒)300MAC地址老化时间

     2. VLAN过滤

参数值类型默认值说明
vlan-filtering布尔false启用VLAN过滤
vlan-default-pvid整数(1-4094)1默认端口VLAN ID
vlan-protocol字符串802.1QVLAN协议:802.1Q802.1ad
vlan-stats-enabled布尔false启用VLAN统计

     3. 多播优化

参数值类型默认值说明
multicast-snooping布尔true启用IGMP/MLD侦听
multicast-router整数1多播路由:
0=禁用
1=自动
2=永久
3=临时
multicast-querier布尔false启用多播查询器
multicast-query-interval整数(秒)12500查询间隔(毫秒)

     4. 高级参数

参数值类型默认值说明
group-forward-mask整数0转发组播MAC掩码
group-addressMAC自定义组播地址
hash-max整数4096MAC哈希表大小
mac-learning布尔true启用MAC地址学习

三、STP配置详解

     1. 基本STP配置

[bridge]
stp=true
priority=16384       # 高优先级
forward-delay=4      # 快速收敛
hello-time=1         # 1秒BPDU间隔
max-age=10           # 10秒超时
ageing-time=600      # 10分钟MAC老化

     2. 大型网络优化

[bridge]
stp=true
priority=8192        # 核心网桥高优先级
forward-delay=15     # 大型网络标准值
hello-time=2
max-age=20

     3. 禁用STP场景

[bridge]
stp=false            # 小型网络可禁用
ageing-time=300      # 标准MAC老化

四、VLAN高级配置

     1. 基础VLAN过滤

[bridge]
vlan-filtering=true
vlan-default-pvid=100
vlan-protocol=802.1Q

     2. 多VLAN中继配置

# 网桥配置
[bridge]
vlan-filtering=true
vlan-default-pvid=1

# 端口配置(在从接口文件中)
[bridge-port]
vlan-id=10,20,30
vlan-egress-untagged=10
vlan-pvid=10

     3. VLAN统计监控

[bridge]
vlan-stats-enabled=true

五、多播优化配置

     1. 基础多播优化

[bridge]
multicast-snooping=true
multicast-router=1    # 自动检测

     2. 视频流网络优化

[bridge]
multicast-snooping=true
multicast-querier=true
multicast-query-interval=30000  # 30秒查询间隔
group-forward-mask=8            # 转发IGMP流量

     3. 禁用多播侦听

[bridge]
multicast-snooping=false  # 特定场景禁用

六、企业级场景配置

     场景1:数据中心核心网桥

[bridge]
stp=true
priority=4096         # 最高优先级
forward-delay=4
hello-time=1
max-age=10
vlan-filtering=true
vlan-default-pvid=1
multicast-snooping=true
hash-max=8192         # 大型MAC表

     场景2:虚拟化主机网桥

[bridge]
stp=false             # 单主机禁用STP
ageing-time=600
vlan-filtering=true
vlan-default-pvid=100
mac-learning=true

     场景3:工业控制网络

[bridge]
stp=true
priority=32768
forward-delay=15      # 保守设置
hello-time=2
max-age=20
multicast-snooping=false  # 避免协议干扰

     场景4:服务提供商网络

[bridge]
vlan-filtering=true
vlan-protocol=802.1ad  # QinQ支持
vlan-stats-enabled=true
multicast-router=2     # 永久多播路由

七、性能调优指南

     1. MAC表大小优化

[bridge]
hash-max=16384  # 大型网络
ageing-time=300

     2. 低延迟网络配置

[bridge]
forward-delay=2
hello-time=1
max-age=6
multicast-query-interval=10000  # 10秒

     3. 资源受限环境

[bridge]
hash-max=1024   # 小型MAC表
multicast-snooping=false  # 节省资源
stp=false       # 禁用STP

八、桥接端口配置

     1. 端口参数 ([bridge-port])

# 在从接口配置文件中
[bridge-port]
priority=32      # 端口优先级(0-63)
path-cost=100    # 路径开销
hairpin-mode=true # 允许同端口通信
vlan-pvid=100    # 端口默认VLAN

     2. VLAN过滤规则

[bridge-port]
vlan-id=100,200        # 允许的VLAN
vlan-egress-untagged=100 # 非标记VLAN
vlan-filtering=yes

     3. STP端口优化

[bridge-port]
path-cost=10      # 高速链路
priority=16       # 高优先级端口

九、验证与监控

     1. 查看网桥状态

bridge link show      # 查看端口状态
bridge vlan show      # 查看VLAN配置
bridge stp show       # 查看STP状态
bridge mdb show       # 查看多播数据库

     2. 性能监控命令

# 查看MAC表
bridge fdb show

# 查看统计信息
bridge -s link show

# 查看STP拓扑
brctl showstp br0

     3. 实时流量分析

# 捕获网桥流量
tcpdump -i br0 -nn -v

# 监控STP变化
bpduwatch -i br0

十、最佳实践建议

     1. STP配置原则

[bridge]
priority=4096         # 核心设备设低值
forward-delay=4       # 中小型网络
hello-time=1          # 快速检测故障
max-age=10            # 3倍hello-time

     2. VLAN设计规范

[bridge]
vlan-filtering=true
vlan-default-pvid=999  # 保留默认VLAN
vlan-protocol=802.1Q

     3. 安全加固配置

[bridge]
mac-learning=true
unicast-flood=false   # 禁止未知单播泛洪
multicast-flood=false # 禁止未知组播泛洪

     4. 高可用架构

# 主网桥
priority=4096

# 备份网桥
priority=8192

⚠️ 关键提示

  1. 修改后需重新激活:
    sudo nmcli con down br0 && sudo nmcli con up br0
    
  2. 复杂变更前备份配置
  3. 生产环境先在测试网验证
  4. 使用bridge命令验证配置

通过合理配置 [bridge] 段,可以实现从简单家庭网络到大型数据中心网络的各种桥接场景,提供稳定高效的第二层网络服务。

















[bridge-port]

*.nmconnection 配置文件中 [bridge-port] 段深度详解

[bridge-port] 段是网桥连接配置中的关键组成部分,专门用于定义网桥成员端口(从接口)的特性和行为。以下是该段的全面解析:


一、[bridge-port] 段的核心作用

  1. 端口优先级:控制STP端口角色选举
  2. 路径开销:管理STP路径成本计算
  3. VLAN配置:定义端口的VLAN成员关系和标记方式
  4. 流量控制:配置端口隔离和转发规则
  5. 高级特性:启用端口保护和学习控制

二、完整参数列表与详解

     1. STP端口控制

参数值类型默认值说明
priority整数(0-63)32端口优先级(值小优先)
path-cost整数自动计算STP路径开销(基于速度)
hairpin-mode布尔false是否允许同端口通信(回环)
bpdu-guard布尔false启用BPDU保护(禁用非授权设备)
bpdu-filter布尔false过滤BPDU报文

     2. VLAN配置

参数值类型默认值说明
vlan-pvid整数(1-4094)1端口默认VLAN ID
vlan-id整数列表允许的VLAN ID(逗号分隔)
vlan-egress-untagged整数列表出口非标记VLAN
vlan-filtering布尔false启用VLAN过滤
vlan-protocol字符串802.1QVLAN协议:802.1Q802.1ad

     3. 流量控制

参数值类型默认值说明
unicast-flood布尔true允许未知单播泛洪
multicast-flood布尔true允许未知组播泛洪
broadcast-flood布尔true允许广播泛洪
learning布尔true启用MAC地址学习
isolated布尔false端口隔离(仅与网桥通信)

     4. 高级参数

参数值类型默认值说明
guard字符串端口保护:none,root,tc
hwmode字符串硬件模式:vepa,bridge,private
proxy-arp布尔false启用ARP代理
neigh-suppress布尔false抑制邻居学习

三、配置位置与结构

     1. 配置文件位置

  • 主网桥配置:br0.nmconnection(包含[bridge]段)
  • 从接口配置:br0-port-eth1.nmconnection(包含[bridge-port]段)

     2. 典型配置结构

# 从接口配置文件示例
[connection]
id=br0-port-eth1
type=ethernet
interface-name=eth1
master=br0
slave-type=bridge

[ethernet]
mac-address=00:11:22:33:44:55

[bridge-port]  # 核心配置段
priority=16
path-cost=10
vlan-pvid=100
vlan-id=100,200

四、STP端口配置详解

     1. 高优先级端口配置

[bridge-port]
priority=16      # 低值=高优先级(范围0-63)
path-cost=10     # 手动设置低成本

     2. 边缘端口保护

[bridge-port]
bpdu-guard=true  # 阻止BPDU进入
bpdu-filter=true # 过滤外发BPDU

     3. 拓扑变更防护

[bridge-port]
guard=root       # 阻止成为根端口
guard=tc         # 阻止触发拓扑变更

五、VLAN高级配置

     1. 标准接入端口

[bridge-port]
vlan-pvid=100       # 默认VLAN
vlan-id=100         # 仅允许VLAN100
vlan-egress-untagged=100  # 出口非标记

     2. 中继端口配置

[bridge-port]
vlan-pvid=1         # 默认VLAN1
vlan-id=100,200,300 # 允许的VLAN
vlan-egress-untagged=100  # VLAN100非标记

     3. QinQ配置(802.1ad)

[bridge-port]
vlan-protocol=802.1ad
vlan-pvid=100
vlan-id=100,200

六、流量控制场景

     1. 安全隔离端口

[bridge-port]
isolated=true       # 完全隔离
learning=false      # 禁用MAC学习
unicast-flood=false # 禁止未知单播

     2. 多播优化端口

[bridge-port]
multicast-flood=false  # 限制组播泛洪
proxy-arp=true         # 启用ARP代理

     3. 高性能端口

[bridge-port]
path-cost=10        # 低成本
priority=0          # 最高优先级
hairpin-mode=true   # 允许端口内通信

七、企业级场景配置

     场景1:虚拟化主机端口

[bridge-port]
priority=32
vlan-pvid=100
vlan-id=100,200,300
hwmode=vepa         # 虚拟以太网端口聚合

     场景2:核心交换机上行链路

[bridge-port]
priority=0          # 最高优先级
path-cost=2         # 40G链路成本
guard=root          # 防止成为根端口
bpdu-guard=true     # 保护核心层

     场景3:访客网络端口

[bridge-port]
isolated=true       # 端口隔离
vlan-pvid=500       # 访客VLAN
vlan-id=500
learning=false      # 禁用MAC学习

     场景4:工业控制端口

[bridge-port]
priority=48
path-cost=100
unicast-flood=false # 避免泛洪干扰
broadcast-flood=false
multicast-flood=false

八、端口状态验证命令

     1. 查看端口状态

bridge link show dev eth1
# 输出示例:
# 2: eth1 state UP : <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state forwarding priority 32 cost 10

     2. 检查VLAN配置

bridge vlan show dev eth1
# 输出示例:
# port    vlan ids
# eth1     100 PVID Egress Untagged
#          200

     3. 验证STP状态

bridge stp show br0
# 输出片段:
# eth1 (16) state forwarding
#   port id        8001
#   designated root  8000.001122334455

九、最佳实践指南

     1. STP端口优先级规划

端口类型推荐优先级
核心上行0-15
服务器端口16-31
接入端口32-47
备份链路48-63

     2. 安全加固配置

[bridge-port]
bpdu-guard=true     # 防非法交换机接入
guard=root          # 保护根桥位置
isolated=true       # 访客端口隔离

     3. 性能优化建议

[bridge-port]
path-cost=10        # 40G链路
hairpin-mode=true   # 虚拟化环境需要
learning=off        # 固定端口可禁用学习

     4. VLAN设计规范

[bridge-port]
vlan-pvid=999       # 保留默认VLAN
vlan-egress-untagged=100  # 语音VLAN非标记
vlan-id=100,200,300

十、故障排查与调试

     1. 常见问题诊断

问题现象可能原因解决方案
端口被阻塞STP成本过高降低path-cost
VLAN不通vlan-id未包含添加VLAN到允许列表
无法通信isolated=true按需禁用隔离
BPDU丢失bpdu-filter=true禁用过滤

     2. 实时调试命令

# 监控STP状态变化
bridge monitor all

# 捕获BPDU报文
tcpdump -i eth1 -nn ether proto 0x0000

# 查看内核日志
dmesg | grep "br0"

     3. 配置重载流程

# 修改后重新加载
sudo nmcli con reload

# 重启端口连接
sudo nmcli con down "br0-port-eth1"
sudo nmcli con up "br0-port-eth1"

# 验证配置
bridge link show dev eth1

⚠️ 关键警告

  1. 修改活跃端口可能导致网络中断
  2. 复杂变更前备份配置
  3. 生产环境先在非业务时间测试
  4. 使用bridge命令实时验证配置

通过合理配置 [bridge-port] 段,可以实现从基础端口管理到高级网络策略的全方位控制,满足各种桥接网络场景的需求。