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-<ifname> 文件。在新系统中逐渐被淘汰。
    • DHCP 客户端: NM 本身不实现 DHCP,它调用外部客户端(如 dhclient)或使用内置于 systemd-networkd 的客户端。
    • DNS 解析器: NM 通常配置系统解析器(通过 /etc/resolv.conf)。现代发行版常将其指向 systemd-resolved (管理 /run/systemd/resolve/stub-resolv.conf) 或本地运行的 dnsmasq 实例(由 NM 管理),以处理 VPN 等场景的 DNS 配置。

关键概念

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

使用方式 (以 nmcli 为例)

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

  • 查询状态:

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

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

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

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

配置文件位置 (keyfile 插件)

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

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

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

优缺点总结

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

适用场景

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

总结

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





用 NetworkManager 设置网卡 IP

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

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

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

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

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

bash 复制代码
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: 连接类型是以太网。

激活新配置:

bash 复制代码
sudo nmcli connection up "MyStaticEth"

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

bash 复制代码
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:

bash 复制代码
# 关闭当前活动连接(如果正在使用)
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

bash 复制代码
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. 在终端运行:

    bash 复制代码
    sudo nmtui
  2. 使用键盘方向键选择 Edit a connection,回车。

  3. 选择你要修改的网卡对应的连接配置(如 enp1s0),或者按 <Add> 创建新配置。

  4. 在编辑界面:

    • 如果是新配置,先选择连接类型(如 Ethernet),并给 Profile name 起名。
    • 确保 Device 字段是你的物理网卡名(如 enp1s0)。
    • 移动到 IPv4 configuration 行。
      • 按回车,选择 Manual 设置静态 IP。
      • 选择 Automatic 设置 DHCP。
    • 如果选择了 Manual
      • <Show> 展开详细设置。
      • Addresses 行输入 IP 地址和子网掩码(格式:192.168.1.100/24)。
      • Gateway 行输入网关地址(如 192.168.1.1)。
      • DNS servers 行输入 DNS 地址(如 8.8.8.8,多个用逗号隔开)。
  5. <OK> 保存配置。

  6. 回到主菜单,选择 Activate a connection

  7. 找到你刚修改或创建的配置,按 <Deactivate>(如果已激活),然后按 <Activate> 重新激活使新配置生效。

  8. 选择 <Back> 然后 <Quit> 退出 nmtui


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

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

  1. 点击屏幕右上角的网络图标。

  2. 选择 Wired Settings(有线)或 Wi-Fi Settings(无线),然后点击齿轮图标⚙️(或类似设置按钮)。

  3. 找到你要配置的有线连接或 Wi-Fi 连接,点击它。

  4. 在打开的设置窗口中,切换到 IPv4IPv6 标签页。

  5. 设置静态 IP:

    • IPv4 Method 改为 Manual
    • Addresses 下:
      • 输入 Address (IP 地址,如 192.168.1.100)。
      • 输入 Netmask (子网掩码,通常 255.255.255.0 对应 /24)。
      • 输入 Gateway (网关,如 192.168.1.1)。
    • DNS 部分输入 DNS 服务器地址(如 8.8.8.8),一行一个。
  6. 设置 DHCP:

    • IPv4 Method 改为 Automatic (DHCP)
  7. 点击 ApplySave 按钮保存设置。

  8. 如果网络图标状态没有立即更新,可能需要点击一下开关暂时禁用再启用该连接,或者重启 NetworkManager 服务:

    bash 复制代码
    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) 内容:

