编辑
2026-09-15
linux
00

安装 NetworkManager 需要udev和D-Bus的实现。在笔记本电脑和台式机上,它通常使用polkit构建,以便本地用户进行配置。它还可以选择性地与systemd、upower等集成。

网络管理器USE 标志将为其他软件包启用对 NetworkManager 的支持。启用此 USE 标志将使这些软件包引入net-misc/networkmanager。自动地:

文件 /etc/portage/make.conf USE="${USE} networkmanager" 或者,可以使用app-portage/gentoolkit中的euse工具。可以通过命令行完成此操作:

euse -E networkmanager 核心 对于 WiFi 设备,请同时启用以下选项:

核心 [] 网络支持 ---> 网络选项 ---> <> 数据包套接字 [] 无线 ---> <> cfg80211 - 无线配置 API [*] cfg80211 无线扩展兼容性 请查看udev页面,了解此 NetworkManager 依赖项所需的内核配置。

USE标志 使用net-misc/networkmanager的标志 一套让网络协作变得简单直接的工具 +concheck 启用连接性检查支持(用于检测强制门户) +introspection 添加对基于 GObject 的内省的支持 +modemmanager 启用对使用 net-misc/modemmanager 的移动宽带设备的支持 +nss 使用 dev-libs/nss 进行加密 +ppp 启用对使用 net-dialup/ppp 的移动宽带和 PPPoE 连接的支持 +tools 构建诸如 nmcli、nmtui 和 nm_cloud_setup 之类的 CLI 工具 +wext 启用对已弃用的 Wext(无线扩展)API 的支持;某些旧驱动程序(例如 ipw2200、ndiswrapper)需要此功能。 +wifi 启用对 Wi-Fi 和 802.1x 安全功能的支持 audit 启用对 Linux 审计子系统的支持,使用 sys-process/audit bluetooth 启用蓝牙支持 clat 为仅支持 IPv6 网络的 IPv4 网络启用 CLAT (464XLAT) 支持 connection-sharing 支持连接共享(使用 net-dns/dnsmasq) debug 启用额外的调试代码路径,例如断言和额外输出。如果您想获取有意义的回溯信息,请参阅 https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Backtraces dhclient 使用 net-misc/dhcp 目录下的 dhclient 通过 DHCP 获取 IP 地址。 dhcpcd 使用 net-misc/dhcpcd 获取 IP 地址 elogind 使用 sys-auth/elogind 进行会话跟踪 gnutls 优先选择 net-libs/gnutls 作为 SSL/TLS 提供程序(使用 USE=-ssl 无效) gtk-doc 构建并安装基于 gtk-doc 的开发者文档,用于 dev-util/devhelp、IDE 和离线使用。 iptables 使用网络防火墙/iptables进行连接共享 iwd 默认情况下,使用 net-wireless/iwd 而不是 net-wireless/wpa_supplicant 来实现 Wi-Fi 支持。 libedit 使用 libedit 库(替代 readline) nbft 在 initrd 生成器中启用 NBFT 支持 nftables 使用 net-firewall/nftables 进行连接共享 ofono 使用 net-misc/ofono 获取电话支持。 ovs 启用 OpenVSwitch 支持 policykit 启用 PolicyKit (polkit) 身份验证支持 psl 使用 net-libs/libpsl 中的公共后缀列表 resolvconf 使用 net-dns/openresolv 管理 /etc/resolv.conf 中的 DNS 信息。通常,创建指向 /run/NetworkManager/resolv.conf 的符号链接更为简便。在运行 systemd-resolved 的系统上,禁用此标志并创建指向 /run/systemd/resolve/stub-resolv.conf 的符号链接。 selinux 仅供内部使用!支持安全增强型 Linux (SELinux),必须通过 SELinux 配置文件进行设置,否则将导致系统崩溃。 syslog 启用对 syslog 的支持 systemd 启用 systemd 特有的库和功能,例如套接字激活或会话跟踪 teamd 启用 Teamd 控制支持 test 启用运行测试所需的依赖项和/或准备工作(通常由 FEATURES=test 控制,但可以单独切换) vala 启用 dev-lang/vala 的绑定 数据由Gentoo 软件包数据库 提供 · 最后更新:2026-09-10 17:49有关 USE 标志的更多信息 注意: NetworkManager 自 1.20 版本起使用内部 DHCP 客户端实现,无需显式地使用外部 DHCP 客户端。dhclient和dhcpcdUSE 标志允许使用替代实现方式。 出现 更改使用标志后,运行以下命令更新系统以使更改生效:

emerge --ask --changed-use --deep @world 如果上述命令尚未自动安装 NetworkManager,则需要手动安装:

