我正在将网络配置从 更改interfaces
为network-manager
(文件在 中/etc/NetworkManager/system-connection
),并在不同的机器上遇到type=802-3-ethernet
和type=ethernet
连接文件中,这些文件一定是使用 17.04 之前的未知 Ubuntu 版本上的小程序创建的nm
。两者似乎都可以工作。
我nmcli -f GENERAL.TYPE device show
按照以下步骤操作man NetworkManager.conf
,但只看到ethernet
支持的类型。这有区别吗?我不想猜测它不会因为尝试两者而起作用,因为我想做对,从而了解我在做什么。
我正在使用 Ubuntu 17.04。
答案1
type=802-3-ethernet 和 type=ethernet 相同,一个是别名。两者都有效。
它们绝对不是完全可以互换的。
$ nmcli --version
nmcli tool, version 1.14.6
以下是我观察到的一些奇怪现象。
如果我们使用完整setting.property
密钥,802-3-ethernet
则为有效值,但ethernet
不是。当提供值为时802-3-ethernet
,ethernet
会写入文件。
$ nmcli connection add \
connection.id "Test" \
connection.type "ethernet" \
connection.interface-name ""
Error: invalid connection type; ethernet.
$ nmcli connection add \
connection.id "Test" \
connection.type "802-3-ethernet" \
connection.interface-name ""
Connection 'Test' (…) successfully added.
$ nmcli connection show Test | grep connection.type
connection.type: 802-3-ethernet
$ grep type /etc/NetworkManager/system-connections/Test.nmconnection
type=ethernet
$ nmcli connection delete Test
如果我们使用属性别名作为键,和802-3-ethernet
都是ethernet
有效值。ethernet
在两种情况下都会写入文件。
$ nmcli connection add con-name "Test" type "802-3-ethernet" ifname ""
Connection 'Test' (…) successfully added.
$ grep type /etc/NetworkManager/system-connections/Test.nmconnection
type=ethernet
$ nmcli connection delete Test
$ nmcli connection add con-name "Test" type "ethernet" ifname ""
Connection 'Test' (…) successfully added.
$ grep type /etc/NetworkManager/system-connections/Test.nmconnection
type=ethernet
如果我们使用交互式功能,nmcli
则可以使用其中任意一种。Tab 补全功能对单词有效802-3-ethernet
,但对无效ethernet
。
$ nmcli connection edit "Test"
nmcli> set 802-3-ethernet.auto-negotiate yes
nmcli> print 802-3-ethernet.auto-negotiate
802-3-ethernet.auto-negotiate: yes
nmcli> set ethernet.auto-negotiate no
nmcli> print ethernet.auto-negotiate
802-3-ethernet.auto-negotiate: no
结论:NetworkManager 的反序列化不一致。如果手动编辑文件,我会坚持使用ethernet
。如果尝试使用 编写任何脚本,nmcli
请务必对其进行测试,无论您选择哪种方式。
答案2
type=802-3-ethernet 和 type=ethernet 相同,一个是别名。两者都有效。
nm-applet 不用于修改/创建连接。nm-connection-editor 可以。
没有任何客户端应用程序(如 nm-connection-editor)会直接写入这些文件。它们归 root 所有,并由 NetworkManager 写入。
使用 NM 客户端工具(nmcli、nmtui、nm-connection-editor)可能是一个好主意,而不是手动编辑文件。但两者都可行。
nmcli device
nmcli connection
是关于网络接口的。它与连接配置文件( 、/etc/NetworkManager/system-connections)不同。
man NetworkManager.conf
主要涉及 NetworkManager 的配置文件,同样与连接配置文件无关。请参阅man nm-settings
和man nm-settings-keyfile
。