ini 复制代码
[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

修改后生效步骤:

bash 复制代码
sudo nmcli connection down "MyStaticEth"
sudo nmcli connection reload  # 或在编辑后运行 `sudo systemctl reload NetworkManager`
sudo nmcli connection up "MyStaticEth"

🔍 验证设置是否生效

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

  1. 查看接口 IP 和路由:

    bash 复制代码
    ip addr show enp1s0  # 检查分配的 IP 地址和子网掩码
    ip route show        # 检查默认网关是否正确
  2. 测试网络连通性:

    bash 复制代码
    ping 192.168.1.1     # 测试是否能 ping 通网关
    ping 8.8.8.8         # 测试是否能 ping 通公网 IP
    ping www.google.com  # 测试 DNS 解析和公网连通性
  3. 检查 DNS 解析:

    bash 复制代码
    cat /etc/resolv.conf  # 查看当前使用的 DNS 服务器(注意:可能会被 systemd-resolved 或 dnsmasq 代理)
    nslookup www.google.com

💡 关键点总结:

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




用 NetworkManager 设置无线网络 Wifi





用 NetworkManager 配置网桥bridge

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


一、核心概念

  • 网桥作用:在二层(数据链路层)转发流量,使多个接口共享同一网络。

  • 典型结构

    graph LR Bridge(br0) -->|绑定| eth0(物理网卡) Bridge -->|绑定| eth1(物理网卡) Bridge -->|接入| vm1(虚拟机) Bridge -->|接入| vm2(虚拟机)
  • 关键点

    • IP 地址需配置在网桥接口 (如 br0)上,物理网卡(如 eth0)必须设为 从接口(slave) 且不能有独立 IP。
    • 物理网卡需处于未激活状态(由网桥接管控制)。

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

bash 复制代码
# 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

验证配置:

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

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

ini 复制代码
[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

ini 复制代码
[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

应用配置:

bash 复制代码
sudo nmcli connection reload  # 重载配置
sudo nmcli connection up br0
sudo nmcli connection up br0-slave-enp1s0

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

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

2. 添加多个从接口

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

3. 设置网桥优先级

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

4. 绑定 VLAN 接口

bash 复制代码
# 创建 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

五、删除网桥

bash 复制代码
# 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),需先删除原有连接:

      bash 复制代码
      nmcli connection show | grep enp1s0  # 查找关联连接
      nmcli connection delete "old-connection-name"
  2. 虚拟机/容器接入

    • KVM/QEMU:使用 -net bridge,br=br0 参数将虚拟机网卡接入网桥。

    • Docker:创建网桥网络:

      bash 复制代码
      docker network create -d bridge --subnet 192.168.1.0/24 my-bridge-net
  3. 网络性能优化

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

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

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

bash 复制代码
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. 必要条件

    bash 复制代码
    # 检查网卡是否支持 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 作为接入点

bash 复制代码
# 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 服务

bash 复制代码
# 创建服务文件
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 调度脚本

bash 复制代码
# 创建调度目录
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)

bash 复制代码
# 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

🔍 五、验证与故障排查

验证命令:

bash 复制代码
# 查看网桥状态
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. 无法加入网桥

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

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

    bash 复制代码
    # 检查冲突服务
    sudo systemctl stop hostapd
    sudo systemctl disable hostapd

🧩 六、高级配置选项

1. 隔离客户端流量

bash 复制代码
sudo nmcli connection modify br-wifi bridge.vlan-filtering yes
sudo nmcli connection modify br-wifi bridge.vlan-default-pvid 100

2. 多 SSID 网桥(VLAN 隔离)

bash 复制代码
# 创建 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 网络桥接

bash 复制代码
# 配置 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

🧯 七、完整卸载

bash 复制代码
# 停用连接
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 守护进程的全局行为,修改后需重启服务生效:

bash 复制代码
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 配置完成后退出守护进程 (适用无状态系统)

示例

ini 复制代码
[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

示例

ini 复制代码
[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=无限)

示例

ini 复制代码
[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

示例

ini 复制代码
[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)

示例

ini 复制代码
[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 中定义的接口

示例

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

七、完整配置示例

ini 复制代码
[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 解析问题,检查:

    bash 复制代码
    # 查看当前 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. 调试模式

    临时启用详细日志(不修改配置文件):

    bash 复制代码
    sudo nmcli general logging level DEBUG domains ALL
    sudo journalctl -fu NetworkManager  # 查看实时日志
  5. 配置备份

    修改前备份原始配置:

    bash 复制代码
    sudo cp /etc/NetworkManager/NetworkManager.conf{,.bak}

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





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

*.nmconnection 配置文件深度详解

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


一、文件基础信息

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

二、核心配置段详解

1. [connection] - 连接元数据

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

示例

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

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

ini 复制代码
[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示例

ini 复制代码
[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 类似,额外选项:

ini 复制代码
[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 编码

ini 复制代码
# 字符串格式(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 示例

ini 复制代码
[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 为例)

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

[vpn-secrets]
password=MyVPNPassword

三、配置示例全集

示例 1:静态IP有线连接

ini 复制代码
[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

ini 复制代码
[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:网桥连接

ini 复制代码
[connection]
id=Network-Bridge
type=bridge
interface-name=br0

[bridge]
stp=false

[ipv4]
method=manual
addresses=10.0.0.1/24

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





[connection]

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

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


一、[connection] 段的核心作用

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

二、完整参数列表及详解

1. 基础标识参数

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

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:<username>:;<group>:<groupname>: 示例:permissions=user:alice:;group:netadmins:
timestamp 时间戳 当前时间 最后修改时间(epoch秒)
read-only 布尔 false 是否只读连接

6. 高级参数

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

三、参数使用场景详解

1. 基本连接定义

ini 复制代码
[connection]
id=Primary-Ethernet
uuid=550e8400-e29b-41d4-a716-446655440000
type=ethernet

2. 接口强绑定

ini 复制代码
[connection]
interface-name=eno1  # 严格绑定到 eno1 接口

3. 自动连接优化

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

4. 主从连接配置

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

5. 权限管理

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

6. 高级网络特性

ini 复制代码
[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. 环境变量扩展

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

3. 保留值

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

五、配置示例

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

ini 复制代码
[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连接

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

示例3:网桥从接口

ini 复制代码
[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管理

    bash 复制代码
    # 生成新UUID
    uuidgen
    > 550e8400-e29b-41d4-a716-446655440000

    避免手动复制UUID导致冲突

  2. 优先级策略

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

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

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

    bash 复制代码
    # 修改后必须重载
    sudo nmcli con reload
  6. 故障排查

    bash 复制代码
    # 查看完整连接属性
    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

ini 复制代码
[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:排除虚拟设备

ini 复制代码
[connection]
id=Main-Ethernet
type=ethernet

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

[ipv4]
method=auto

示例 3:多条件组合匹配

ini 复制代码
[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] 段配置越具体,优先级越高

    ini 复制代码
    # 优先级 1: 同时匹配 MAC 和接口名
    [match]
    mac-address=00:11:22:33:44:55
    interface-name=eth0
    
    # 优先级 2: 只匹配 MAC
    [match]
    mac-address=00:11:22:33:44:55
    
    # 优先级 3: 通配符匹配
    [match]
    interface-name=eth*
  2. 连接 UUID:当匹配条件相同时,按 UUID 字母顺序激活

  3. 手动覆盖nmcli con up <id> 强制指定连接


五、调试匹配问题

1. 查看设备信息

bash 复制代码
# 获取设备详细信息
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. 测试匹配结果

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

3. 日志分析

bash 复制代码
# 启用 DEBUG 日志
sudo nmcli general logging level DEBUG domains HW,RFKILL

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

六、最佳实践与注意事项

  1. MAC 地址规范

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

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

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

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

    bash 复制代码
    # 修改后必须重载配置
    sudo nmcli connection reload

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

bash 复制代码
nmcli con mod "MyConnection" connection.autoconnect-priority 10




[ipv4]

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

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


一、[ipv4] 段的核心作用

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

二、完整参数列表与详解

1. 基础地址配置

参数 值类型 默认值 说明
method 字符串 必填 auto(DHCP), manual(静态), link-local, shared, disabled
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)

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

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

ini 复制代码
[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)

ini 复制代码
[ipv4]
method=link-local
# 自动获取169.254.0.0/16地址

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

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

四、高级配置技巧

1. 多IP地址配置

ini 复制代码
[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. 复杂静态路由

ini 复制代码
[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配置

ini 复制代码
[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. 路由优先级优化

ini 复制代码
# 有线连接 - 高优先级
[ipv4]
route-metric=100  # 值小优先级高

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

5. 网关健康检查

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

五、企业级场景配置

场景1:双网关负载均衡

ini 复制代码
[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分流路由

ini 复制代码
[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:高可用数据中心网络

ini 复制代码
[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. 配置验证命令

bash 复制代码
# 查看生效的IPv4配置
nmcli -g ipv4 connection show "Connection-Name"

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

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

2. 日志调试

bash 复制代码
# 启用DHCP调试
sudo nmcli general logging level DEBUG domains DHCP

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

3. 连接测试

bash 复制代码
# 网关可达性
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. 生产环境推荐配置

    ini 复制代码
    [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. 安全强化配置

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

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

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

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

bash 复制代码
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)

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

2. 仅DHCPv6 (method=dhcp)

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

3. 静态IPv6 (method=manual)

ini 复制代码
[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)

ini 复制代码
[ipv6]
method=link-local
# 自动生成fe80::/10地址

四、高级配置技巧

1. 隐私地址最佳实践

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

2. 多前缀地址配置

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

3. 企业级DNS配置

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

4. 路由策略优化

ini 复制代码
[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企业级配置

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

五、企业级场景配置

场景1:双栈网络配置

ini 复制代码
# 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网络

ini 复制代码
[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隧道配置

ini 复制代码
[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路由

ini 复制代码
[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. 配置验证命令

bash 复制代码
# 查看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. 日志调试

bash 复制代码
# 启用IPv6调试
sudo nmcli general logging level DEBUG domains IP6

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

3. 连接测试

bash 复制代码
# 网关可达性
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. 生产环境推荐配置

    ini 复制代码
    [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. 隐私保护配置

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

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

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

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

bash 复制代码
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绑定

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

2. 数据中心高速网络

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

3. 服务器唤醒配置

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

4. 网络隔离环境

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

5. 虚拟化环境优化

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

四、企业级场景配置

场景1:金融交易网络

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

场景2:虚拟化主机

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

场景3:工业控制系统

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

场景4:IBM s390主机

ini 复制代码
[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安全实践

ini 复制代码
# 禁止使用厂商默认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. 故障排查命令

bash 复制代码
# 查看协商状态
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组合

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

2. 巨型帧端到端配置

ini 复制代码
# 服务器端
[ethernet]
mtu=9000

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

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

3. 工业环境抗干扰配置

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

4. 虚拟化热迁移优化

ini 复制代码
[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. 配置后需重启连接:

    bash 复制代码
    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 字符串格式

ini 复制代码
[wifi]
ssid=MyHomeWiFi

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

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

3. 特殊字符处理

ini 复制代码
# 包含空格的SSID
ssid=4f66666963652057694669  # "Office WiFi"

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

四、操作模式详解

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

ini 复制代码
[wifi]
ssid=CoffeeShop
mode=infrastructure
band=a      # 优先5GHz

2. 热点模式 (mode=ap)

ini 复制代码
[wifi]
ssid=MyHotspot
mode=ap
band=bg     # 2.4GHz
channel=6

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

ini 复制代码
[wifi]
ssid=Direct-Link
mode=adhoc
channel=11

4. 网状网络 (mode=mesh)

ini 复制代码
[wifi]
ssid=CommunityMesh
mode=mesh
mesh-channel=1
mesh-psk=SharedSecret123

五、高级配置技巧

1. 锁定最佳接入点

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

2. 双频段优化配置

ini 复制代码
# 5GHz优先配置
[wifi]
ssid=HomeNetwork
band=a
channel=149

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

3. 隐藏网络连接

ini 复制代码
[wifi]
ssid=SecretNet
hidden=true

4. 企业级漫游优化

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

六、企业级场景配置

场景1:高密度场所WiFi

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

场景2:工业物联网网络

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

场景3:企业网状网络

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

场景4:临时活动热点

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

七、安全配置联动

1. WPA3 个人版

ini 复制代码
[wifi]
ssid=SecureNet

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

2. WPA2 企业级

ini 复制代码
[wifi]
ssid=Enterprise-Net

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

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

3. 开放式热点

ini 复制代码
[wifi]
ssid=Free-WiFi

[wifi-sec]
key-mgmt=none

八、故障排查与优化

1. 诊断命令

bash 复制代码
# 扫描无线网络
sudo iw dev wlan0 scan | egrep "SSID|freq|signal"

# 查看连接质量
iw dev wlan0 link

# 测试传输速率
iperf3 -c server_ip

2. 日志调试

bash 复制代码
# 启用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命名规范

ini 复制代码
# 部门+位置+频段
ssid=4567f1e4e5b7  # ENG-Floor1-5G

3. 安全配置原则

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

4. 多AP部署建议

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

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

bash 复制代码
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. 开放网络(无加密)

ini 复制代码
[wifi-security]
key-mgmt=none

2. WPA2 个人版 (PSK)

ini 复制代码
[wifi-security]
key-mgmt=wpa-psk
psk=MySecurePassword
proto=rsn
pairwise=ccmp
group=ccmp

3. WPA3 个人版 (SAE)

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

4. WPA2 企业版 (EAP)

ini 复制代码
[wifi-security]
key-mgmt=wpa-eap
proto=rsn
pairwise=ccmp
group=ccmp

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

5. WPA3 企业版

ini 复制代码
[wifi-security]
key-mgmt=wpa-eap
proto=wpa3
pairwise=ccmp
group=ccmp
ieee80211w=2

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

四、高级配置技巧

1. PSK安全存储

ini 复制代码
# 密钥环存储(推荐)
[wifi-security]
psk-flags=2

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

2. 混合加密支持

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

3. PMF保护配置

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

4. 企业级证书配置

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

五、企业级场景配置

场景1:金融机构WPA3

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

场景2:医院WPA2企业级

ini 复制代码
[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:教育机构混合网络

ini 复制代码
# 教师网络 (WPA3)
[wifi-security]
key-mgmt=sae
...

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

场景4:政府安全网络

ini 复制代码
[wifi-security]
key-mgmt=wpa-eap
proto=wpa3
ieee80211w=2

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

六、故障排查与安全审计

1. 连接测试命令

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

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

2. 日志分析

bash 复制代码
# 启用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. 密钥管理规范

ini 复制代码
# 禁用明文存储
psk-flags=1  # 或 2

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

3. 企业网络策略

ini 复制代码
[wifi-security]
key-mgmt=wpa-eap
proto=wpa3
ieee80211w=2

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

4. 多SSID安全分级

ini 复制代码
# 安全区
ssid=SecureZone
[wifi-security] key-mgmt=wpa-eap...

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

⚠️ 关键警告

  1. 避免使用WEP和WPA(TKIP)

  2. 企业网络必须配合[802-1x]

  3. 修改后需重启连接:

    bash 复制代码
    sudo nmcli con down "SSID" && sudo nmcli con up "SSID"

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





[bridge]

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

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


一、[bridge] 段的核心作用

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

二、完整参数列表与详解

1. STP生成树协议

参数 值类型 默认值 说明
stp 布尔 true 启用生成树协议(防止环路)
priority 整数(0-65535) 32768 网桥优先级(值小优先)
forward-delay 整数(秒) 15 端口状态转换延迟
hello-time 整数(秒) 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配置

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

2. 大型网络优化

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

3. 禁用STP场景

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

四、VLAN高级配置

1. 基础VLAN过滤

ini 复制代码
[bridge]
vlan-filtering=true
vlan-default-pvid=100
vlan-protocol=802.1Q

2. 多VLAN中继配置

ini 复制代码
# 网桥配置
[bridge]
vlan-filtering=true
vlan-default-pvid=1

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

3. VLAN统计监控

ini 复制代码
[bridge]
vlan-stats-enabled=true

五、多播优化配置

1. 基础多播优化

ini 复制代码
[bridge]
multicast-snooping=true
multicast-router=1    # 自动检测

2. 视频流网络优化

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

3. 禁用多播侦听

ini 复制代码
[bridge]
multicast-snooping=false  # 特定场景禁用

六、企业级场景配置

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

ini 复制代码
[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:虚拟化主机网桥

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

场景3:工业控制网络

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

场景4:服务提供商网络

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

七、性能调优指南

1. MAC表大小优化

ini 复制代码
[bridge]
hash-max=16384  # 大型网络
ageing-time=300

2. 低延迟网络配置

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

3. 资源受限环境

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

八、桥接端口配置

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

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

2. VLAN过滤规则

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

3. STP端口优化

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

九、验证与监控

1. 查看网桥状态

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

2. 性能监控命令

bash 复制代码
# 查看MAC表
bridge fdb show

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

# 查看STP拓扑
brctl showstp br0

3. 实时流量分析

bash 复制代码
# 捕获网桥流量
tcpdump -i br0 -nn -v

# 监控STP变化
bpduwatch -i br0

十、最佳实践建议

1. STP配置原则

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

2. VLAN设计规范

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

3. 安全加固配置

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

4. 高可用架构

ini 复制代码
# 主网桥
priority=4096

# 备份网桥
priority=8192

⚠️ 关键提示

  1. 修改后需重新激活:

    bash 复制代码
    sudo nmcli con down br0 && sudo nmcli con up br0
  2. 复杂变更前备份配置

  3. 生产环境先在测试网验证

  4. 使用bridge命令验证配置

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





[bridge-port]

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

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


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

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

二、完整参数列表与详解

1. STP端口控制

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

2. VLAN配置

参数 值类型 默认值 说明
vlan-pvid 整数(1-4094) 1 端口默认VLAN ID
vlan-id 整数列表 允许的VLAN ID(逗号分隔)
vlan-egress-untagged 整数列表 出口非标记VLAN
vlan-filtering 布尔 false 启用VLAN过滤
vlan-protocol 字符串 802.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. 典型配置结构

ini 复制代码
# 从接口配置文件示例
[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. 高优先级端口配置

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

2. 边缘端口保护

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

3. 拓扑变更防护

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

五、VLAN高级配置

1. 标准接入端口

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

2. 中继端口配置

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

3. QinQ配置(802.1ad)

ini 复制代码
[bridge-port]
vlan-protocol=802.1ad
vlan-pvid=100
vlan-id=100,200

六、流量控制场景

1. 安全隔离端口

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

2. 多播优化端口

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

3. 高性能端口

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

七、企业级场景配置

场景1:虚拟化主机端口

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

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

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

场景3:访客网络端口

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

场景4:工业控制端口

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

八、端口状态验证命令

1. 查看端口状态

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

2. 检查VLAN配置

bash 复制代码
bridge vlan show dev eth1
# 输出示例:
# port    vlan ids
# eth1     100 PVID Egress Untagged
#          200

3. 验证STP状态

bash 复制代码
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. 安全加固配置

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

3. 性能优化建议

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

4. VLAN设计规范

ini 复制代码
[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. 实时调试命令

bash 复制代码
# 监控STP状态变化
bridge monitor all

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

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

3. 配置重载流程

bash 复制代码
# 修改后重新加载
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] 段,可以实现从基础端口管理到高级网络策略的全方位控制,满足各种桥接网络场景的需求。





相关推荐
你好,赵志伟1 小时前
Socket 编程 TCP
linux·服务器·tcp/ip
Liang_GaRy2 小时前
心路历程-三个了解敲开linux的大门
linux·运维·服务器
一只栖枝6 小时前
华为 HCIE 大数据认证中 Linux 命令行的运用及价值
大数据·linux·运维·华为·华为认证·hcie·it
wuicer8 小时前
ubuntu 20.04 安装anaconda以及安装spyder
linux·运维·ubuntu
玩转以太网9 小时前
基于W55MH32Q-EVB 实现 HTTP 服务器配置 OLED 滚动显示信息
服务器·网络协议·http
cui__OaO10 小时前
Linux软件编程--线程
linux·开发语言·线程·互斥锁·死锁·信号量·嵌入式学习
小狗爱吃黄桃罐头10 小时前
正点原子【第四期】Linux之驱动开发篇学习笔记-1.1 Linux驱动开发与裸机开发的区别
linux·驱动开发·学习
小晶晶京京10 小时前
day34-LNMP详解
linux·运维·服务器
画个太阳作晴天10 小时前
A12预装app
linux·服务器·前端
清源妙木真菌11 小时前
应用层协议——HTTP
网络·网络协议·http