emerge --ask net-misc/networkmanager 可能需要添加dbus接口。使用标志来连接net-wireless/wpa_supplicant还:

文件 /etc/portage/package.use/networkmanager net-wireless/wpa_supplicant dbus 附加软件 VPN插件 可以使用以下软件包为基础 NetworkManager 代理添加 VPN 支持:

net-vpn/networkmanager-openconnect- 使用OpenConnect建立 VPN 连接 net-vpn/networkmanager-libreswan- 使用net-vpn/libreswan建立 VPN 连接 net-vpn/networkmanager-openvpn- 使用 OpenVPN 服务器建立 VPN 连接 net-vpn/networkmanager-pptp- 通过 VPN 连接到 PPTP 服务器 net-vpn/networkmanager-sstp- 通过 VPN 连接到 SSTP 服务器 net-vpn/networkmanager-vpnc- 使用net-vpn/vpnc 的VPN 连接 插件生成后,在向 NetworkManager 添加新连接时即可使用。

注意: 这些软件包中很多(如果不是全部)都依赖于gnome-base/gnome-keyring。并明确启用GTKUSE 标志。此外,它们通常与终端界面nmtui不兼容,必须通过nm-applet启动。 GTK 指南

系统托盘中的 nm-applet gnome-extra/nm-applet提供了一个可在基于 Xembed 的经典系统托盘中运行的系统托盘小程序。。

如果当前使用的桌面环境未包含系统托盘,则可以使用像x11-misc/stalonetray这样的独立系统托盘插件。可以安装。连接编辑器 GUI 与小程序位于同一软件包中。请注意,此软件包适用于各种桌面环境和带有系统托盘的面板,但GNOME已不再使用它, GNOME Shell和GNOME 控制中心已提供其自身的实现。

emerge --ask gnome-extra/nm-applet 另请注意,当前上游版本不支持 appindicator API,因此在某些系统托盘实现中无法工作,例如当前版本的KDE和Unity或Enlightenment的开发版本。

在 LXQt 中,当设置面板自动隐藏,并且鼠标悬停在 Wi-Fi 图标上时隐藏面板时,需要进行以下设置:

Emerge gnome-extra/nm-applet带有 USE 标志的应用程序指示器 出现lxqt-base/lxqt-panel带有 USE 标志的状态通知器 编辑 LXQt 中的自动启动:将nm-applet更改为nm-applet --indicator。 请参阅相关错误报告。

KDE 图形用户界面 where-plasma/plasma-nm- KDE Plasma 前端。 注意: 启用OpenConnect使用kde-plasma/plasma-nm的标志使用 openconnect。 配置 用户权限 在 Gentoo 系统中,NetworkManager 使用plugdev组来指定哪些非 root 用户可以管理系统网络连接(视为可插拔设备)。请务必将每个需要管理网络连接的用户添加到该组。

larry可以通过发出以下命令 添加用户:

gpasswd -a larry plugdev 服务 OpenRC 移除所有已启用的网络管理服务。

例如,要从控制网络接口中删除所有 netifrc 脚本(假设它们都处于默认运行级别),请发出以下命令:

