Linux网络管理工具NetworkManager笔记250726

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- 文件。在新系统中逐渐被淘汰。
    • 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, 0)。由 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 : 尝试在指定设备上自动激活一个合适的连接(通常根据自动连接设置)。
    • nmcli device disconnect : 断开指定设备上的连接。
  • 修改配置 (通常需要 sudo):

    • nmcli connection add ...: 添加一个新连接配置(参数很多,定义类型、接口名、IP 设置、Wi-Fi 设置等)。
    • nmcli connection modify "Your Connection Name" . : 修改现有连接配置的某个属性。例如:
      • 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),或者按 创建新配置。
  4. 在编辑界面:
    • 如果是新配置,先选择连接类型(如 Ethernet),并给 Profile name 起名。
    • 确保 Device 字段是你的物理网卡名(如 enp1s0)。
    • 移动到 IPv4 configuration 行。
      • 按回车,选择 Manual 设置静态 IP。
      • 选择 Automatic 设置 DHCP。
    • 如果选择了 Manual
      • 展开详细设置。
      • Addresses 行输入 IP 地址和子网掩码(格式:192.168.1.100/24)。
      • Gateway 行输入网关地址(如 192.168.1.1)。
      • DNS servers 行输入 DNS 地址(如 8.8.8.8,多个用逗号隔开)。
  5. 保存配置。
  6. 回到主菜单,选择 Activate a connection
  7. 找到你刚修改或创建的配置,按 (如果已激活),然后按 重新激活使新配置生效。
  8. 选择 然后 退出 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 配置无线网络(WiFi)的详细指南,涵盖命令行工具 nmcli、图形界面及高级设置:


