我的系统只有一个接口:通过 wifi。NetworkManagerwlan0
是默认接口。但是,系统启用了几个“网络服务”。以下是与“网络”相关的已启用服务的列表(默认):
$ systemctl list-unit-files --state=enabled
ModemManager.service enabled enabled
networking.service enabled enabled
NetworkManager-dispatcher.service enabled enabled
NetworkManager-wait-online.service enabled enabled
NetworkManager.service enabled enabled
wpa_supplicant.service enabled enabled # underlined??
我想尝试一下networking.service
,所以我添加了所需的条目/etc/network/interfaces
以使其工作,并禁用了NetworkManager.service
。重新启动后,“网络”即可运行(这意味着我可以做我需要做的所有事情:通过连接到主机SSH
,进行apt
更新等)。
接下来,我想尝试重新启用NetworkManager.service
和禁用networking.service
。我注释掉了我对所做的所有添加/etc/network/interfaces
,然后禁用networking.service
并重新启动。重新启动后,我无法通过 SSH 重新连接到主机。
然后我将主机连接到控制台,重新启用networking.service
并重新启动。网络已恢复(这意味着我可以通过 SSH 连接到主机,执行apt
等)。
我进行了搜索,但未能找到与我的 Debian“书虫”系统有关的这个问题的答案:
如果我禁用
networking.service
,但保持NetworkManager.service
启用状态,为什么会“破坏”网络?
编辑...
向所有人道歉 - 我搞砸了!在
@grawity
下方评论中,我意识到我的问题是由NetworkManager
几个月前创建的配置引起的,但networking.service
自从那以后我一直在使用配置,所以它被我遗忘了。
所以 - 这里的所有答案都是正确的,而我的问题是这里唯一不正确的帖子。
再次向大家致歉。
它们确实是独立的工具。
networking.service
是 Debian 自己的ifupdown软件,它的功能与 NetworkManager 相同 - 但根据不同的配置文件。旧版本的 NetworkManager 曾经能够导入您的 /etc/network/interfaces,但我相信该功能在某个时候被删除了,主要是 NM 希望使用其自己完全独立的连接配置文件。因此,如果您已在 /etc/network/interfaces 中定义了以太网或 Wi-Fi 设置,那么这仅适用于 ifupdown,其他工具不会关心它。如果您想改用 NetworkManager,则需要通过
nmcli
或nmtui
或配置相同的以太网nm-connection-editor
。注意:NetworkManager 可能使用与 ifupdown 相同的 dhclient,但它也可能使用内部 DHCP 客户端。内部 DHCP 客户端默认会发送与 dhclient 不同类型的“客户端标识符”——/etc/machine-id 与 MAC 地址——因此默认会获得与 dhclient 不同的 IP 地址租约。
混淆可能来自于使用旧工具和针对 GUI(桌面环境)优化的工具。
如果你不需要 GUI,我建议使用
systemd-networkd
:https://www.debian.org/doc/manuals/debian-reference/ch05.en.html#_the_modern_network_configuration_without_gui
https://wiki.debian.org/SystemdNetworkd
https://wiki.debian.org/WiFi/HowToUse#Using_systemd_and_wpa_supplicant
您可以同时使用
networking.service
和NetworkManager
,例如networking.service
管理eth0
和NetworkManager
管理WiFi
(这是我的设置)。或者,您可以单独使用每项服务。
两者不能同时管理同一个接口,因为这会导致冲突,例如一个服务覆盖另一个服务的设置,和/或导致网络连接问题。
如果
networking.service
是disabled
,NetworkManager
则不会自动从文件中接管接口,/etc/network/interfaces
除非正确配置以管理这些接口。如果
networking.service
正在管理接口但被禁用,则可能导致网络连接中断,因为NetworkManager
除非配置设置为管理,否则不会自动接管管理。通过
nmcli device status
,您可以看到哪些接口由 NetworkManager 管理。例子:
如果某个接口的状态为
managed
,则表示NetworkManager
管理该接口。如果状态为
unmanaged
,则表示NetworkManager
不管理此接口,它由另一个服务管理(例如networking.service
)或未由任何服务主动管理。另外,看看文件
/etc/NetworkManager/NetworkManager.conf
在
NetworkManager
配置中,有一个managed参数,指定是否NetworkManager
要管理文件中配置的网络接口/etc/network/interfaces
。managed=true
表示NetworkManager
允许管理这些接口。managed=false
意味着NetworkManager
不允许管理这些接口,它们由另一个服务(如)管理networking.service
,这里的错误值/设置可能会导致冲突。NetworkManager.conf — NetworkManager 配置文件
网络管理器.conf | Ubuntu
如何设置要管理的网络设备?
/etc/NetworkManager 下文件的解释?
要解决冲突,请确保只有一个服务在管理给定接口。要么配置
NetworkManager
为管理所有接口(通过managed=true
从中设置和删除接口/etc/network/interfaces
),要么使用 networking.service
表示interfaces
在中定义/etc/network/interfaces
(在managed=false
中/etc/NetworkManager/NetworkManager.conf
)。