在 NetworkManager.conf 中,我可以指定
[keyfile] unmanaged-devices=interface-name:vboxnet0
我也可以使用 nmcli,如下所示
nmcli device set vboxnet0 managed no
这两种方法有什么区别吗?特别是,2. 每次重启后它都会起作用吗?
答案1
两者的作用相同。第二种方法是在使用第一种方法之前测试它是否有效。提交它,因此它不是永久性的(NetworkManager.conf
重启后会恢复到原来的状态)。
答案2
两者都会使设备不受管理,但并不完全相同。
NetworkManager 默认喜欢管理设备,因此有几种方法可以使其不受管理。这些只是其中两种。还有
- udev 规则 (
ENV{NM_UNMANAGED}="1"
) [device*].managed=0
在 NetworkManager.conf 中NM_CONTROLLED=no
在 ifcfg 文件中
nmcli device set $IFNAME managed $OPTION
基本上就是进行一次 D-Bus 调用。这意味着:- 非 root 用户也可以完成此操作(如果 policykit 允许)
- 它可以在运行时改变
[keyfile].unmanaged-devices
反而- 需要 root 权限
systemctl reload NetworkManager
仅在使用或重新加载配置后才生效killall -HUP NetworkManager
。
同样相关的是,由于有多种方法可以使设备不受管理,哪种方法可以胜出?
- 如 中所述
man NetworkManager.conf
,[keyfile].unmanaged-devices
(以及 ifcfg 的NM_CONTROLLED=no
)始终使设备处于未管理状态。您无法通过其他方式覆盖它。 - 另一方面,UDEV 规则
[device*].managed
可以通过 D-Bus 推翻。因此,如果您设置
[device-my-unmanaged]
match-device=eth0
managed=0
然后nmcli device set eth0 managed yes
仍然可以工作。
最后,如果您通过 D-Bus (nmcli) 更改它,那么它也会被记住在/run/NetworkManager/devices/
状态文件中。这意味着,它将在服务重启后继续存在,但不会在重新引导后继续存在。
是否有一种编程方式来编辑 NetworkManager.conf(我的意思是使用命令而不是以编程方式编辑文件)
嗯,有sed
:)
实际上,我发现将配置片段拖放到 中更容易/{usr/lib,etc,run}/NetworkManager/conf.d
,这样您就不需要编辑文件了。您可以拖放/删除您的片段,如果您在片段中留下注释,就可以清楚地知道谁创建了它。阅读man NetworkManager.conf
有关 conf.d 文件的合并顺序。