一、基础 WiFi 连接(命令行 nmcli

  1. 开启 WiFi 并扫描网络

    sudo nmcli r wifi on          # 启用 WiFi 硬件
    sudo nmcli dev wifi list      # 扫描并列出可用 WiFi 热点
    
  2. 连接 WiFi 热点

    sudo nmcli dev wifi connect "SSID" password "PASSWORD"  # 连接指定热点(自动创建配置)
    
    • 示例:连接 Samsung-printer,密码 12345678
      sudo nmcli dev wifi connect Samsung-printer password 12345678
      
  3. 管理连接

    • 启动/关闭连接:
      nmcli connection up "SSID"    # 启用连接
      nmcli connection down "SSID"  # 关闭连接
      
    • 删除配置:
      nmcli con del "SSID"          # 删除配置文件(位于 `/etc/NetworkManager/system-connections/`)
      

⚙️ 二、高级配置(静态 IP、优先级、路由)

  1. 设置静态 IP
    修改现有连接的 IP、网关和 DNS:

    sudo nmcli connection modify "SSID" ipv4.addresses 192.168.1.100/24  # IP/子网掩码
    sudo nmcli connection modify "SSID" ipv4.gateway 192.168.1.1         # 网关
    sudo nmcli connection modify "SSID" ipv4.dns "8.8.8.8 8.8.4.4"       # DNS
    sudo nmcli connection up "SSID"  # 应用更改
    
  2. 调整连接优先级
    数值越小优先级越高(默认:有线 > WiFi > 4G):

    sudo nmcli connection modify "SSID" ipv4.route-metric 200  # 设置优先级
    
    • 场景示例
      • WiFi 优先于有线:WiFi 设置 metric=200,有线设置 metric=300
  3. 添加路由规则
    指定特定网段通过某接口传输:

    sudo nmcli connection modify "SSID" ipv4.routes "192.168.2.0/24"  # 目标网段
    
    • 用途:内网(eth0)和外网(wlan0)分流。

三、系统级设置(无密码自动连接)

  1. 允许所有用户连接同一 WiFi

    • 编辑连接配置 → General 标签 → 勾选 All users may connect to this network
    • Security 标签 → 密码保存方式选:
      Store password and make it available for all users (not encrypted)
    • 效果:系统启动即自动连接,无需用户登录。
  2. 关闭随机 MAC 地址(增强追踪性)
    创建配置文件 /etc/NetworkManager/conf.d/wifi_rand_mac.conf

    [device]
    wifi.scan-rand-mac-address=no    # 禁用随机 MAC
    

    重启服务生效:

    sudo systemctl restart NetworkManager
    

四、图形界面操作(Network-Manager-gnome)

  1. 设置静态 IP

    • 右键系统托盘图标 → Edit Connections → 选择 WiFi 连接 → 齿轮图标编辑。
    • IPv4 Settings → Method 选 Manual → 手动填写 IP、子网掩码、网关、DNS。
  2. 添加路由
    同界面 → Routes → 添加目标网段、网关、优先级。


五、创建 WiFi 热点

sudo nmcli device wifi hotspot ifname wlan0 con-name "MyHotspot" ssid "HotspotSSID" password "12345678"
  • 参数说明
    ifname:网卡名 | con-name:连接配置名 | ssid:热点名称 | password:密码。
  • 启用热点:nmcli connection up "MyHotspot"

六、常见问题

  • 连接失败
    • 检查设备是否被 NetworkManager 管理:nmcli dev,若显示 unmanaged,需清空 /etc/network/interfaces 并重启服务。
  • 4G 模块无法连接
    尝试硬件重启(树莓派示例):
    raspi-gpio set 10 op dl
    sleep 0.5
    raspi-gpio set 10 dh
    

提示

  • 所有配置保存在 /etc/NetworkManager/system-connections/,手动编辑后需 sudo nmcli con reload 生效。
  • 优先级与路由规则适用于多网卡场景(如同时连接内网和外网)。

















用 NetworkManager 配置网桥bridge

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


一、核心概念

  • 网桥作用:在二层(数据链路层)转发流量,使多个接口共享同一网络。
  • 典型结构
    绑定
    绑定
    接入
    接入
    br0
    物理网卡
    物理网卡
    虚拟机
    虚拟机
  • 关键点
    • 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-resolveddefault DNS 处理方式:
- systemd-resolved (推荐)
- dnsmasq (本地缓存)
- unbound
- none (手动管理 /etc/resolv.conf)
rc-manager 布尔/字符串 auto 控制 /etc/resolv.conf 处理:
- auto: 自动选择管理器
- file: 直接修改文件
- symlink: 创建符号链接
- resolvconf: 调用 resolvconf 工具
dhcp 字符串 internal DHCP 客户端实现:
- internal: 内置客户端 (轻量)
- dhclient: 传统客户端
- dhcpcd
systemd-resolved 布尔 true (若存在) 是否与 systemd-resolved 集成
no-auto-default MAC 列表 禁止自动创建默认连接的接口 (逗号分隔 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 开关 default LLMNR 解析支持:
- yes/no/resolve (参考 systemd-resolved)
connection.mdns 开关 default mDNS 支持:
- 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 字符串 default WiFi 后端:
- 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
编辑工具 nmcli, nmtui, 手动编辑 (不推荐)

二、核心配置段详解

     1. [connection] - 连接元数据

参数 类型 默认值 说明
id 字符串 必填 连接显示名称 (人类可读)
uuid UUID 自动生成 全局唯一标识符 (不可修改)
type 字符串 必填 连接类型:ethernet, wifi, bridge,
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
addresses IP/掩码列表 192.168.1.100/24, 10.0.0.1/8
gateway IP 默认网关
dns IP列表 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 网络名称 (十六进制或字符串)
mode infrastructure(默认), ap, adhoc
band a(5GHz), bg(2.4GHz)
channel 无线信道
bssid 指定接入点MAC

SSID 编码

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

# 十六进制格式
ssid=4d794e6574776f726b

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

参数 说明
key-mgmt 加密方式:none, wpa-psk, wpa-eap
psk WPA预共享密钥
wep-key-type WEP类型:key, phrase
wep-key0 WEP密钥1 (索引0-3)
eap EAP方法:peap, tls, ttls
identity 802.1X认证用户名
password 认证密码

WPA2-PSK 示例

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

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

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

         (2) [vlan] - VLAN 设置

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

         (3) [proxy] - 代理设置

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

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

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

[-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

四、高级技巧与注意事项

     1. 密码安全存储

# 避免明文存储密码
password-flags=1  # 每次连接询问密码

# 或使用密钥环存储
password-flags=2  # 存储在 gnome-keyring/kwallet

     2. 变量扩展

[connection]
id=Host-${HOSTNAME}  # 使用环境变量

[ipv4]
addresses=192.168.1.${RANDOM}  # 随机最后一位

     3. 多配置合并

# 继承基础配置
[connection]
id=Dev-Config
base-connection-id=BaseConfig  # 继承其他连接

# 覆盖特定设置
[ipv4]
method=manual
addresses=192.168.2.100/24

     4. 连接激活钩子

[connection]
id=Custom-Hooks

# 激活前脚本
pre-up-script=/path/to/pre-up.sh

# 激活后脚本
up-script=/path/to/up.sh

# 停用脚本
down-script=/path/to/down.sh

     5. 故障排查命令

# 验证配置文件语法
nmcli connection load /path/to/config.nmconnection

# 查看生效配置
nmcli -g all connection show "MyConnection"

# 调试模式
NM_LOG_LEVEL=DEBUG nmcli con up "MyConnection"

⚠️ 重要警告

  1. 修改配置文件前备份:sudo cp config.nmconnection{,.bak}
  2. UUID 不可重复,否则导致冲突
  3. 修改后必须重载:sudo nmcli con reload
  4. 优先使用 nmcli 修改配置,避免手动编辑错误

通过合理配置 *.nmconnection 文件,可实现从简单家庭网络到复杂企业网络的全场景网络管理。

















NetworkManager *.nmconnection 配置文件完全指南

NetworkManager 的 .nmconnection 文件是 Linux 网络配置的核心,采用 INI 格式存储,每个文件对应一个网络连接配置。以下是全面解析:


一、配置文件基础

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

⚠️ 修改后必须执行:

sudo nmcli con reload
sudo nmcli con down "连接名" && sudo nmcli con up "连接名"

二、核心配置段详解

     1. [connection] - 连接元数据

参数 类型 说明 示例
id 字符串 连接显示名 id=Office-WiFi
uuid UUID 全局唯一标识 uuid=550e8400-e29b-41d4-a716-446655440000
type 字符串 连接类型 ethernet, wifi, bridge
interface-name 字符串 绑定接口 interface-name=eth0
autoconnect 布尔 自动连接 autoconnect=true
autoconnect-priority 整数 连接优先级 autoconnect-priority=100
timestamp 时间戳 最后修改时间 timestamp=1672531200

     2. [match] - 设备匹配

参数 说明 示例
interface-name 接口名匹配 eth*, !veth0
mac-address MAC地址匹配 00:11:22:33:44:55
driver 网卡驱动匹配 e1000e
path 设备路径 pci-0000:03:00.0

     3. IP配置段
         [ipv4][ipv6] 公共参数

参数 说明 值示例
method 地址获取方式 auto, manual, disabled
addresses IP地址列表 192.168.1.100/24
gateway 默认网关 192.168.1.1
dns DNS服务器 8.8.8.8,1.1.1.1;
route-metric 路由优先级 100 (值小优先)

         IPv4 特有

[ipv4]
method=manual
addresses=192.168.1.100/24
ignore-auto-dns=true
dns=8.8.8.8;

         IPv6 特有

[ipv6]
method=auto
addr-gen-mode=stable-privacy
ip6-privacy=2

     4. 设备专用段
         [ethernet] - 有线设置

[ethernet]
speed=1000         # 1Gbps
duplex=full
mtu=9000           # 巨型帧
mac-address=00:11:22:33:44:55
wake-on-lan=1      # 启用网络唤醒

         [wifi] - 无线基础

[wifi]
ssid=MyNetwork      # 或十六进制
mode=infrastructure # ap, adhoc, mesh
band=a              # 5GHz优先
channel=149         # 5GHz信道
hidden=true         # 隐藏网络

         [wifi-security] - 无线安全

[wifi-security]
key-mgmt=wpa-psk    # none, sae, wpa-eap
psk=SecurePass123
proto=rsn           # rsn=WPA2, wpa3
pairwise=ccmp       # AES加密
ieee80211w=2        # 强制PMF保护

     5. 虚拟设备段
         [bridge] - 网桥设置

[bridge]
stp=true            # 启用生成树
priority=4096       # 根桥优先级
forward-delay=4     # 快速收敛
vlan-filtering=true # VLAN支持

         [bridge-port] - 网桥端口

[bridge-port]
path-cost=50        # 路径成本
priority=64         # 端口优先级
vlan-ids=10,20      # 允许的VLAN
vlan-10-untagged=true
vlan-20-tagged=true

         [vlan] - VLAN配置

[vlan]
id=100              # VLAN ID
parent=eth0         # 父接口
flags=reorder-hdr   # 重组头

三、企业级配置示例

     1. 安全企业WiFi

[connection]
id=Enterprise-WiFi
type=wifi
autoconnect-priority=200

[wifi]
ssid=CorpSecure
mode=infrastructure
band=a

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

[802-1x]
eap=tls;
[email protected]
private-key=/etc/certs/client.key
client-cert=/etc/certs/client.crt
ca-cert=/etc/certs/ca.crt

[ipv4]
method=auto

     2. 高可用服务器网桥

# 主网桥配置
[connection]
id=Server-Bridge
type=bridge
interface-name=br0

[bridge]
stp=true
priority=4096
vlan-filtering=true
vlan-default-pvid=100

[ipv4]
method=manual
addresses=10.0.100.1/24

# 从接口配置
[connection]
id=br0-slave-eth1
type=ethernet
master=br0
slave-type=bridge

[bridge-port]
path-cost=50
priority=64
vlan-ids=100,200
vlan-100-untagged=true
vlan-100-pvid=true
vlan-200-tagged=true

     3. 多VLAN中继端口

[bridge-port]
vlan-ids=10,20,30,40-50
vlan-10-untagged=true
vlan-10-pvid=true
vlan-20-tagged=true
vlan-30-untagged=true
vlan-40-tagged=true
vlan-50-tagged=true

四、高级技巧与最佳实践

     1. 密码安全存储

# 避免明文存储
[wifi-security]
psk-flags=1  # 1=询问, 2=密钥环

[802-1x]
password-flags=1

     2. 动态变量

[connection]
id=Host-${HOSTNAME}
stable-id=${CONNECTION}-${MAC}

     3. 连接激活钩子

[connection]
pre-up-script=/path/to/pre-up.sh
up-script=/path/to/up.sh
down-script=/path/to/down.sh

     4. 防火墙集成

[connection]
zone=trusted  # firewalld区域

五、故障排查工具

     1. 配置验证

# 检查语法
sudo nmcli con load /path/to/config.nmconnection

# 查看生效配置
nmcli -g all con show "连接名"

     2. 日志调试

# 启用DEBUG日志
sudo nmcli gen log level DEBUG domains ALL

# 实时日志
journalctl -f -u NetworkManager

     3. 设备信息

# 查看设备详情
nmcli -f general.device,general.driver,general.hwaddr device show

# 无线扫描
nmcli dev wifi list

六、安全加固指南

     1. 配置文件权限

sudo chmod 600 /etc/NetworkManager/system-connections/*
sudo chown root:root /etc/NetworkManager/system-connections/*

     2. 敏感参数保护

[connection]
permissions=user:admin:;  # 限制管理用户
read-only=true            # 只读连接

     3. 协议安全规范

类型 安全配置 不安全配置
WiFi WPA3/SAE WEP, WPA-TKIP
VPN WireGuard PPTP
认证 EAP-TLS PAP, CHAP

七、配置管理策略

     1. 版本控制

# 初始化Git仓库
sudo mkdir /etc/NetworkManager/system-connections/.git
sudo git -C /etc/NetworkManager/system-connections init

# 提交更改
sudo git -C /etc/NetworkManager/system-connections add .
sudo git -C /etc/NetworkManager/system-connections commit -m "添加企业WiFi配置"

     2. 自动化部署

# 使用Ansible部署配置
- name: 部署网络配置
  copy:
    src: "{{ item }}"
    dest: /etc/NetworkManager/system-connections/
    owner: root
    group: root
    mode: 0600
  loop: "{{ network_configs }}"
  notify: 重载网络配置

- name: 重载网络配置
  command: nmcli con reload

     3. 配置备份

# 每日自动备份
0 2 * * * root tar czf /backup/nm-connections-$(date +\%F).tgz /etc/NetworkManager/system-connections

终极建议

  1. 生产环境优先使用 nmcli 而非手动编辑
  2. 复杂配置先在小范围测试
  3. 遵循最小权限原则
  4. 定期审计网络安全配置

通过合理使用 .nmconnection 文件,您可以构建从简单家庭网络到复杂企业数据中心的全场景网络解决方案。

















[connection]

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

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


一、[connection] 段的核心作用

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

二、完整参数列表及详解

     1. 基础标识参数

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

     2. 接口绑定参数

参数 值类型 默认值 说明
interface-name 字符串 强绑定到指定网络接口
示例:interface-name=eth0
(优先级高于[match]段)
llmnr 整型 -1 LLMNR解析支持:
-1=默认, 0=禁用, 1=解析, 2=解析+广播
mdns 整型 -1 mDNS支持:
-1=默认, 0=禁用, 1=解析, 2=解析+广播
dns-over-tls 整型 -1 DNS-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. 主从连接管理

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

     5. 安全与权限

参数 值类型 默认值 说明
permissions 字符串 访问控制列表
格式:user::;::
示例: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-address MAC 地址 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.5678 IBM s390 架构专用
type 设备类型 vlan, bridge 按虚拟设备类型匹配
ssid WiFi SSID MyHomeWiFi WiFi 连接的 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 强制指定连接

五、调试匹配问题

     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

















[connection]与[match]都有interface-name, 对比
[connection] vs [match] 段中的 interface-name 深度对比

在 NetworkManager 的连接配置文件(*.nmconnection)中,interface-name 可以同时出现在 [connection][match] 段中,但两者有根本性区别


对比概览表

特性 [connection] interface-name [match] interface-name
功能定位 连接绑定目标接口 设备匹配规则
主要作用 指定连接激活的物理接口 定义哪些设备可以应用此连接
值类型 单个具体接口名 支持通配符/列表/排除符
动态性 静态绑定 动态模式匹配
优先级 高于 [match] 低于 [connection] 设置
多接口支持 ❌ 仅支持单个接口 ✅ 支持多个接口模式
接口变化影响 接口不存在则连接失败 自动适配新匹配的接口
典型应用场景 固定设备专用配置 通用配置/设备类配置

一、[connection] interface-name (连接绑定)

     核心特性

[connection]
id=MyConnection
type=ethernet
interface-name=eth0  # 明确绑定到 eth0
  1. 强绑定关系

    • 此连接必须且只能在指定接口上激活
    • 尝试在其他接口激活会失败:
      # 错误:无法在 wlan0 上激活 eth0 的连接
      sudo nmcli con up MyConnection ifname wlan0
      
  2. 接口存在性要求

    • 如果 eth0 不存在,连接将处于 “unavailable” 状态
    • 使用 nmcli con show 会显示:
      MyConnection  xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  ethernet  eth0  unavailable
      
  3. 配置优先级

    • 当同时存在时,覆盖 [match] 的设置
    [connection]
    interface-name=eth0  # 优先级更高
    
    [match]
    interface-name=eth*  # 此设置被忽略
    
  4. 典型用例

    • 服务器固定网卡配置
    • VPN 专用接口绑定
    • 需要精确控制接口的场景

二、[match] interface-name (设备匹配)

     核心特性

[connection]
id=Generic-Eth
type=ethernet

[match]
interface-name=eth*,enp*  # 模式匹配
  1. 动态适配

    • 连接可应用于任何匹配模式的接口
    • 插入新网卡 enp5s0 时自动应用
  2. 高级匹配语法

    语法 示例 说明
    通配符 eth* 匹配 eth0, eth1 等
    排除符 !eth1 排除特定接口
    列表 enp*,usb0 多模式组合
    正则 mac:aa:.*:cc 正则表达式匹配
  3. 多接口支持

    • 同一连接可应用于多个接口
    • eth0eth1 上可同时激活
  4. 热插拔友好

    # 插入 USB 网卡时自动应用
    $ nmcli device
    DEVICE  TYPE      STATE 
    eth0    ethernet  connected (Generic-Eth)
    enp5s0  ethernet  connecting (Generic-Eth) # 新设备自动匹配
    
  5. 典型用例

    • 通用有线网络配置
    • 移动设备网络配置
    • 批量设备部署

三、配置冲突解决流程

当两种设置同时存在时:

[connection]
interface-name=eth0  # 明确绑定

[match]
interface-name=eth*,enp*  # 模式匹配
  1. NetworkManager 优先使用 [connection] interface-name
  2. 连接被严格绑定eth0
  3. [match] 段配置完全被忽略
  4. 即使 enp5s0 匹配模式,也不会应用此连接

⚠️ 最佳实践:避免同时使用两者,根据场景选择其一


四、场景化配置示例

     场景 1:服务器固定网卡配置(推荐用 [connection])

# 服务器专用配置
[connection]
id=Server-Primary
type=ethernet
interface-name=eno1  # 明确绑定主网卡

[ipv4]
method=manual
addresses=192.168.1.10/24

     场景 2:笔记本通用有线配置(推荐用 [match])

# 适用于所有有线接口
[connection]
id=Generic-Wired
type=ethernet
autoconnect=true

[match]
interface-name=en*,eth*,!eth0:avahi  # 排除虚拟接口

[ipv4]
method=auto

     场景 3:USB 网卡专用配置

# 仅用于 USB 以太网适配器
[connection]
id=USB-Ethernet
type=ethernet

# 同时使用两种方式确保精确匹配
interface-name=usb0       # 绑定具体接口
[match]
path=usb-*                # 硬件路径匹配
driver=ax88179_178a       # 驱动匹配

五、诊断命令

     1. 检查接口绑定

nmcli -g connection.interface-name connection show "MyConnection"

     2. 验证匹配规则

# 查看匹配的设备
nmcli -g match.interface-name connection show "Generic-Eth"

     3. 测试接口适用性

# 检查 eth1 是否适用 MyConnection
nmcli connection load MyConnection.nmconnection
nmcli -g match connection show "MyConnection" dev eth1

     4. 查看连接状态

nmcli connection show --active
# 输出示例
NAME         UUID                                  TYPE      DEVICE 
Server-Prim  550e8400-e29b-41d4-a716-446655440000  ethernet  eno1
Generic-Eth  aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  ethernet  eth0
Generic-Eth  aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  ethernet  enp5s0

六、最佳实践建议

  1. 固定设备用 [connection]

    # 服务器/关键设备
    [connection]
    interface-name=eth0
    
  2. 通用配置用 [match]

    # 办公环境通用配置
    [match]
    interface-name=en*,eth*,!veth*
    
  3. 避免混用

    # ❌ 不推荐
    [connection]
    interface-name=eth0
    
    [match]
    interface-name=eth*
    
  4. 虚拟设备排除

    # 排除常见虚拟接口
    [match]
    interface-name=*,!virbr*,!veth*,!docker*
    
  5. 热插拔设备优化

    [connection]
    autoconnect-priority=100  # 提高自动连接优先级
    
    [match]
    interface-name=usb*
    

通过合理选择配置方式,可以实现从严格设备绑定到灵活模式匹配的精准网络控制。

















[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
addresses IP列表 静态IP地址:192.168.1.100/24
多IP格式address1=192.168.1.100/24; address2=10.0.0.2/16;
gateway IP 默认网关:192.168.1.1
route-metric 整数 0 路由优先级 (值小优先)
dns IP列表 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 整数 45 DHCP请求超时(秒)
dhcp-hostname-flags 整型 0 0=始终发送, 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 整数 0 DNS服务器优先级

     5. 高级网络特性

参数 值类型 默认值 说明
may-fail 布尔 true IP获取失败时仍激活连接
required-timeout 整数 -1 IP获取等待时间(毫秒)
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
addresses IPv6列表 静态地址:2001:db8::1/64
多地址格式address1=2001:db8::1/64; address2=2001:db8:1::2/64;
gateway IPv6 默认网关:fe80::1
route-metric 整数 -1 路由优先级 (-1=自动)
dns IPv6列表 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
token IPv6 :: 用于SLAAC的地址生成令牌

     5. DNS 高级控制

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

     6. 高级网络特性

参数 值类型 默认值 说明
may-fail 布尔 true IP获取失败时仍激活连接
required-timeout 整数 -1 IP获取等待时间(毫秒)
dhcp-timeout 整数 45 DHCPv6请求超时(秒)
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-address MAC地址 永久绑定到特定MAC
示例:mac-address=00:11:22:33:44:55
cloned-mac-address MAC地址 临时克隆MAC地址
random=每次连接随机生成
stable=生成稳定地址
preserve=保持当前MAC
generate-mac-address-mask 字符串 生成MAC的掩码规则
示例:02:00:00:00:00:00
mac-address-blacklist MAC列表 禁止使用的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-password MAC WoL安全密码

     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
PPPoE 1492
互联网VPN 1400

     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(网状网络)
bssid MAC地址 指定接入点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;
[email protected]
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.4GHz 1,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 整型 0 PMF保护管理帧:
0=禁用
1=可选
2=必需
sae-pwe 整型 0 SAE抗暴力破解机制:
0=自动
1=哈希迭代
2=狩猎与啄击
auth-alg 字符串 open 认证算法:
open
shared
leap

     4. WEP配置(已淘汰)

参数 值类型 默认值 说明
wep-key0~3 字符串 WEP密钥(索引0-3)
wep-key-type 整型 0 WEP密钥类型:
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;
[email protected]
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;
[email protected]
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;
[email protected]
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;
[email protected]
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] 段,可构建从基础家庭网络到高安全企业网络的无线安全体系。

















[wifi-security]key-mgmt
[wifi-security]key-mgmt 参数深度详解

key-mgmt(密钥管理协议)是 [wifi-security] 段中最核心的参数,它决定了无线网络的认证方式和安全架构。以下是全面的解析和配置指南:


一、key-mgmt 的核心作用

  1. 认证控制:确定用户/设备如何证明身份
  2. 密钥派生:定义加密密钥的生成方式
  3. 安全层级:决定网络的安全强度(WPA2/WPA3)
  4. 兼容性:影响客户端支持范围
  5. 网络类型:区分个人网络、企业网络和开放网络

二、完整取值列表及说明

     1. 个人网络(预共享密钥)

协议 安全标准 说明
wpa-psk WPA-PSK WPA2 最常见的家庭/小企业模式
使用预共享密钥(PSK)
sae SAE WPA3 WPA3个人版(龙卷风密钥交换)
抗暴力破解和离线字典攻击
wpa-psk-sae 混合模式 WPA2/WPA3 同时支持WPA2和WPA3设备
推荐升级路径

     2. 企业网络(802.1X认证)

协议 安全标准 说明
wpa-eap WPA-Enterprise WPA2 标准企业认证
需配合[802-1x]
wpa-eap-suite-b WPA3-Enterprise WPA3 192位加密的企业级安全
要求ECC证书
wpa-eap-suite-b-192 WPA3-Enterprise 192-bit WPA3 最高安全级别
政府/金融机构专用

     3. 开放网络

协议 安全标准 说明
none - - 完全开放网络(无加密)
owe OWE WPA3 增强开放网络
提供加密但不需认证
owe-transition OWE过渡模式 WPA3 同时提供开放和OWE网络
支持新旧设备

     4. 特殊/过时协议

协议 安全标准 说明
ieee8021x 动态WEP WEP 已淘汰
配合802.1x使用
wpa-none WPA Ad-hoc WPA 点对点模式专用
很少使用

三、配置示例详解

     1. WPA2个人网络(PSK)

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

     2. WPA3个人网络(SAE)

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

     3. 混合模式(WPA2/WPA3)

[wifi-security]
key-mgmt=wpa-psk-sae
psk=TransitionPassword!
proto=rsn,wpa3
pairwise=ccmp
group=ccmp

     4. WPA2企业网络

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

[802-1x]
eap=peap;
[email protected]
password=EnterprisePass
phase2-auth=mschapv2

     5. WPA3企业网络

[wifi-security]
key-mgmt=wpa-eap-suite-b
proto=wpa3
pairwise=gcmp-256
group=gcmp-256
ieee80211w=2

[802-1x]
eap=tls;
[email protected]
client-cert=/etc/certs/client.pem
private-key=/etc/certs/client.key

     6. 增强开放网络(OWE)

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

四、企业级部署策略

     安全等级矩阵

安全需求 推荐key-mgmt 补充配置
最高
(政府/金融)
wpa-eap-suite-b-192 ECC-384证书
GCMP-256加密
企业级
(普通企业)
wpa-eap-suite-b RSA/ECC证书
GCMP-128加密
过渡期
(混合设备)
wpa-psk-sae 强密码策略
PMF强制
访客网络
(公共区域)
owe 无认证
加密通信
传统支持
(旧设备)
wpa-psk 定期轮换密码
隔离网络

     认证方式选择

高安全
兼容旧设备
新设备
混合设备
公共网络
企业网络
WPA3-Enterprise
WPA2-Enterprise
个人网络
WPA3 SAE
WPA2/WPA3混合
OWE
EAP-TLS
EAP-PEAP/MSCHAPv2

     密码策略建议

# 定期更换PSK的配置
[wifi-security]
key-mgmt=wpa-psk-sae
psk=Quarter1@2023  # 每季度更换

[connection]
timestamp=1677628800  # 2023-03-01过期

五、高级配置技巧

     1. 网络分段策略

# 安全区 (WPA3企业)
ssid=SecureZone
key-mgmt=wpa-eap-suite-b

# 访客区 (OWE)
ssid=GuestZone
key-mgmt=owe

# 物联网区 (WPA2 PSK)
ssid=IoT-Network
key-mgmt=wpa-psk

     2. 证书自动部署

[802-1x]
eap=tls;
identity=%{IDENTITY}
private-key=/etc/certs/%{MAC}.key
client-cert=/etc/certs/%{MAC}.pem

     3. RADIUS回退配置

[802-1x]
eap=peap;
phase1=peaplabel=1
phase2-auth=mschapv2
...
# 主RADIUS失败时回退
fallback-eap=ttls
fallback-anonymous-identity=anonymous
fallback-phase2-auth=md5

     4. 安全审计标记

[wifi-security]
key-mgmt=wpa-eap
# 审计字段
com.mycompany.audit-level=high

六、故障排查指南

     1. 连接问题诊断

错误现象 可能原因 解决方案
无法连接WPA3 客户端不支持 使用wpa-psk-sae混合模式
企业认证失败 证书问题 检查[802-1x]配置
OWE设备不可见 缺少广播 配置owe-transition
SAE连接慢 PMF冲突 设置ieee80211w=1

     2. 关键检查命令

# 查看支持的key-mgmt
sudo iw phy0 info | grep "AKM"

# 测试企业认证
eapol_test -c ./client.conf -a 192.168.1.1 -p 1812 -s secret

# 检查PMF状态
sudo iw dev wlan0 link | grep "PMF"

     3. 日志分析要点

# 过滤关键日志
journalctl -u NetworkManager | grep -E "AKM|auth|keymgmt"

七、最佳实践总结

     1. 现代网络推荐配置

# 企业网络
key-mgmt=wpa-eap-suite-b

# 个人网络
key-mgmt=sae  # 或 wpa-psk-sae

     2. 安全增强配置

[wifi-security]
ieee80211w=2             # 强制PMF
group-management=sha256  # WPA3要求
sae-pwe=2                # 抗暴力破解

     3. 升级路径建议

传统WPA2 (wpa-psk)
  ↓
混合模式 (wpa-psk-sae)
  ↓
纯WPA3 (sae)

     4. 企业策略强制

# 通过NM配置强制执行
[connection]
permissions=user:admin:;
read-only=true

[wifi-security]
key-mgmt=wpa-eap-suite-b  # 不可更改

⚠️ 关键警告

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

通过合理配置 key-mgmt 参数,可以构建从基础家庭网络到高安全企业网络的无线安全体系,满足各种安全需求。

















[wifi-security]key-mgmt 参数深度解析

key-mgmt(密钥管理协议)是无线网络安全配置中最核心的参数,决定了整个网络的认证和加密机制。以下是全面详解:


一、key-mgmt 的核心作用

  1. 定义安全框架:选择基础安全协议(WPA2/WPA3等)
  2. 控制认证方式:决定使用预共享密钥还是企业级认证
  3. 管理密钥交换:规范加密密钥的生成和分发过程
  4. 兼容性控制:影响设备能否连接网络
  5. 安全级别确定:直接关系网络防护强度

二、完整参数值与详解

协议名称 安全级别 适用场景 特点
none 开放网络 ★☆☆☆☆ 公共热点 • 无需密码
• 无加密
• 高风险
owe 增强开放网络
(Opportunistic Wireless Encryption)
★★★☆☆ 公共区域 • WPA3标准
• 无密码但加密
• 防监听
wep 有线等效加密 ★☆☆☆☆ 遗留设备 • 已淘汰
• 极易破解
• 不推荐
wpa-psk WPA/WPA2个人版 ★★★☆☆ 家庭/中小企 • 单预共享密钥
• 平衡安全与易用
sae WPA3个人版
(Simultaneous Authentication of Equals)
★★★★☆ 现代网络 • 取代WPA2-PSK
• 防暴力破解
• 前向保密
wpa-eap WPA/WPA2企业版 ★★★★☆ 企业/机构 • 802.1X认证
• 每用户独立凭证
wpa-eap-suite-b WPA3企业版 ★★★★★ 政府/金融 • 192位加密
• 强制证书认证

三、各协议配置示例

     1. none (开放网络)

[wifi-security]
key-mgmt=none
# 无加密,无需其他参数

     2. owe (WPA3增强开放)

[wifi-security]
key-mgmt=owe
proto=wpa3
pairwise=ccmp
group=ccmp
ieee80211w=2  # 强制PMF

     3. wpa-psk (WPA2个人版)

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

     4. sae (WPA3个人版)

[wifi-security]
key-mgmt=sae
psk=Kj7#2!9xQ0z  # 更安全的密码
proto=wpa3
pairwise=ccmp
group=ccmp
sae-pwe=2  # 抗暴力破解
ieee80211w=2

     5. wpa-eap (WPA2企业版)

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

# 必须配合802-1x段
[802-1x]
eap=peap;
[email protected]
password=MySecurePass
phase2-auth=mschapv2

     6. wpa-eap-suite-b (WPA3企业版)

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

[802-1x]
eap=tls;
[email protected]
private-key=/etc/certs/client.key
client-cert=/etc/certs/client.crt
ca-cert=/etc/certs/ca.crt

四、企业级选择指南

     安全等级决策矩阵

场景 推荐方案 配置要点
公共场所 owe • 无密码但加密
• 强制PMF
家庭网络 sae • WPA3个人版
• 12位复杂密码
中小企业 wpa-eap (PEAP/MSCHAPv2) • RADIUS服务器
• 用户名/密码认证
大型企业 wpa-eap (EAP-TLS) • 客户端证书
• 自动证书部署
高安全环境 wpa-eap-suite-b • 192位加密
• 强制证书认证

     协议迁移路径

升级
遗留设备
WPA2-PSK
WPA2-Enterprise
WPA3-Personal
WPA3-Enterprise
WPA3-SuiteB

五、安全最佳实践

     1. 密码策略

协议 密码要求 示例
wpa-psk 14+字符,大小写+数字+符号 TV8#W*q2!Y9pL
sae 12+字符,大小写+数字+符号 rT5$kP7@zM2
wpa-eap 8+字符,定期更换 Qw3rt!2023

     2. 企业认证方案对比

方法 安全性 部署复杂度 适用场景
PEAP/MSCHAPv2 ★★★☆☆ ★★☆☆☆ 通用企业
EAP-TLS ★★★★★ ★★★★☆ 高安全环境
EAP-TTLS/PAP ★★☆☆☆ ★★☆☆☆ 兼容旧系统

     3. 协议弃用警告

# 危险配置(绝对避免)
[wifi-security]
key-mgmt=wep  # 已淘汰,10秒可破解

# 不安全配置(尽快升级)
[wifi-security]
key-mgmt=wpa-psk
proto=wpa
pairwise=tkip  # TKIP已破解

六、故障排查指南

     1. 连接问题诊断

错误现象 可能原因 解决方案
无法连接 协议不匹配 检查AP和客户端支持的key-mgmt
反复断开 PMF不兼容 降低ieee80211w=1
认证失败 证书问题 验证[802-1x]配置

     2. 兼容性检查命令

# 查看网卡支持的安全协议
iw phy0 info | grep "AKM suites" -A 5

# 输出示例:
AKM suites:
 * WPA-PSK
 * WPA-EAP
 * WPA-EAP-SUITE-B-192
 * SAE

     3. 企业认证调试

# 启用详细日志
sudo systemctl stop wpa_supplicant
sudo wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -dd

七、未来演进方向

     1. WPA3发展路线

timeline
    title WPA3演进路线
    2018 : WPA3-Personal(SAE)
    2020 : WPA3-Enterprise(192-bit)
    2023 : WPA3-Enhanced(量子安全)

     2. 新兴协议

协议 状态 特性
OWE Transition Mode 推广中 开放/加密网络平滑过渡
DPP (Device Provisioning Protocol) 发展中 二维码/NFC快速配网
WPA4 (预计2024) 草案 后量子加密支持

终极建议
新部署网络应首选:

[wifi-security]
key-mgmt=sae          # 或 wpa-eap-suite-b
proto=wpa3
ieee80211w=2

这是当前最安全且面向未来的配置方案。

















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

[802-11-wireless-security] 段是 NetworkManager 中无线网络安全配置的核心部分(旧版命名,等价于 [wifi-sec])。它定义了 Wi-Fi 网络的认证机制、加密协议和安全参数。以下是全面解析:


一、段名说明与兼容性

  • 历史背景[802-11-wireless-security] 是旧版 NetworkManager 使用的段名
  • 现代等价[wifi-sec](功能完全一致)
  • 兼容性:两种命名均可工作,但新配置建议使用 [wifi-sec]
  • 识别特征:所有参数以 连字符分隔的小写单词 命名(如 key-mgmt

二、核心参数详解

     1. 安全协议基础

参数 值类型 默认值 说明
key-mgmt 字符串 必填 密钥管理协议:
none(开放)
ieee8021x(企业认证)
wpa-none(Ad-hoc)
wpa-psk(WPA个人版)
wpa-eap(WPA企业版)
auth-alg 字符串 open 认证算法:
open(开放系统)
shared(共享密钥)
leap(Cisco LEAP)

     2. 加密算法配置

参数 值类型 默认值 说明
proto 字符串列表 rsn 安全协议:
wpa(WPA1)
rsn(WPA2)
多协议:proto=wpa,rsn
pairwise 字符串列表 ccmp 单播加密:
tkip
ccmp(AES)
gcmp
多算法:pairwise=tkip,ccmp
group 字符串列表 ccmp 组播加密(选项同上)

     3. 密钥管理

参数 值类型 默认值 说明
psk 字符串 WPA预共享密钥
十六进制格式:psk=68656c6c6f (“hello”)
psk-flags 整型 0 密钥存储:
0=明文
1=每次询问
2=密钥环
leap-username 字符串 LEAP认证用户名
leap-password 字符串 LEAP密码

     4. WEP配置(已淘汰)

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

三、安全配置模式详解

     1. WPA2个人版 (PSK)

[802-11-wireless-security]
key-mgmt=wpa-psk
proto=rsn
pairwise=ccmp
group=ccmp
psk=536563726574313233  # "Secret123"的十六进制

     2. WPA3个人版 (SAE)

[802-11-wireless-security]
key-mgmt=wpa-psk
proto=wpa3
pairwise=ccmp
group=ccmp
psk=StrongPass!2023

     3. WPA2企业版 (EAP)

[802-11-wireless-security]
key-mgmt=wpa-eap
proto=rsn
pairwise=ccmp
group=ccmp

# 需配合802-1x段
[802-1x]
eap=peap;
[email protected]
password=MySecurePassword
phase2-auth=mschapv2

     4. 开放网络

[802-11-wireless-security]
key-mgmt=none
auth-alg=open

     5. Cisco LEAP认证

[802-11-wireless-security]
key-mgmt=ieee8021x
auth-alg=leap
leap-username=employee
leap-password=C1sc0Pass

四、高级安全特性

     1. PMF保护管理帧

[802-11-wireless-security]
ieee80211w=2  # 强制保护
pmf=required

     2. 混合加密兼容

[802-11-wireless-security]
proto=wpa,rsn
pairwise=tkip,ccmp
group=tkip,ccmp

     3. 企业级证书认证

[802-11-wireless-security]
key-mgmt=wpa-eap

[802-1x]
eap=tls;
[email protected]
private-key=/etc/ssl/private/user.key
client-cert=/etc/ssl/certs/user.crt
ca-cert=/etc/ssl/certs/ca.crt

     4. 增强开放网络 (OWE)

[802-11-wireless-security]
key-mgmt=owe
proto=rsn
pairwise=ccmp

五、企业级场景配置

     场景1:金融机构高安全网络

[802-11-wireless-security]
key-mgmt=wpa-eap
proto=wpa3
pairwise=ccmp
pmf=required

[802-1x]
eap=tls;
[email protected]
private-key=/etc/certs/teller.key
client-cert=/etc/certs/teller.pem

     场景2:医院访客网络

[802-11-wireless-security]
key-mgmt=wpa-psk
proto=rsn
psk=GuestAccess2023
pairwise=ccmp
group=ccmp

     场景3:工业物联网网络

[802-11-wireless-security]
key-mgmt=wpa-psk
proto=rsn
psk=IoTDevice@123
pairwise=ccmp
group=ccmp
pmf=disabled  # 兼容旧设备

     场景4:政府安全网络

[802-11-wireless-security]
key-mgmt=wpa-eap
proto=wpa3
pairwise=gcmp  # 256位加密
pmf=required

[802-1x]
eap=ttls;
[email protected]
anonymous-identity=anonymous
password=TopSecret!123
phase2-auth=gtc

六、密钥安全最佳实践

     1. PSK安全存储

# 密钥环存储(推荐)
psk-flags=2

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

     2. 企业凭证保护

[802-1x]
password-flags=1  # 每次询问密码

# 或使用证书认证
client-cert=/path/to/cert.pem
private-key=/path/to/key.pem

     3. 定期密钥轮换

# 通过外部脚本更新PSK
[connection]
timestamp=1672531200  # 设置过期时间

七、故障排查与审计

     1. 诊断命令

# 查看连接安全参数
nmcli -f 802-11-wireless-security connection show "SSID"

# 扫描网络安全信息
sudo iw dev wlan0 scan | grep -A5 "SSID"

# 测试EAP认证
eapol_test -c /etc/wpa_supplicant.conf -a 192.168.1.1 -p 1812 -s Secret

     2. 日志分析

# 启用详细日志
sudo nmcli general logging level DEBUG domains WIFI,WPA

# 查看wpa_supplicant日志
journalctl -u wpa_supplicant -f

     3. 安全审计要点

风险 安全配置
弱加密 禁用TKIP,使用CCMP/GCMP
密钥泄露 使用psk-flags=12
中间人攻击 强制PMF (pmf=required)
暴力破解 使用WPA3 SAE

     4. 常见问题解决

问题 解决方案
无法连接WPA3 更新网卡驱动和固件
企业认证失败 检查[802-1x]配置和证书
PMF不兼容 降级为pmf=optional
WEP连接失败 确认密钥索引和类型

八、配置示例

     WPA2个人版(十六进制PSK)

[802-11-wireless-security]
key-mgmt=wpa-psk
proto=rsn
pairwise=ccmp
group=ccmp
psk=536563726574313233  # "Secret123"

     WPA3企业版(EAP-TLS)

[802-11-wireless-security]
key-mgmt=wpa-eap
proto=wpa3
pairwise=ccmp
pmf=required

[802-1x]
eap=tls;
[email protected]
client-cert=/etc/certs/client.crt
private-key=/etc/certs/client.key
ca-cert=/etc/certs/ca.crt

     增强开放网络(OWE)

[802-11-wireless-security]
key-mgmt=owe
proto=rsn
pairwise=ccmp
group=ccmp

⚠️ 关键提示

  1. 优先使用现代 [wifi-sec] 段名
  2. 避免使用 WEP 和 TKIP
  3. 修改后需重启连接:
    sudo nmcli con down "SSID" && sudo nmcli con up "SSID"
    
  4. 敏感信息使用 -flags 参数保护

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

















[wifi-security][802-11-wireless-security]
[wifi-security][802-11-wireless-security] 深度对比解析

在 NetworkManager 的无线网络配置中,[wifi-security][802-11-wireless-security] 都是用于配置无线网络安全参数的段,但它们代表了不同的演进阶段和技术实现方式。以下是两者的全面对比分析:


一、核心区别概览

特性 [wifi-security] (现代) [802-11-wireless-security] (传统)
引入时间 NetworkManager 1.0+ (2016年后) NetworkManager 0.9.x (2014年前)
命名规范 简洁的通用命名 遵循IEEE标准命名
WPA3支持 原生完整支持 需额外扩展
参数命名 统一使用连字符分隔 混合使用下划线和连字符
推荐程度 ✅ 推荐使用 ⚠️ 遗留兼容
配置文件示例 新创建的连接 旧系统迁移的连接

二、参数映射关系

     1. 基础安全参数对比

功能 [wifi-security] [802-11-wireless-security]
密钥管理 key-mgmt=wpa-psk key-mgmt=wpa-psk
预共享密钥 psk=password psk=password
安全协议 proto=wpa3 proto=wpa3
单播加密 pairwise=ccmp pairwise=ccmp
组播加密 group=ccmp group=ccmp

     2. 高级安全参数对比

功能 [wifi-security] [802-11-wireless-security]
PMF保护 ieee80211w=2 pmf=required
SAE机制 sae-pwe=2 无直接对应
企业认证 需配合[802-1x] 需配合[802-1x]
密钥存储 psk-flags=2 psk-flags=2

三、技术演进解析

     1. 现代 WPA3 配置对比

# 现代 [wifi-security] 配置
[wifi-security]
key-mgmt=sae
proto=wpa3
pairwise=ccmp
group=ccmp
ieee80211w=2
sae-pwe=2
psk=SecurePass!123
# 传统 [802-11-wireless-security] 配置
[802-11-wireless-security]
key-mgmt=wpa-psk  # 无原生sae支持
proto=wpa3
pairwise=ccmp
group=ccmp
pmf=required
psk=SecurePass!123

关键差异

  • [wifi-security] 直接支持 key-mgmt=sae
  • [802-11-wireless-security] 需使用 key-mgmt=wpa-psk 模拟

     2. 企业级认证配置

# 现代配置
[wifi-security]
key-mgmt=wpa-eap

[802-1x]
eap=ttls;
[email protected]
password=MyPassword
# 传统配置
[802-11-wireless-security]
key-mgmt=wpa-eap

[802-1x]
eap=ttls;
[email protected]
password=MyPassword

一致性:企业认证部分参数完全相同


四、兼容性与转换

     1. 自动转换机制
NetworkManager 会自动处理两者关系:

包含
包含
NM加载时
直接使用
旧系统配置
802-11-wireless-security
新系统配置
wifi-security
内部转换为wifi-security参数
安全引擎

     2. 手动转换指南
将传统配置转换为现代配置:

# 传统配置
[802-11-wireless-security]
key-mgmt=wpa-psk
proto=rsn
pairwise=ccmp
group=ccmp
psk=password

# 转换后的现代配置
[wifi-security]
key-mgmt=wpa-psk
proto=rsn
pairwise=ccmp
group=ccmp
psk=password

     3. 双段共存处理
若两者同时存在,优先级为:

[wifi-security] > [802-11-wireless-security]

NetworkManager 会优先采用 [wifi-security] 中的参数值


五、最佳实践建议

     1. 新网络配置

# 始终使用现代段名
[wifi-security]
key-mgmt=sae        # WPA3优先
proto=wpa3
pairwise=ccmp
ieee80211w=2
psk=Strong!Password

     2. 旧系统迁移

# 批量转换旧配置文件
find /etc/NetworkManager/system-connections/ -name "*.nmconnection" -exec \
sed -i 's/\[802-11-wireless-security\]/\[wifi-security\]/g' {} +

     3. 企业网络配置

# 统一使用现代格式
[wifi-security]
key-mgmt=wpa-eap

[802-1x]
eap=tls;
[email protected]
client-cert=/path/to/cert.pem
private-key=/path/to/key.pem

     4. 特殊场景处理

# 需要兼容旧设备的网络
[wifi-security]
key-mgmt=wpa-psk
proto=rsn,wpa      # 兼容WPA/WPA2
pairwise=ccmp,tkip # 兼容AES/TKIP
group=ccmp,tkip

六、技术差异深度解析

     1. PMF保护实现差异

特性 [wifi-security] [802-11-wireless-security]
参数名 ieee80211w pmf
值类型 整型(0,1,2) 字符串(disabled/optional/required)
默认值 -1 (全局默认) 未设置

     2. WPA3支持差异

wifi-security
wireless-security
两者
两者
WPA3功能
SAE认证
192-bit加密
增强开放网络
原生key-mgmt=sae
模拟key-mgmt=wpa-psk
需手动配置
owe模式

     3. 网状网络支持
[wifi-security] 原生支持:

[wifi]
mode=mesh

[wifi-security]
key-mgmt=sae
mesh-psk=SharedSecret

七、企业部署建议

     1. 新部署架构

现代网络基础设施
  ├── WPA3企业认证
  ├── 零信任安全模型
  └── 统一使用[wifi-security]

     2. 旧系统迁移路径

传统网络
  → 混合过渡阶段(双段兼容)
    → 现代网络(纯wifi-security)

     3. 安全策略实施

# 强制使用WPA3
[wifi-security]
key-mgmt=sae
proto=wpa3
ieee80211w=2

     4. 配置审计命令

# 检查安全配置
nmcli -f wifi-security connection show "SSID"

# 验证PMF状态
sudo iw dev wlan0 link | grep "PMF"

通过合理选择配置段类型,可以实现从传统无线网络到现代WPA3网络的无缝演进,同时确保最佳的安全性和兼容性。

















[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 整数(秒) 2 BPDU发送间隔
max-age 整数(秒) 20 BPDU最大生存时间
ageing-time 整数(秒) 300 MAC地址老化时间

     2. VLAN过滤

参数 值类型 默认值 说明
vlan-filtering 布尔 false 启用VLAN过滤
vlan-default-pvid 整数(1-4094) 1 默认端口VLAN ID
vlan-protocol 字符串 802.1Q VLAN协议: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-address MAC 自定义组播地址
hash-max 整数 4096 MAC哈希表大小
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] 段,可以实现从简单家庭网络到大型数据中心网络的各种桥接场景,提供稳定高效的第二层网络服务。

















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

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


一、[bridge] 段的核心作用

  1. 控制生成树协议:管理 STP 行为防止环路
  2. 定义网桥参数:配置老化时间、优先级等
  3. 管理从接口:定义网桥成员的行为
  4. VLAN 支持:配置 VLAN 过滤和处理
  5. 性能优化:调整组播和转发设置

二、完整参数列表与详解

     1. 基础网桥参数

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

     2. 高级性能参数

参数 值类型 默认值 说明
multicast-snooping 布尔 true 启用IGMP/MLD嗅探
vlan-filtering 布尔 false 启用802.1Q VLAN过滤
vlan-default-pvid 整数 (1-4094) 1 默认端口VLAN ID
vlan-protocol 字符串 802.1Q VLAN协议:802.1Q802.1ad
group-forward-mask 十六进制 0 转发组播控制帧的掩码

     3. 从接口专用参数

参数 值类型 默认值 说明
path-cost 整数 (1-65535) 100 端口路径成本(STP)
priority 整数 (0-255) 32 端口优先级(STP)
hairpin-mode 布尔 false 允许端口发夹模式
vlan-ids VLAN列表 端口允许的VLAN列表

三、配置模式详解

     1. 基本网桥配置

[bridge]
stp=true
priority=16384      # 提高优先级
forward-delay=4     # 减少延迟
ageing-time=600     # 延长MAC老化时间

     2. 高性能网桥(禁用STP)

[bridge]
stp=false           # 小型网络禁用STP
multicast-snooping=true
vlan-filtering=true # 启用VLAN支持

     3. VLAN感知网桥

[bridge]
vlan-filtering=true
vlan-default-pvid=100  # 默认VLAN ID
vlan-protocol=802.1ad  # QinQ支持

# 定义允许的VLAN
vlans=10;20;30;
vlan-10-untagged=true
vlan-20-pvid=true

四、从接口配置(关键部分)

     1. 从接口配置文件结构

# br0-slave-eth1.nmconnection
[connection]
id=br0-slave-eth1
type=ethernet
interface-name=eth1
master=br0                # 指向主网桥
slave-type=bridge         # 指定为网桥端口

[bridge-port]             # 从接口专用段
path-cost=50              # 调整路径成本
priority=16               # 更高端口优先级
hairpin-mode=true         # 允许发夹模式

     2. VLAN端口配置

[bridge-port]
# 允许VLAN 10(无标签), VLAN 20(标签), VLAN 30(标签)
vlan-ids=10:untagged:pvid, 20:tagged, 30:tagged

# 等效详细写法
bridge-port-vlans=10;20;30;
bridge-port-vlan-10-untagged=true
bridge-port-vlan-10-pvid=true
bridge-port-vlan-20-tagged=true
bridge-port-vlan-30-tagged=true

五、企业级场景配置

     场景1:虚拟化主机网桥

[bridge]
stp=true
priority=4096       # 高优先级(根桥)
forward-delay=4
hello-time=1
max-age=10
vlan-filtering=true
vlan-default-pvid=10

# 定义VLAN
vlans=10;20;30;
vlan-10-untagged=true

     场景2:高可用Kubernetes集群

[bridge]
stp=true
priority=8192       # 备份根桥
ageing-time=300
multicast-snooping=false  # 容器网络需禁用

# 从接口配置
[bridge-port]
path-cost=100
priority=64

     场景3:云环境QinQ网桥

[bridge]
vlan-filtering=true
vlan-protocol=802.1ad  # QinQ支持
vlan-default-pvid=1

# 服务提供商VLAN
vlans=100:200; 100:300; 200:400;

     场景4:工业网络冗余

[bridge]
stp=true
priority=16384
forward-delay=2     # 快速收敛
group-forward-mask=8 # 转发STP控制帧

# 从接口配置
[bridge-port]
path-cost=1000      # 高成本链路
priority=128

六、最佳实践与优化

     1. STP优化参数矩阵

网络规模 推荐配置
<5设备 stp=false
5-50设备 stp=true, forward-delay=4, hello-time=1
>50设备 stp=true, max-age=10, priority=4096-32768

     2. VLAN设计原则

# 标准VLAN配置
vlan-default-pvid=99      # 管理VLAN
vlans=10;20;30;           # 数据VLAN
vlan-10-untagged=true     # 接入端口
vlan-20-tagged=true       # Trunk端口

     3. 性能调优指南

# 数据中心优化
ageing-time=300           # 标准老化时间
multicast-snooping=true   # 减少组播洪泛
vlan-filtering=true       # 硬件加速VLAN

     4. 安全加固配置

[bridge]
stp=true                  # 防环路攻击
vlan-filtering=true       # 隔离VLAN
group-forward-mask=0      # 不转发控制帧

# 禁用不必要特性
vlans=                   # 明确允许的VLAN

七、故障排查与维护

     1. 诊断命令

# 查看网桥状态
bridge link show

# 检查STP状态
bridge stp show

# 查看VLAN配置
bridge vlan show

# 监控流量
tc -s qdisc show dev br0

     2. 常见问题解决

问题 解决方案
环路广播风暴 启用STP并检查配置
VLAN隔离失效 验证vlan-filtering=true
性能下降 禁用multicast-snooping
端口不转发 检查STP阻塞状态
容器网络不通 禁用multicast-snooping

     3. 维护命令

# 重载网桥配置
sudo nmcli con reload
sudo nmcli con down br0 && sudo nmcli con up br0

# 临时调整参数
sudo ip link set dev br0 type bridge forward_delay 2000

八、高级配置技巧

     1. 多实例STP (MSTP)

[bridge]
stp=true
mst-enable=true
mst-max-age=20
mst-max-hops=20
mst-priority=32768
mst-tx-hold-count=6

     2. IGMP侦听优化

[bridge]
multicast-snooping=true
multicast-router=1        # 固定为组播路由器
multicast-query-interval=12500 # 12.5秒查询间隔

     3. 网桥防火墙集成

[connection]
zone=trusted  # 指定firewalld区域

# 或直接标记流量
[bridge]
group-fwd-mask=0x8 # 转发802.1X流量

     4. 硬件卸载配置

# 启用SR-IOV虚拟功能
[bridge]
vlan-filtering=true
vlan-protocol=802.1Q

# 在从接口启用卸载
[ethernet]
offload-options=hw-tc-offload:true;

⚠️ 关键提示:生产环境修改前备份配置

sudo cp /etc/NetworkManager/system-connections/br0.nmconnection{,.bak}

总结:企业级网桥最佳实践

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

[bridge]
stp=true
priority=4096               # 根桥优先级
forward-delay=4             # 快速收敛
vlan-filtering=true         # 启用VLAN
vlan-default-pvid=100       # 管理VLAN
vlans=10;20;30;             # 定义数据VLAN
multicast-snooping=true     # 优化组播

[ipv4]
method=manual
addresses=10.0.100.1/24

从接口配置示例

[connection]
id=br0-slave-eth1
type=ethernet
master=br0
slave-type=bridge

[bridge-port]
path-cost=100
priority=32
vlan-ids=10:untagged:pvid, 20:tagged, 30:tagged

通过合理配置 [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.1Q VLAN协议: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 :  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] 段,可以实现从基础端口管理到高级网络策略的全方位控制,满足各种桥接网络场景的需求。

















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

[bridge-port] 段是网桥从接口(网桥成员)的核心配置部分,用于定义物理或虚拟接口作为网桥端口的特性和行为。以下是全面解析:


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

  1. 控制端口成本:影响生成树路径选择
  2. 管理端口状态:配置STP端口优先级和状态
  3. VLAN配置:定义端口的VLAN成员关系和标签模式
  4. 流量控制:配置发夹模式和保护功能
  5. 性能优化:调整链路参数和缓冲设置

二、完整参数列表与详解

     1. STP 相关参数

参数 值类型 默认值 说明
path-cost 整数 (1-65535) 100 路径成本(值越高优先级越低)
priority 整数 (0-255) 128 端口优先级(值小优先)
hairpin-mode 布尔 false 发夹模式(允许端口环回)
bpdu-guard 布尔 false BPDU保护(禁用未授权设备)

     2. VLAN 配置参数

参数 值类型 默认值 说明
vlan-ids VLAN列表 端口允许的VLAN ID
格式:10,20,3010-100
vlan--tagged 布尔 false 指定VLAN是否标签转发
vlan--untagged 布尔 false 指定VLAN是否无标签
vlan--pvid 布尔 false 指定VLAN为PVID(端口VLAN ID)
vlan--egress-priority 整数 (0-7) 0 VLAN出口优先级

     3. 流量控制参数

参数 值类型 默认值 说明
multicast-router 整数 1 组播路由器端口:
0=禁用
1=自动
2=永久
3=临时
unicast-flood 布尔 true 是否泛洪未知单播
multicast-flood 布尔 true 是否泛洪未知组播
broadcast-flood 布尔 true 是否泛洪广播

     4. 高级性能参数

参数 值类型 默认值 说明
learning 布尔 true 是否学习MAC地址
fast-leave 布尔 false IGMP快速离开
isolated 布尔 false 隔离端口(仅与网桥通信)
guard 字符串 保护模式:none,root,all

三、端口配置模式详解

     1. 标准接入端口(Access Port)

[bridge-port]
# 仅允许VLAN 10,无标签
vlan-ids=10
vlan-10-untagged=true
vlan-10-pvid=true

     2. 中继端口(Trunk Port)

[bridge-port]
# 允许VLAN 10(无标签),20(标签),30(标签)
vlan-ids=10,20,30
vlan-10-untagged=true
vlan-10-pvid=true
vlan-20-tagged=true
vlan-30-tagged=true

     3. 高优先级端口

[bridge-port]
path-cost=50      # 低路径成本(高优先级)
priority=64       # 高端口优先级
bpdu-guard=true   # 启用BPDU保护

     4. 虚拟化主机端口

[bridge-port]
hairpin-mode=true  # 允许虚拟机间直连
learning=false     # 禁用MAC学习(SR-IOV场景)
isolated=true      # 隔离模式(仅与网桥通信)

四、企业级场景配置

     场景1:服务器接入端口

[bridge-port]
# VLAN 100为管理VLAN(无标签)
vlan-ids=100,200,300
vlan-100-untagged=true
vlan-100-pvid=true
vlan-200-tagged=true
vlan-300-tagged=true
path-cost=50
priority=64

     场景2:交换机间中继

[bridge-port]
# 允许所有VLAN (1-4094)
vlan-ids=1-4094
# 所有VLAN标签转发
vlan-*-tagged=true
path-cost=100
priority=128
bpdu-guard=true

     场景3:虚拟机直连优化

[bridge-port]
hairpin-mode=true  # 允许虚拟机间通信
learning=false     # 禁用MAC学习(硬件卸载)
multicast-flood=false # 减少组播洪泛

     场景4:工业网络冗余端口

[bridge-port]
path-cost=1000     # 高成本备份链路
priority=255       # 最低优先级
guard=root         # 根保护

五、VLAN配置高级技巧

     1. 复杂VLAN定义

[bridge-port]
# VLAN 10: 无标签(PVID)
# VLAN 20: 标签
# VLAN 30: 无标签(非PVID)
# VLAN 40-50: 标签
vlan-ids=10,20,30,40-50
vlan-10-untagged=true
vlan-10-pvid=true
vlan-20-tagged=true
vlan-30-untagged=true
vlan-40-tagged=true
vlan-50-tagged=true

     2. QoS优先级配置

[bridge-port]
# VLAN 100: 高优先级
vlan-100-egress-priority=6

# VLAN 200: 标准优先级
vlan-200-egress-priority=3

# VLAN 300: 低优先级
vlan-300-egress-priority=0

     3. 语音VLAN最佳实践

[bridge-port]
# 数据VLAN (无标签)
vlan-10-untagged=true
vlan-10-pvid=true

# 语音VLAN (标签)
vlan-20-tagged=true

# 优先级配置
vlan-20-egress-priority=6  # EF优先级

六、最佳实践与优化

     1. STP路径成本参考表

链路速度 推荐成本
10 Mbps 100-200
100 Mbps 19-50
1 Gbps 4-10
10 Gbps 2-4
40 Gbps 1-2

     2. 安全加固配置

[bridge-port]
bpdu-guard=true     # 防止非法交换机接入
guard=root          # 根保护
unicast-flood=false # 减少洪泛攻击面
learning-snooping=strict # 严格MAC学习

     3. 性能优化矩阵

场景 推荐配置
虚拟化 hairpin-mode=true, learning=false
视频流 multicast-router=2, fast-leave=true
低延迟 path-cost=10, priority=64
高吞吐 broadcast-flood=false

     4. 故障恢复配置

[bridge-port]
# 链路故障快速检测
link-up-down-trap=enable
# 自动恢复设置
error-disable-recovery=30  # 30秒后恢复

七、故障排查与维护

     1. 诊断命令

# 查看端口状态
bridge link show dev eth1

# 检查STP端口状态
bridge stp show br0

# 查看VLAN配置
bridge vlan show

# 监控端口统计
ethtool -S eth1

     2. 常见问题解决

问题 解决方案
端口被阻塞 降低path-cost,提高优先级
VLAN不通 检查vlan-ids和标签设置
环路检测 启用bpdu-guardguard
性能下降 调整multicast-floodlearning

     3. 维护命令

# 重载端口配置
sudo nmcli con reload
sudo nmcli con down br0-slave-eth1 && sudo nmcli con up br0-slave-eth1

# 临时调整参数
sudo ip link set dev eth1 type bridge_port cost 50 priority 64

八、高级配置技巧

     1. 多宿主端口配置

[bridge-port]
# 同时连接两个网桥
bridge=br0,br1
vlan-ids=10:br0,20:br1

     2. EVPN/VXLAN集成

[bridge-port]
# VXLAN隧道端口
vxlan-id=10010
vxlan-remote=10.0.0.100
vxlan-local=192.168.1.100
vxlan-learning=false

     3. 硬件卸载配置

[bridge-port]
# 启用SR-IOV和TC硬件卸载
offload-options=hw-tc-offload:true; hw-vlan-offload:true;
accelerated=yes

     4. 端口镜像配置

[bridge-port]
# 将流量镜像到eth2
mirror=eth2
mirror-direction=both  # 双向镜像

⚠️ 关键提示:生产环境修改前备份配置

sudo cp /etc/NetworkManager/system-connections/br0-slave-eth1.nmconnection{,.bak}

总结:企业级端口最佳实践

# br0-slave-eth1.nmconnection
[connection]
id=br0-slave-eth1
type=ethernet
interface-name=eth1
master=br0
slave-type=bridge

[bridge-port]
# STP优化
path-cost=50
priority=64
hairpin-mode=false

# VLAN配置
vlan-ids=10,20,30
vlan-10-untagged=true
vlan-10-pvid=true
vlan-20-tagged=true
vlan-30-tagged=true

# 安全加固
bpdu-guard=true
unicast-flood=false

网桥主接口配置参考

# br0.nmconnection
[connection]
id=Enterprise-Bridge
type=bridge
interface-name=br0

[bridge]
stp=true
priority=4096
vlan-filtering=true
vlan-default-pvid=1

[ipv4]
method=manual
addresses=10.0.100.1/24

通过合理配置 [bridge-port] 段,可以实现从简单网络连接到复杂数据中心架构的高性能网桥端口管理。

















[vlan]

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

[vlan] 段是 NetworkManager 中配置 VLAN(虚拟局域网)接口的核心部分,用于在单个物理接口上创建多个逻辑网络。以下是全面解析:


一、[vlan] 段的核心作用

  1. VLAN创建:定义基于802.1Q标准的虚拟接口
  2. 父接口绑定:指定承载VLAN的物理或逻辑接口
  3. VLAN ID管理:控制VLAN标签和优先级
  4. 流量处理:配置VLAN标记和去标记行为
  5. 高级协议:支持QinQ和协议特定VLAN

二、完整参数列表与详解

     1. 基础VLAN参数

参数 值类型 默认值 说明
id 整数 (1-4094) 必填 VLAN ID(唯一标识)
parent 字符串 必填 父接口名称(如eth0)
flags 整数 1 VLAN标志:
1=重排序头(默认)
2=GVRP协议
4=松散绑定

     2. 高级VLAN参数

参数 值类型 默认值 说明
ingress-priority-map 优先级映射 入口优先级到VLAN优先级映射
格式:0:1,1:2,2:3,3:4,4:5,5:6,6:7,7:0
egress-priority-map 优先级映射 出口VLAN优先级到优先级映射
protocol 字符串 802.1Q VLAN协议:
802.1Q(标准)
802.1ad(QinQ)
reorder-headers 布尔 true 是否重排序VLAN头
loose-binding 布尔 false 是否启用松散绑定

     3. QoS与优先级

参数 值类型 默认值 说明
vlan-priority 整数 (0-7) 0 VLAN帧优先级(CoS)
skb-priority 整数 (0-7) 0 Socket缓冲区优先级

三、配置模式详解

     1. 基础VLAN配置

[vlan]
id=100
parent=eth0

     2. 带优先级的VLAN

[vlan]
id=200
parent=eth1
vlan-priority=6  # 最高优先级

     3. QinQ配置(运营商网络)

[vlan]
id=300
parent=eth0.100  # 父接口也是VLAN
protocol=802.1ad # 启用QinQ

     4. 优先级映射配置

[vlan]
ingress-priority-map=0:1,1:2,2:3,3:4,4:5,5:6,6:7,7:0
egress-priority-map=0:1,1:2,2:3,3:4,4:5,5:6,6:7,7:0

四、企业级场景配置

     场景1:服务器管理VLAN

[connection]
id=Management-VLAN
type=vlan
interface-name=eth0.100

[vlan]
id=100
parent=eth0
vlan-priority=7  # 最高优先级

[ipv4]
method=manual
addresses=10.0.100.10/24

     场景2:语音和数据VLAN分离

# 语音VLAN
[vlan]
id=110
parent=eth1
vlan-priority=6

# 数据VLAN
[vlan]
id=120
parent=eth1
vlan-priority=3

     场景3:云环境多租户QinQ

[vlan]
id=500
parent=eth0
protocol=802.1ad  # 外层标签
loose-binding=true

# 内层租户VLAN (通过子接口实现)
[connection]
id=TenantA-VLAN
type=vlan
interface-name=eth0.500.100

[vlan]
id=100
parent=eth0.500  # 父接口为QinQ接口

     场景4:工业网络优先级映射

[vlan]
id=30
parent=eth2
ingress-priority-map=0:1,1:3,2:5,3:7,4:0,5:2,6:4,7:6
egress-priority-map=0:4,1:5,2:6,3:7,4:0,5:1,6:2,7:3

五、VLAN配置最佳实践

     1. VLAN设计原则

# 标准VLAN分配
id=10     # 管理VLAN
id=20     # 语音VLAN
id=30     # 用户VLAN
id=40     # 服务器VLAN
id=100    # 访客VLAN

     2. 优先级推荐值

流量类型 VLAN优先级
语音 6-7
视频 4-5
关键数据 3
标准数据 1-2
后台流量 0

     3. 安全隔离配置

# 私有VLAN配置
[vlan]
id=50
parent=eth0
flags=0x4000  # 启用私有VLAN

# 隔离端口
[vlan]
private-vlan=isolated

     4. 高可用配置

# 多父接口绑定
[vlan]
id=200
parent=eth0,eth1  # 双链路冗余
loose-binding=true

六、故障排查与维护

     1. 诊断命令

# 查看VLAN接口
ip -d link show eth0.100

# 检查VLAN配置
cat /proc/net/vlan/eth0.100

# 监控VLAN流量
tcpdump -i eth0 -nn -e vlan

# 测试连通性
ping -I eth0.100 10.0.100.1

     2. 常见问题解决

问题 解决方案
VLAN不通 检查父接口状态和交换机配置
优先级失效 验证ingress-priority-map
QinQ不工作 确保protocol=802.1ad
性能下降 检查reorder-headers=true
绑定失败 启用loose-binding=true

     3. 维护命令

# 重载VLAN配置
sudo nmcli con reload
sudo nmcli con down vlan100 && sudo nmcli con up vlan100

# 临时添加VLAN
sudo ip link add link eth0 name eth0.100 type vlan id 100

七、高级配置技巧

     1. 协议特定VLAN

# IPv4 VLAN
[vlan]
id=400
protocol=ipv4

# IPv6 VLAN
[vlan]
id=600
protocol=ipv6

# MPLS VLAN
[vlan]
id=500
protocol=mpls-uc

     2. VLAN过滤

[vlan]
id=100
parent=eth0
# 只允许特定MAC
mac-address-filter=00:11:22:33:44:55,AA:BB:CC:DD:EE:FF

     3. VLAN堆叠(多级)

# 第一层VLAN
[connection]
id=QinQ-Outer
type=vlan
interface-name=eth0.500

[vlan]
id=500
parent=eth0
protocol=802.1ad

# 第二层VLAN
[connection]
id=QinQ-Inner
type=vlan
interface-name=eth0.500.100

[vlan]
id=100
parent=eth0.500
protocol=802.1Q

     4. 硬件卸载优化

[vlan]
id=100
parent=eth0
offload-options=hw-vlan-offload:true; hw-tc-offload:true;

⚠️ 关键提示:生产环境修改前备份配置

sudo cp /etc/NetworkManager/system-connections/vlan100.nmconnection{,.bak}

总结:企业级VLAN最佳实践

# vlan100.nmconnection
[connection]
id=Server-VLAN100
type=vlan
interface-name=eth0.100

[vlan]
id=100
parent=eth0
vlan-priority=6       # 高优先级流量
protocol=802.1Q
reorder-headers=true
ingress-priority-map=0:1,1:2,2:3,3:4,4:5,5:6,6:7,7:0

[ipv4]
method=manual
addresses=10.0.100.10/24
gateway=10.0.100.1
dns=10.0.100.2;

物理接口配置参考

# eth0.nmconnection
[connection]
id=Server-NIC
type=ethernet
interface-name=eth0

[ethernet]
speed=1000
duplex=full

[ipv4]
method=disabled  # VLAN接口处理IP

通过合理配置 [vlan] 段,可以实现从简单网络隔离到复杂多租户架构的高级VLAN解决方案。

















[proxy]

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

[proxy] 段是 NetworkManager 连接配置文件中用于管理应用程序级代理设置的关键部分,它允许针对特定网络连接定义代理行为。以下是全面解析:


一、[proxy] 段的核心作用

  1. 代理服务器配置:定义 HTTP/HTTPS/FTP 代理服务器
  2. 自动配置支持:通过 PAC 脚本动态确定代理设置
  3. 例外规则管理:设置绕过代理的地址列表
  4. 认证集成:支持代理服务器的用户名/密码认证
  5. 连接感知代理:不同网络使用不同代理配置

二、完整参数列表与详解

     1. 代理模式选择

参数 值类型 默认值 说明
method 字符串 none 代理模式:
none-无代理
auto-自动检测
manual-手动配置

     2. 手动代理配置

参数 值类型 默认值 说明
http-proxy 主机:端口 HTTP代理:proxy.example.com:8080
https-proxy 主机:端口 HTTPS代理:secure-proxy:8443
ftp-proxy 主机:端口 FTP代理:ftp-gateway:2121
socks-proxy 主机:端口 SOCKS代理:socks5://socks-server:1080

     3. 自动配置 (PAC)

参数 值类型 默认值 说明
pac-url URL PAC脚本地址:http://proxy/config.pac
pac-script 多行文本 嵌入式PAC脚本

     4. 例外规则

参数 值类型 默认值 说明
ignore-hosts 主机列表 绕过代理的主机:localhost,127.0.0.1,192.168.*
no-proxy 域名列表 不代理的域名:*.example.com,internal

     5. 代理认证

参数 值类型 默认值 说明
http-proxy-username 字符串 HTTP代理用户名
http-proxy-password 字符串 HTTP代理密码
http-proxy-password-flags 整型 0 密码存储标志:
0=明文
1=询问
2=密钥环

三、配置模式详解

     1. 无代理模式 (method=none)

[proxy]
method=none
# 所有流量直连

     2. 自动检测模式 (method=auto)

[proxy]
method=auto
# 使用系统或DHCP提供的代理配置

     3. PAC自动配置 (method=auto + pac-url)

[proxy]
method=auto
pac-url=http://proxy.company.com/proxy.pac

     4. 手动代理配置 (method=manual)

[proxy]
method=manual
http-proxy=proxy.internal:3128
https-proxy=secure-gateway:8443
ignore-hosts=localhost,127.0.0.1,*.company.local
no-proxy=*.internal,192.168.*

     5. 嵌入式PAC脚本

[proxy]
method=auto
pac-script=function FindProxyForURL(url, host) {
    if (shExpMatch(host, "*.internal")) 
        return "DIRECT";
    return "PROXY proxy:8080; SOCKS5 socks-proxy:1080";
}

四、企业级场景配置

     场景1:企业办公网络

[proxy]
method=manual
http-proxy=corp-proxy:8080
https-proxy=corp-proxy:8443
http-proxy-username=employee
http-proxy-password-flags=2  # 密钥环存储
ignore-hosts=*.corp.local,10.*

     场景2:云开发环境

[proxy]
method=auto
pac-url=https://config.dev-env/proxy.pac
no-proxy=169.254.169.254  # 云元数据服务

     场景3:安全隔离网络

[proxy]
method=manual
# HTTP流量走代理
http-proxy=gateway:3128
# HTTPS直连(防止中间人攻击)
https-proxy=
# 内部系统直连
ignore-hosts=192.168.*,10.*,*.local

     场景4:全球分布式代理

[proxy]
method=auto
pac-script=function FindProxyForURL(url, host) {
    if (isInNet(host, "10.0.0.0", "255.0.0.0"))
        return "DIRECT";
    if (dnsDomainIs(host, ".eu.example.com"))
        return "PROXY eu-proxy:8080";
    return "PROXY us-proxy:8080; PROXY asia-proxy:8080";
}

五、安全最佳实践

     1. 认证安全配置

# 避免明文存储密码
[proxy]
http-proxy-username=user
http-proxy-password-flags=1  # 每次询问

# 或使用密钥环
http-proxy-password-flags=2

     2. HTTPS代理验证

[proxy]
https-proxy=secure-proxy:8443
# 强制证书验证
proxy-ssl-ca=/etc/ssl/certs/ca-bundle.crt

     3. 敏感流量保护

[proxy]
method=manual
# 财务系统直连
no-proxy=finance.example.com,payroll.*
# 其他走代理
http-proxy=general-proxy:8080

     4. 审计与合规

# 检查代理配置
grep -A 10 '\[proxy\]' *.nmconnection

# 高风险配置检测
grep 'http-proxy-password=' *.nmconnection

六、代理协议支持矩阵

协议 参数 示例 说明
HTTP http-proxy proxy:8080 标准HTTP代理
HTTPS https-proxy tls-proxy:443 TLS加密代理
CONNECT https-proxy secure-gate:8443 HTTPS隧道代理
SOCKS4 socks-proxy socks4://socks4:1080 SOCKS4代理
SOCKS5 socks-proxy socks5://socks5:1080 SOCKS5代理(支持认证)
FTP ftp-proxy ftp-gw:2121 FTP专用代理

七、故障排查与调试

     1. 配置验证命令

# 查看生效代理设置
nmcli -f proxy connection show "Connection-Name"

# 测试代理连通性
curl -x http://proxy:8080 http://example.com

     2. PAC脚本调试

// 在PAC脚本中添加调试输出
function FindProxyForURL(url, host) {
    alert("Request for: " + url);
    // ...代理逻辑...
}

     3. 常见问题解决

问题 解决方案
代理不生效 检查method是否设置为manualauto
认证失败 验证http-proxy-username和密码
PAC脚本错误 使用在线PAC验证工具检查
证书错误 添加proxy-ssl-ca参数
直连规则失效 检查ignore-hosts通配符语法

     4. 日志分析

# 启用代理调试
G_MESSAGES_DEBUG=all /usr/sbin/NetworkManager

# 查看代理相关日志
journalctl -u NetworkManager | grep -i proxy

八、高级配置技巧

     1. 多代理故障转移

[proxy]
method=manual
http-proxy=primary:8080; backup:8080; direct
# 按顺序尝试:主代理 → 备代理 → 直连

     2. 基于时间的代理规则

[proxy]
method=auto
pac-script=function FindProxyForURL() {
    var hour = new Date().getHours();
    if (hour > 9 && hour < 17) 
        return "PROXY office-proxy:8080";
    return "DIRECT";
}

     3. 地理位置代理

[proxy]
method=auto
pac-script=function FindProxyForURL(url, host) {
    if (geoip_country_code() == "CN")
        return "PROXY cn-proxy:8080";
    return "PROXY global-proxy:8080";
}

     4. 容器环境集成

[proxy]
method=manual
# 主机到容器通信直连
ignore-hosts=*.docker.internal,172.17.*
# 外部流量走代理
http-proxy=host-proxy:3128

九、最佳实践建议

     1. 企业代理模板

[proxy]
method=manual
http-proxy=corp-proxy.corp.com:8080
https-proxy=corp-proxy.corp.com:8443
no-proxy=*.corp.local,192.168.*,10.*
http-proxy-username=%USERNAME%
http-proxy-password-flags=1  # 动态认证

     2. 开发环境配置

[proxy]
method=auto
pac-url=http://dev-config/proxy.pac
# 本地服务直连
ignore-hosts=localhost,127.0.0.1,::1

     3. 安全加固原则

[proxy]
# 禁用不安全的代理协议
disable-socks=true
disable-ftp-proxy=true
# 强制HTTPS代理验证
https-proxy=https://secure-proxy:443
proxy-ssl-ca=/etc/ssl/certs/ca-bundle.crt

     4. 多云环境适配

[proxy]
method=auto
pac-script=function FindProxyForURL(url, host) {
    if (isInNet(host, "10.0.0.0", "255.0.0.0")) 
        return "DIRECT";  // AWS VPC
    if (isInNet(host, "192.168.0.0", "255.255.0.0"))
        return "DIRECT";  // Azure VNet
    return "PROXY cloud-gateway:8080";
}

⚠️ 关键提示

  1. 避免明文存储密码 - 使用password-flags=12
  2. 生产环境推荐使用PAC脚本集中管理
  3. 修改后需激活连接:
    nmcli con up "Connection-Name"
    

总结:现代代理配置方案

[proxy]
method=auto  # 推荐使用自动配置
pac-url=https://proxy-config.example.com/env.pac

# 或手动配置
method=manual
http-proxy=proxy.example.com:8080
https-proxy=proxy.example.com:8443
socks-proxy=socks5://socks.example.com:1080
no-proxy=localhost,127.0.0.1,*.internal,192.168.*
http-proxy-password-flags=2  # 密钥环存储

通过合理配置 [proxy] 段,可以实现从简单代理到智能流量路由的全面代理管理,满足企业安全合规和网络优化需求。

















[]

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

[] 段是 VPN 连接的核心配置部分,用于定义各种 VPN 协议的具体参数。以下是全面解析,涵盖主流 VPN 协议及其企业级配置:


一、[] 段的核心作用

  1. 协议定义:指定 VPN 类型(OpenVPN、WireGuard、IPsec等)
  2. 连接参数:配置服务器地址、端口、认证方式
  3. 加密控制:管理加密算法和密钥交换
  4. 路由策略:定义 VPN 流量路由规则
  5. 高级功能:配置证书、代理、自定义脚本等

二、基础结构

[]
service-type=  # 如:org.freedesktop.NetworkManager.open
<参数1>=<值1>
<参数2>=<值2>
...
data=  # 可选

[-secrets]  # 敏感信息单独存储
<密钥参数1>=<值1>
<密钥参数2>=<值2>

三、主流 VPN 协议配置详解

     1. OpenVPN (最常用)

[]
service-type=org.freedesktop.NetworkManager.open
connection-type=password-tls  # 认证类型
remote=203.0.113.5  # VPN服务器
port=1194  # 端口
proto=udp  # 协议
comp-lzo=adaptive  # 压缩
cipher=AES-256-GCM  # 加密算法
auth=SHA512  # 认证算法
tls-remote="CN=server-name"  # 服务器证书验证
remote-cert-tls=server  # 要求服务器证书
reneg-seconds=0  # 禁用密钥重协商

[-secrets]
username=user
password=SecurePass123!

     2. WireGuard (现代高性能)

[]
service-type=org.freedesktop.NetworkManager.wireguard
private-key=ABCDEF...123456=  # 客户端私钥
address=10.8.0.2/24  # 客户端IP
dns=10.8.0.1  # DNS服务器
mtu=1420  # 优化MTU
peer-routes=true  # 自动添加路由

# 对等端配置
peer.ABCDEF...7890.public-key=XYZ123...=  # 服务器公钥
peer.ABCDEF...7890.endpoint=203.0.113.5:51820
peer.ABCDEF...7890.allowed-ips=0.0.0.0/0  # 所有流量走VPN
peer.ABCDEF...7890.persistent-keepalive=25  # 保活间隔

     3. IPsec/IKEv2 (企业标准)

[]
service-type=org.freedesktop.NetworkManager.strongswan
address=203.0.113.5  # VPN网关
certificate=/etc/certs/client.p12  # 客户端证书
method=key  # 认证方式
virtual=yes  # 请求虚拟IP
encap=yes  # 启用NAT-T
proposal=yes  # 启用PFS
ike=aes256-sha256-modp2048!  # IKE阶段1
esp=aes256-sha256-modp2048!  # IKE阶段2

[-secrets]
password=PKCS12密码

四、高级配置参数

     通用高级参数

参数 说明
password-flags 0=明文, 1=询问, 2=密钥环
tunnel-mtu 自定义MTU值
tap-dev 启用TAP设备(桥接模式)
proxy-type HTTP/SOCKS5代理支持

     OpenVPN 专属

参数 说明
ca CA证书路径
cert 客户端证书路径
key 私钥路径
tls-crypt TLS静态密钥
auth-retry 认证失败重试行为
ns-cert-type 证书类型检查

     WireGuard 专属

参数 说明
fwmark 防火墙标记
ip4-auto-default-route 自动IPv4默认路由
ip6-auto-default-route 自动IPv6默认路由
listen-port 本地监听端口

五、企业级场景配置

     场景1:金融公司 OpenVPN

[]
service-type=org.freedesktop.NetworkManager.open
connection-type=tls
remote=.bank.example.com
port=443
proto=tcp-client
cipher=AES-256-GCM
auth=SHA512
tls-version-min=1.3
tls-cipher=TLS-ECDHE-ECDSA-AES256-GCM-SHA384
ca=/etc/ssl/ca.crt
cert=/etc/ssl/client.crt
key=/etc/ssl/client.key
tls-crypt=/etc/ssl/ta.key
remote-cert-eku="TLS Web Server Authentication"
script-security=2
up=/etc/open/security-scripts/firewall.sh

[-secrets]
# 证书已包含认证

     场景2:云服务 WireGuard

[]
service-type=org.freedesktop.NetworkManager.wireguard
private-key=ABCDEF...123456=
address=10.100.0.2/24
dns=10.100.0.1
mtu=1280
peer-routes=false

# 主服务器
peer.1.public-key=XYZ123...=
peer.1.endpoint=primary.cloud.example.com:51820
peer.1.allowed-ips=10.0.0.0/8
peer.1.persistent-keepalive=25

# 备用服务器
peer.2.public-key=UVW456...=
peer.2.endpoint=backup.cloud.example.com:51820
peer.2.allowed-ips=10.0.0.0/8
peer.2.persistent-keepalive=25

     场景3:政府机构 IPsec

[]
service-type=org.freedesktop.NetworkManager.libreswan
left=%defaultroute
leftid=government-agency
leftcert=gov-client-cert
right=.gov.example.com
rightid=@-server
ikev2=insist
ike=aes256-sha2;modp2048
phase2alg=aes_gcm-null
fragmentation=force
overridemtu=1400
dpddelay=30
dpdtimeout=120
dpdaction=hold

[-secrets]
# 使用智能卡认证

六、路由策略与分流

     1. 全流量VPN

[ipv4]
method=auto
never-default=false  # 允许默认路由

[]
... # VPN配置

     2. 分流路由 (仅特定IP走VPN)

[ipv4]
method=auto
never-default=true  # 禁用默认路由
routes=10.100.0.0/24  # VPN内部网络
routes=192.168.100.0/24 192.168.1.254  # 其他网络

[]
peer.1.allowed-ips=10.100.0.0/24  # 仅VPN内部网络

     3. 多VPN分流

# 主VPN连接
[ipv4]
routes=172.16.0.0/16

[]
peer.1.allowed-ips=172.16.0.0/16

# 备用VPN连接
[ipv4]
routes=10.8.0.0/16

[]
peer.1.allowed-ips=10.8.0.0/16

七、安全加固配置

     1. OpenVPN 安全模板

cipher=AES-256-GCM
auth=SHA512
tls-version-min=1.2
tls-cipher=TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384
reneg-sec=0  # 禁用重协商
remote-cert-tls=server
tls-auth=ta.key 0
script-security=2
allow-pull-fqdn=no

     2. WireGuard 安全模板

private-key-generation=ec384  # 384位ECDSA密钥
peer.1.preshared-key=StrongPSK123!  # 添加PSK
peer.1.allowed-ips=0.0.0.0/0,::/0
peer.1.endpoint=verified-domain.com:51820

     3. 证书管理最佳实践

[]
ca=/etc/pki/tls/certs/ca-bundle.crt
cert=/etc/pki/tls/certs/client-cert.pem
key=/etc/pki/tls/private/client-key.pem
cert-pass-flags=1  # 从密钥环获取密码

八、故障排查与维护

     1. 诊断命令

# OpenVPN 日志
journalctl -u NetworkManager --grep=open

# WireGuard 状态
wg show

# IPsec 诊断
sudo ipsec statusall

     2. 常见问题解决

问题 解决方案
连接超时 检查remote地址和防火墙
认证失败 验证[-secrets]和证书
路由丢失 检查never-defaultallowed-ips
性能低下 优化mtu和加密算法
DNS泄漏 配置VPN内DNS服务器

     3. 维护脚本示例

[]
# 连接前脚本
up-pre=/path/to/pre-up.sh
# 连接后脚本
up=/path/to/post-up.sh
# 断开脚本
down=/path/to/cleanup.sh

九、未来协议支持

     1. 量子安全 VPN

# 实验性配置
[]
service-type=org.freedesktop.NetworkManager.quantum
qkd-server=quantum.example.com
algorithm=kyber1024

     2. 零信任网络访问 (ZTNA)

[]
service-type=org.freedesktop.NetworkManager.ztna
controller=ztna-controller.example.com
app-id=finance-app
user-id=employee@company
device-cert=/etc/certs/device.pem

十、最佳实践总结

     安全配置模板

[]
# 通用安全
password-flags=2  # 密钥环存储
tunnel-mtu=1400

# OpenVPN 特例
cipher=AES-256-GCM
auth=SHA512
tls-version-min=1.3
remote-cert-tls=server

# WireGuard 特例
private-key-generation=ec384
peer.1.preshared-key=PSK_FLAG_STORED  # 密钥环存储

     企业部署建议

  1. 证书认证:避免用户名/密码
  2. 双因素认证:整合TOTP/智能卡
  3. 网络分段:VPN仅访问必要资源
  4. 自动轮换:定期更新PSK和证书
  5. 集中管理:使用FreeIPA/RADIUS整合

⚠️ 关键警告

  1. 私钥文件权限设为600
  2. 敏感参数使用password-flags=2
  3. 定期审计配置:
    grep -r "password=\|private-key" /etc/NetworkManager/system-connections/
    

通过合理配置 [] 段,可构建从基础远程访问到高安全企业VPN的全套解决方案。







































NetworkManager笔记250723







Linux网络管理工具NetworkManager笔记250726







你可能感兴趣的:(网络通讯传输协议,IP,TCP,UDP,物联,#,Linux,#,控制台命令行,Shell,bash,cmd,等,linux,笔记)