for x in /etc/runlevels/default/net.* ; do rc-update del (basename(basename x) default ; rc-service --ifstarted (basename(basename x) stop; done 要移除dhcpcd:

rc-update del dhcpcd default 启动 NetworkManager:

rc-service NetworkManager start 要在启动时启动 NetworkManager,请将其添加到默认运行级别:

rc-update add NetworkManager default systemd 立即启用并启动 NetworkManager:

systemctl enable --now NetworkManager 对于版本低于 0.9.10 的 NetworkManager,或者对于在network.service之后而不是network-online.service之后运行的服务,可能需要 启用NetworkManager-wait-online.service :multi-user.target

systemctl enable NetworkManager-wait-online.service 注意: 启用此服务会延长启动时间,即使没有任何需要等待网络连接的服务存在。 编写自定义 systemd 服务时,可以等待 NetworkManager 配置启动时连接:

文件 /etc/systemd/system/*.service [单元] After = network-online.service Wants = network-online.service 使用 NetworkManager 0.9.10 及更高版本,即使不显式启用network-online.service也能正常工作。

设置主机名 如果 NetworkManager 是用dhclient 构建的,那么它就带有 dhclient 。启用 USE 标志后,可以使用以下命令设置主机名:

文件 /etc/dhcp/dhclient.conf 发送 主机名“customhostname” ; 检查连接性 NetworkManager 在连接到网络时可以尝试访问互联网上的网页。对于需要访问强制门户的用户,桌面管理器可以自动打开一个窗口要求输入凭据。此功能自 NetworkManager 1.8 起自动执行,但早期版本需要手动配置。要启用此功能,请编辑(或创建)/etc/NetworkManager/NetworkManager.conf文件,使其内容如下所示:

文件 /etc/NetworkManager/NetworkManager.conf [连接性] uri = http://nmcheck.gnome.org/check_network_status.txt nm-applet 和 X 会话启动 要在启动轻量级 X 会话或轻量级桌面环境时启动nm-applet,只需将以下行添加到相关用户的~/.xinitrc文件中:

文件 ~/.xinitrc nm-applet & 适用于gnome-base/gnome-keyring为了支持,请在上一行 之前添加以下几行。这将简化 GnuPG、ssh 和 WiFi 的密码管理:

文件 ~/.xinitrc

确保 dbus 已在运行,或者

如果[[ -z " DBUSSESSIONBUSADDRESS"]];theneval{ DBUS_SESSION_BUS_ADDRESS } " ]] ; then eval ( dbus-launch --sh-syntax --exit-with-session ) fi

使密钥环守护进程准备好与 nm-applet 通信

export $( gnome-keyring-daemon --start --components = pkcs11,secrets,ssh,gpg )
Dnsmasq NetworkManager 方式 NetworkManager 可以配置为使用Dnsmasq作为本地 DNS 服务器,并将 DNS 查询转发给服务提供商的 DNS 服务器。/etc/resolv.conf文件将被设置为指向 127.0.0.1,dnsmasq 将在该地址运行并处理查询。例如,如果应用程序出于安全原因 chroot 到其他网络,并在 chroot 之前复制了/etc/resolv.conf文件,那么当设备从一个 WiFi 网络切换到另一个 WiFi 网络时,应用程序将无法获知 DNS 服务器的更改,这将非常有用。

dnsmasq 的设置很简单:

文件 /etc/NetworkManager/NetworkManager.conf [主程序] 插件=密钥文件 dns = dnsmasq 可以通过/etc/NetworkManager/dnsmasq.d中的文件配置Dnsmasq ,更多信息请参阅Dnsmasq的 wiki 页面或手册页。

然后重启 NetworkManager。

DNSSEC Dnsmasq 可以选择在传递查询时验证 DNSSEC 数据(必须使用dnssec编译)。USE 标志)。这可以通过将以下几行添加到 NetworkManager dnsmasq 配置文件中来实现:

文件 /etc/NetworkManager/dnsmasq.d/dnssec

DNSSEC 设置

DNS安全 信任锚点= .,19036,8,2,49AAC11D7B6F6446702E54A1607371607A1A41855200FD2CE1CDDE3​​2F24E8FB5 信任锚点= .,20326,8,2,E06D44B80B8F1D39A95C0B0D7C65D08458E880409BBC683457104237C7F8EC8D dnssec-check-unsigned 您可以在此处找到可信锚点。更改后,如果验证失败,dnsmasq 将返回 SERVFAIL 且不返回任何 DNS 数据。如果验证成功,它将设置已验证数据 (AD) 标志。如果域不支持 DNSSEC,dnsmasq 的行为与之前相同。

如果 ISP 的 DNS 服务器不转发 DNSSEC 数据,则此操作将失败。取消注释最后一行,但这将违背 DNSSEC 的初衷。谷歌的服务器 8.8.8.8 提供 DNSSEC 数据。

服务通道 在某些系统网络配置中,Dnsmasq不应由 NetworkManager 控制。另一种方法是将它们一起使用:

文件 /etc/NetworkManager/NetworkManager.conf [主] 插件=密钥文件 DNS =无 并将 localhost 添加到/etc/resolv.conf文件中:

文件 /etc/resolv.conf

这应该是 resolv.conf 文件中的第一个名称服务器条目

! nameserver = 127.0.0.1 设置Dnsmasq ,详情 请参阅Dnsmasq 的手册页和 wiki 页面。

别忘了启动Dnsmasq。

在 systemd 系统上:

systemctl enable --now dnsmasq 在 OpenRC 系统上:

rc-update add dnsmasq default rc-service dnsmasq start 用法 插件 WireGuard 有关向 NetworkManager 添加 WireGuard 隧道的更多信息, 请参阅WireGuard文章的NetworkManager 部分。

网络 eduroam eduroam 是一个面向大学的国际 Wi-Fi 网络。请参阅有关eduroam的文章。

故障排除 修复 nm-applet 权限不足的问题 如果nm-applet创建新网络时出现“权限不足”错误,则可能是策略工具包的问题。请创建以下文件:

文件 /etc/polkit-1/rules.d/50-org.freedesktop.NetworkManager.rules polkit.addRule ( function ( action , subject ) { if ( action.id.indexOf ( " org.freedesktop.NetworkManager . " ) == 0 && subject.isInGroup ( " plugdev " ) ) { return polkit.Result.YES ; } } ) ;​​​​

这样,plugdev 组中的所有用户都可以控制网络管理器。

主机名问题 标准的“keyfile”插件在默认配置下不会转发主机名——为避免在网络连接时主机名被更改,请将以下部分添加到NetworkManager.conf 文件中,并相应地输入主机名:

文件 /etc/NetworkManager/NetworkManager.conf [主] 插件=密钥文件 主机名模式=无 或者,如果设置了 NetworkManager 认为有效的主机名(主要是除“localhost”或类似默认值之外的任何主机名),则会跳过从 DHCP 服务器获取主机名的过程。要设置新的主机名,请编辑文件 /etc/conf.d/hostname:

重要提示 :仅适用于 OpenRC 注意: 手册指示使用 /etc/hostname,但 NetworkManager 目前仅在 OpenRC 上检查 /etc/conf.d/hostname。错误编号 #965526 文件 /etc/conf.d/hostname

设置为此机器的主机名 hostname

= " my-hostname" 连接共享 当通过nmtui设置为共享时,以太网连接共享不起作用。

确保连接共享net-misc/networkmanager已启用 USE 标志然后重新安装该软件包:

emerge --ask --newuse --deep net-misc/networkmanager DHCPv6 唯一标识符 (DUID) DUID将由 NetworkManager 生成,并存储在以下文件的第一行 :

文件 /var/lib/NetworkManager/dhclient6-*.lease 默认 duid "\000\001\000\001\031\012D\036<\331+m3\004" ; 租赁6 {
... 注意 ISC dhclient6 将 DUID 值以二进制表示形式存储,如图所示。 NetworkManager 生成 DUID 依赖于 systemd 创建的以下文件。该文件对于任何系统都应该是唯一的。

文件 /etc/machine-id c69de11d6bb240558b98fb1d5e4292b3 对于非 systemd 用户,可以使用 lubko 在 #nm irc 频道 @libera.chat 上发布的以下命令:

uuidgen | sed 's/-//g' > /etc/machine-id NetworkManager 干扰了 X 身份验证 当 NetworkManager 连接到 WiFi 接入点时,它可能会更改系统主机名。如果发生这种情况,可能会干扰 X 身份验证,并阻止 X 应用程序启动。请使用xauth list 命令验证这一点。

要解决此问题,请在配置中 设置hostname-mode = none 。

无线网卡驱动程序和固件已正确加载,但 NetworkManager 中找不到该接口。 如果dmesg | grep wifi显示内核和网卡固件已正确加载,并且hwinfo | grep wifi也显示正常,但nmcli device show显示类似 GENERAL.DEVICE: wifi0 GENERAL.STATE: 20 (unavailable). 的行,这可能意味着内核和固件工作正常;问题出在用户空间。

一个可能的解决方案是在 NetworkManager 之前加载 iwd。现在建议用iwd替换 wpa_supplicant 。为此,请从初始化系统(OpenRC/systemd)中移除 wpa_supplicant,并添加 iwd,iwd 随后会加载 Wi-Fi 网卡。请注意,wpa_supplicant 中存储的无线网络密码将不会被保留,因此每次连接到每个 SSID 时都需要重新输入 Wi-Fi 认证密码。

请查看iwd 页面,了解有关设置 iNet 无线守护进程后端的更多信息。

添加新连接失败:802.1x 连接必须具有 IWD 配置文件 当使用 iwd 后端进行 wifi 连接时,NetworkManager 无法自动生成 802.1x 连接的配置文件。

在这种情况下,您可以手动编写配置文件。

文件 /var/lib/iwd/[SSID].8021x [安全] EAP-Method = PEAP EAP-Identity = your-username EAP-Password = your-password EAP-CACert = path/to/ca-cert.pem # (如果您不需要 CA 证书,请删除此行) EAP-Phase2-Method = GTC

此示例适用于 WPA/WPA2 企业版、PEAP-GTC 认证。对于其他连接方式,请参阅iwd#configuration-per-connection。

systemd-networkd NetworkManager 和systemd-networkd通常不兼容,不应同时运行。它们都试图管理相同的网络资源,这会导致潜在的冲突和不可预测的行为。

要禁用 systemd-networkd 服务,请运行

systemctl disable systemd-networkd.service systemctl disable systemd-networkd.socket systemctl disable systemd-networkd-wait-online.service