我目前正在使用以太网连接,它在/etc/network/interfaces中没有配置,并且(大概)使用路由器指定的 DHCP,以便分配 IP 地址。
但是,当我在/etc/network/interfaces中设置以下内容时:
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The wired / ethernet interface
iface enh0j7 inet dhcp
并重新启动,以太网接口不再分配 IP 地址,也不再可在 NetworkManager 中进行管理:
ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enh0j7: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 70:be:72:97:88:66 brd ff:ff:ff:ff:ff:ff
我没有更改以太网接口尚未配置的任何内容(例如通过路由器的 DHCP)。那么,为什么以太网接口在指定由DHCP配置时,无法为以太网接口提供IP地址呢?
但是,如果我将以下内容添加到/etc/network/interfaces:
auto enh0j7
该接口再次提供了一个 IP 地址(尽管在 NetworkManager 中仍然不可管理,但我明白为什么)。
auto
该设置对界面有什么影响,而iface inet dhcp
没有?
你有。您之前的配置是使用 NetworkManager 进行 DHCP;您的新配置是对 DHCP 使用 ifupdown (/etc/network/interfaces)。
尽管 NetworkManager 仍在运行,但它有意避免配置此接口,因为您告诉系统通过 ifupdown 来管理它。这是为了避免冲突,因为配置相同网络接口的两个程序可能会产生奇怪的结果(重复地址等)。
(请注意,以前的 Debian NM 软件包曾经有相反的行为:NM 会从 ifupdown 的“interfaces”文件中读取配置并自行应用它,根本不调用 ifupdown。正如 Debian Wiki 页面上所写,这在 Debian 6 中发生了变化,并且 NM 现在与 ifupdown 严格分开。)
/etc/network/interfaces 中的设置仅在
ifup
运行时应用。所以你看到的“影响”实际上是“自动”的目的:它告诉系统ifup <interface>
在启动时运行。如果没有该选项,ifupdown 不会自动配置接口,而是留给手动使用。当您既没有“auto”也没有“iface”时,ifup 也什么都不做——取而代之的是让 NetworkManager 充当您的 DHCP 客户端。