Linux网络管理工具NetworkManager笔记250726
简介
NetworkManager(简称 NM)是一个现代化的、动态的网络配置管理守护进程和服务,旨在简化 Linux 及其它类 Unix 操作系统上的网络连接管理。它尤其适合在需要频繁切换网络环境(如笔记本电脑在多个 Wi-Fi 网络、有线网络、移动宽带之间移动)的桌面和移动设备上使用,同时也广泛应用于服务器环境中提供灵活的网络配置能力。
核心目标和优势
- 简化网络管理: 为用户(尤其是非专业用户)提供直观的图形界面(GUI)和文本用户界面(TUI)来管理网络连接。
- 自动化连接: 自动检测和连接可用的有线、无线网络,支持自动漫游。
- 统一管理接口: 提供一个统一的接口(DBus API、命令行工具
nmcli
、GUI)来管理各种网络设备(以太网、Wi-Fi、蓝牙、Bond、Bridge、VLAN、VPN、移动宽带等)和连接类型。 - 处理复杂场景: 处理多网络接口、设备依赖、并发连接、连接优先级等复杂网络场景。
- 动态配置: 能够响应网络环境的变化(如网线插拔、Wi-Fi 信号强弱变化、网络切换)并动态调整配置。
- 与系统集成: 与系统启动、电源管理(挂起/恢复)、用户会话等紧密集成,确保网络状态的一致性。
- 支持现代技术: 积极支持 IPv6、Wi-Fi WPA3、802.1X 企业认证、OpenVPN、WireGuard、VXLAN 等现代网络技术和协议。
主要组件和架构
-
NetworkManager 守护进程 (
NetworkManager.service
):- 核心组件,以 root 权限运行的系统级服务。
- 负责:
- 检测硬件设备状态变化(插拔网线、发现 Wi-Fi AP)。
- 管理网络连接配置(读取、存储、应用)。
- 控制设备(启用/禁用接口、配置 IP 地址、路由、DNS)。
- 执行连接激活、停用操作。
- 通过 D-Bus 提供 API 供其他组件调用。
- 处理 DHCP 请求(通常委托给
dhclient
或systemd-networkd
的内置 DHCP 客户端)。 - 管理 DNS 配置(通常与
systemd-resolved
或dnsmasq
集成)。
-
管理接口:
- 图形用户界面 (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 构建的。
- 图形用户界面 (GUI):
-
插件和后台服务:
- 设备插件: 处理特定类型的硬件设备(如
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 配置。
- 设备插件: 处理特定类型的硬件设备(如
关键概念
- 设备: 物理或虚拟的网络接口(如
eth0
,wlan0
,vpn0
)。由 NM 检测和管理。 - 连接 (Connection Profile): 核心概念! 这是 NetworkManager 配置的实体。它定义了一组用于在特定设备(或设备类型)上建立网络连接的设置 (如 IP 地址获取方式 - DHCP/Static、SSID、密码、VPN 配置、路由、DNS、安全认证方式等)。
- 一个连接配置可以应用于多个兼容的设备(如一个 Wi-Fi 配置可以用于任何 Wi-Fi 网卡)。
- 一个设备上同一时间只能激活一个连接配置。
- 连接配置存储在磁盘上(如
/etc/NetworkManager/system-connections/
),具有唯一名称 (connection.id
)。
- 活动连接: 当一个连接配置被成功应用到一个设备上并建立了网络连接时,就形成了一个"活动连接"。
nmcli connection show --active
显示的就是活动连接。 - 自动连接: 连接配置可以设置为
connection.autoconnect=yes
。当满足条件时(如设备可用、网络存在),NM 会自动尝试激活该连接。 - 连接优先级: 当多个连接配置都适用于一个设备且都设置了自动连接时,优先级 (
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 可以与之共存,但通常建议只让其中一个管理接口(通过ifupdown
的managed=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 a
或nmcli 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 a
或ip addr show
: 查看接口的当前 IP 地址信息(验证是否生效)。
🖥️ 方法 2:使用 nmtui
文本用户界面 (适用于无 GUI 的服务器)
-
在终端运行:
bashsudo nmtui
-
使用键盘方向键选择
Edit a connection
,回车。 -
选择你要修改的网卡对应的连接配置(如
enp1s0
),或者按<Add>
创建新配置。 -
在编辑界面:
- 如果是新配置,先选择连接类型(如
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
,多个用逗号隔开)。
- 按
- 如果是新配置,先选择连接类型(如
-
按
<OK>
保存配置。 -
回到主菜单,选择
Activate a connection
。 -
找到你刚修改或创建的配置,按
<Deactivate>
(如果已激活),然后按<Activate>
重新激活使新配置生效。 -
选择
<Back>
然后<Quit>
退出nmtui
。
🖼️ 方法 3:使用图形界面 GUI (适用于桌面环境)
不同桌面环境(GNOME, KDE Plasma, XFCE 等)位置略有不同,但流程相似。以 GNOME 为例:
-
点击屏幕右上角的网络图标。
-
选择
Wired Settings
(有线)或Wi-Fi Settings
(无线),然后点击齿轮图标⚙️(或类似设置按钮)。 -
找到你要配置的有线连接或 Wi-Fi 连接,点击它。
-
在打开的设置窗口中,切换到
IPv4
或IPv6
标签页。 -
设置静态 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
),一行一个。
- 将
-
设置 DHCP:
- 将
IPv4 Method
改为Automatic (DHCP)
。
- 将
-
点击
Apply
或Save
按钮保存设置。 -
如果网络图标状态没有立即更新,可能需要点击一下开关暂时禁用再启用该连接,或者重启 NetworkManager 服务:
bashsudo systemctl restart NetworkManager
📂 方法 4:直接编辑配置文件 (高级,不推荐日常使用)
NetworkManager 的连接配置文件通常存储在 /etc/NetworkManager/system-connections/
目录下(使用 keyfile
插件时,这是现代发行版的默认方式)。文件名通常是连接名加上 .nmconnection
后缀。
⚠️ 重要提示:
- 编辑配置文件时,必须 先停用该连接:
sudo nmcli connection down "连接名"
- 编辑完成后,必须 让 NetworkManager 重新加载配置:
sudo nmcli connection reload
- 然后才能重新激活连接:
sudo nmcli connection up "连接名"
- 直接编辑文件出错可能导致连接无法激活!
nmtui
或nmcli
是更安全的选择。
示例静态 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"
🔍 验证设置是否生效
无论使用哪种方法配置后,都应该验证:
-
查看接口 IP 和路由:
baship addr show enp1s0 # 检查分配的 IP 地址和子网掩码 ip route show # 检查默认网关是否正确
-
测试网络连通性:
bashping 192.168.1.1 # 测试是否能 ping 通网关 ping 8.8.8.8 # 测试是否能 ping 通公网 IP ping www.google.com # 测试 DNS 解析和公网连通性
-
检查 DNS 解析:
bashcat /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。 - 物理网卡需处于未激活状态(由网桥接管控制)。
- 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
⚠️ 关键注意事项
-
物理网卡必须解除原有配置
-
若物理网卡已有 IP(如 DHCP),需先删除原有连接:
bashnmcli connection show | grep enp1s0 # 查找关联连接 nmcli connection delete "old-connection-name"
-
-
虚拟机/容器接入
-
KVM/QEMU:使用
-net bridge,br=br0
参数将虚拟机网卡接入网桥。 -
Docker:创建网桥网络:
bashdocker network create -d bridge --subnet 192.168.1.0/24 my-bridge-net
-
-
网络性能优化
bash# 关闭 GRO/GSO 提升小包吞吐量(万兆以上网络) sudo ethtool -K enp1s0 gro off gso off
-
故障排查命令
bashjournalctl -u NetworkManager -f # 查看实时日志 bridge fdb show # 显示网桥 MAC 表 brctl show br0 # 传统网桥工具(需安装 bridge-utils)
通过 NetworkManager 配置的网桥重启后自动生效,适合生产环境使用。对于临时测试,可用
ip link
命令创建(重启失效):
bashsudo 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)桥接到有线网络,实现无线客户端与有线设备的无缝通信(二层互通)。以下是完整的配置指南:
🔧 一、核心概念与前提条件
-
无线网桥作用:
- 将 WiFi 接口(如
wlan0
)加入网桥 - 使连接到该 WiFi 的设备与网桥成员处于同一局域网
- 常见用途:无线 AP 扩展、IoT 设备接入、虚拟化网络
- 将 WiFi 接口(如
-
必要条件:
bash# 检查网卡是否支持 AP 和网桥模式 iw list | grep -E "AP|bridge" -A 5 # 安装必要工具 sudo apt install wireless-tools iw bridge-utils
-
关键限制:
- 无线网卡必须支持 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
常见问题解决:
-
无法加入网桥:
bash# 检查内核日志 dmesg | grep -i wlan0 # 尝试卸载/重载驱动 sudo modprobe -r <driver_name> # 如 mt76x2u sudo modprobe <driver_name>
-
连接不稳定:
bash# 调整 MTU sudo nmcli connection modify br-wifi ethernet.mtu 1500 # 关闭省电模式 sudo iw dev wlan0 set power_save off
-
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
关键提示:
- 优先使用支持 AP 模式的无线网卡(如 Atheros AR9xxx, MediaTek MT76xx)
- 生产环境建议使用专业无线 AP(OpenWRT 等)
- 复杂场景考虑替代方案:
hostapd
+bridge-utils
或wpa_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-resolved 或 default |
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
⚠️ 关键注意事项
-
配置优先级:
- 命令行 (
nmcli
) > 连接配置文件 >NetworkManager.conf
- 使用
nmcli connection modify
会覆盖全局设置
- 命令行 (
-
DNS 冲突处理 :
若出现 DNS 解析问题,检查:
bash# 查看当前 DNS 解析器 systemd-resolve --status # systemd-resolved cat /etc/resolv.conf # 传统配置
-
接口管理冲突 :
若设备未被 NM 管理 (
nmcli dev
显示unmanaged
),检查:[keyfile]
中的unmanaged-devices
[ifupdown] managed=false
- 是否存在
/etc/network/interfaces
定义
-
调试模式 :
临时启用详细日志(不修改配置文件):
bashsudo nmcli general logging level DEBUG domains ALL sudo journalctl -fu NetworkManager # 查看实时日志
-
配置备份 :
修改前备份原始配置:
bashsudo 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])
📌 匹配优先级:当多个连接匹配同一设备时,按:
- 匹配规则精确度
autoconnect-priority
值- 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. 基础标识参数
参数 | 值类型 | 默认值 | 说明 |
---|---|---|---|
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 # 随主连接自动激活
六、最佳实践与注意事项
-
UUID管理:
bash# 生成新UUID uuidgen > 550e8400-e29b-41d4-a716-446655440000
避免手动复制UUID导致冲突
-
优先级策略:
- 有线连接:1000-900
- 主无线:800-700
- 备用无线:600-500
- VPN连接:400-300
-
安全建议:
ini# 限制管理权限 permissions=user:admin:; # 敏感连接设为只读 read-only=true
-
接口绑定选择:
- 服务器/固定设备:使用
interface-name
- 移动设备/通用配置:使用
[match]
段
- 服务器/固定设备:使用
-
连接重载:
bash# 修改后必须重载 sudo nmcli con reload
-
故障排查:
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
四、匹配优先级规则 当多个连接配置匹配同一设备时,按以下顺序确定优先级:
-
显式匹配 :
[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*
-
连接 UUID:当匹配条件相同时,按 UUID 字母顺序激活
-
手动覆盖 :
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"
六、最佳实践与注意事项
-
MAC 地址规范:
ini# 正确(小写无分隔符) mac-address=001122334455 # 正确(小写冒号分隔) mac-address=00:11:22:33:44:55 # 错误(大写) mac-address=00:11:22:33:44:55 # 不会匹配!
-
虚拟设备处理:
ini# 排除 Docker 和 libvirt 虚拟接口 [match] interface-name=*,!veth*,!virbr*,!docker*
-
热插拔设备:
ini# 匹配所有 USB 以太网适配器 [match] path=usb-*
-
WiFi 特殊匹配:
ini[connection] id=Home-WiFi type=wifi [match] ssid=MyHomeNetwork # 匹配特定 SSID [wifi-sec] key-mgmt=wpa-psk psk=Passw0rd123
-
配置重载:
bash# 修改后必须重载配置 sudo nmcli connection reload
⚠️ 关键提示 :当设备同时匹配多个连接时,NetworkManager 优先选择
autoconnect-priority
值最高 的连接。可通过以下命令设置优先级:
bashnmcli con mod "MyConnection" connection.autoconnect-priority 10
[ipv4]
段
*.nmconnection
配置文件中 [ipv4]
段深度详解
[ipv4]
段是 NetworkManager 连接配置文件的核心组成部分,负责定义 IPv4 网络的所有关键参数。以下是该段的全面解析:
一、[ipv4]
段的核心作用
- IP地址分配:定义静态IP或DHCP自动获取
- 路由控制:管理网关、静态路由和路由优先级
- DNS配置:设置域名解析服务器和搜索域
- 高级网络特性:控制地址冲突检测、连接超时等
- 网络计量:标记计费网络以优化流量使用
二、完整参数列表与详解
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-routes 和 never-default |
DNS不生效 | 设置 ignore-auto-dns=true 并指定DNS |
多IP失效 | 确认使用分号分隔地址 |
七、最佳实践建议
-
生产环境推荐配置:
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
-
安全强化配置:
ini[ipv4] dhcp-hostname-flags=1 # 不发送主机名 dns-options=edns0 # 启用DNSSEC
-
移动设备优化:
ini[ipv4] method=auto dhcp-timeout=15 may-fail=true metered=1 # 标记为计费网络
-
云环境特殊配置:
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
⚠️ 关键提示:修改后必须执行:
bashsudo 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]
段的核心作用
- IPv6地址分配:SLAAC、DHCPv6 或静态地址配置
- 路由管理:IPv6 网关和静态路由控制
- DNS配置:IPv6 DNS 服务器和搜索域设置
- 隐私保护:管理临时地址和隐私扩展
- 地址生成:控制 EUI-64 或随机地址生成
- 双栈协调:与 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 是否设为auto 或manual |
临时地址未生成 | 确保ip6-privacy=2 |
DNS解析失败 | 检查ignore-auto-dns 和dns 设置 |
网关不可达 | 确认gateway 格式含作用域%eth0 |
DHCPv6超时 | 减少dhcp-timeout 值 |
七、最佳实践建议
-
生产环境推荐配置:
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
-
隐私保护配置:
ini[ipv6] method=auto addr-gen-mode=1 # 稳定隐私地址 ip6-privacy=2 # 启用隐私扩展 token=:: # 默认令牌
-
双栈网络优化:
ini[ipv4] ... # IPv4配置 route-metric=100 [ipv6] ... # IPv6配置 route-metric=100 # 相同优先级
-
企业网络规范:
ini[ipv6] dhcp-duid=00030001aabbccddeeff # 固定DUID dhcp-hostname=server01.example.com never-default=false ignore-auto-routes=true
⚠️ 关键提示:修改后必须执行:
bashsudo nmcli con reload sudo nmcli con down "Connection-Name" && sudo nmcli con up "Connection-Name"
通过合理配置 [ipv6]
段,您可以构建从基础 IPv6 连接到复杂企业级 IPv6 网络的全套解决方案,满足现代网络对 IPv6 的各种需求。
[ethernet]`段
*.nmconnection
配置文件中 [ethernet]
段深度详解
[ethernet]
段是专门用于有线以太网连接的配置部分,提供了对物理网卡行为的精细控制。以下是该段的全面解析:
一、[ethernet]
段的核心作用
- 硬件控制:管理网卡速度和双工模式
- MAC地址操作:设置克隆地址或固定MAC
- 流量控制:配置巨型帧和流控制
- 唤醒功能:管理网络唤醒设置
- 连接验证:配置链路检测机制
二、完整参数列表与详解
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. 配置验证流程
- 检查物理连接状态
- 验证速度/双工匹配交换机
- 确认MTU端到端一致
- 测试网络唤醒功能
- 检查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 # 禁用唤醒
⚠️ 关键警告:
修改MTU需确保网络设备支持
固定速度/双工时需匹配交换机配置
MAC变更可能导致DHCP租约问题
配置后需重启连接:
bashsudo nmcli con down "Connection" && sudo nmcli con up "Connection"
通过合理配置 [ethernet]
段,可以实现从基础网络连接到企业级高性能网络的精细控制,满足各种有线网络场景的需求。
[wifi]
段
*.nmconnection
配置文件中 [wifi]
段深度详解
[wifi]
段是无线网络连接的核心配置部分,控制着 Wi-Fi 的 SSID、操作模式、频段选择等关键参数。以下是全面解析:
一、[wifi]
段的核心作用
- 网络标识:定义连接的 SSID(网络名称)
- 操作模式:配置设备角色(客户端、热点、点对点等)
- 频段控制:优化 2.4GHz 和 5GHz 性能
- AP锁定:强制连接到特定接入点
- 隐藏网络:连接不可见的 SSID
- 网状网络:配置 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
⚠️ 关键提示:修改后需重启连接:
bashsudo nmcli con down "WiFi-Connection" && sudo nmcli con up "WiFi-Connection"
通过合理配置 [wifi]
段,可以实现从家庭网络到企业级无线网络的全方位优化,满足各种无线场景需求。
[wifi-security]
段
*.nmconnection
配置文件中 [wifi-security]
段深度详解
[wifi-security]
段(也常写作 [wifi-sec]
)是无线网络安全配置的核心部分,负责管理认证、加密和安全协议。以下是该段的全面解析:
一、[wifi-security]
段的核心作用
- 认证管理:控制网络接入认证方式
- 加密配置:定义数据加密算法
- 密钥管理:设置预共享密钥或企业级凭证
- 安全协议:指定安全协议版本
- 高级保护:配置管理帧保护等增强功能
二、完整参数列表与详解
1. 认证与密钥管理
参数 | 值类型 | 默认值 | 说明 |
---|---|---|---|
key-mgmt |
字符串 | 必填 | 密钥管理协议: none (开放网络) wpa-psk (WPA2个人版) wpa-eap (WPA2企业版) sae (WPA3个人版) owe (WPA3增强开放) |
psk |
字符串 | 空 | WPA预共享密钥(ASCII或十六进制) 示例:psk=Secret123 或 psk=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...
⚠️ 关键警告:
避免使用WEP和WPA(TKIP)
企业网络必须配合
[802-1x]
段修改后需重启连接:
bashsudo nmcli con down "SSID" && sudo nmcli con up "SSID"
通过合理配置 [wifi-security]
段,可构建从基础家庭网络到高安全企业网络的无线安全体系。
[bridge]
段
*.nmconnection
配置文件中 [bridge]
段深度详解
[bridge]
段是 NetworkManager 中网桥连接配置的核心部分,用于定义二层网桥设备的特性和行为。以下是该段的全面解析:
一、[bridge]
段的核心作用
- 环路防护:通过STP协议防止网络环路
- 性能优化:控制MAC地址老化、转发延迟等参数
- VLAN支持:配置VLAN过滤和默认PVID
- 多播管理:优化组播流量处理
- 高级控制:设置网桥优先级和哈希大小
二、完整参数列表与详解
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.1Q 或802.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
⚠️ 关键提示:
修改后需重新激活:
bashsudo nmcli con down br0 && sudo nmcli con up br0
复杂变更前备份配置
生产环境先在测试网验证
使用
bridge
命令验证配置
通过合理配置 [bridge]
段,可以实现从简单家庭网络到大型数据中心网络的各种桥接场景,提供稳定高效的第二层网络服务。
[bridge-port]
段
*.nmconnection
配置文件中 [bridge-port]
段深度详解
[bridge-port]
段是网桥连接配置中的关键组成部分,专门用于定义网桥成员端口(从接口)的特性和行为。以下是该段的全面解析:
一、[bridge-port]
段的核心作用
- 端口优先级:控制STP端口角色选举
- 路径开销:管理STP路径成本计算
- VLAN配置:定义端口的VLAN成员关系和标记方式
- 流量控制:配置端口隔离和转发规则
- 高级特性:启用端口保护和学习控制
二、完整参数列表与详解
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.1Q 或802.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
⚠️ 关键警告:
- 修改活跃端口可能导致网络中断
- 复杂变更前备份配置
- 生产环境先在非业务时间测试
- 使用
bridge
命令实时验证配置
通过合理配置 [bridge-port]
段,可以实现从基础端口管理到高级网络策略的全方位控制,满足各种桥接网络场景的需求。