我目前正在使用以太网连接,该连接没有配置/etc/网络/接口,并且(大概)使用路由器指定的 DHCP 来分配 IP 地址。
但是,当我在/etc/网络/接口:
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/网络/接口:
auto enh0j7
该接口再次提供了一个 IP 地址(尽管在 NetworkManager 中仍然无法管理,但我明白原因)。
auto
该设置对界面有什么影响,而iface inet dhcp
没有呢?
答案1
我没有更改以太网接口尚未配置的任何内容(例如通过路由器的 DHCP)。
是。您之前的配置是使用 NetworkManager 进行 DHCP;您的新配置是使用 ifupdown (/etc/network/interfaces) 进行 DHCP。
尽管 NetworkManager 仍在运行,但它刻意回避配置此接口,因为您告诉系统通过 ifupdown 来管理它。这样做是为了避免冲突,因为两个程序配置同一个网络接口可能会产生奇怪的结果(重复的地址等)。
(请注意,以前的 Debian NM 包曾经具有相反的行为:NM 会从 ifupdown 的“interfaces”文件中读取配置并自行应用,而根本不调用 ifupdown。正如 Debian Wiki 页面上所写,这在 Debian 6 中发生了变化,NM 现在严格与 ifupdown 分开。)
那么,为什么指定通过 DHCP 配置时,以太网接口无法获得 IP 地址呢?[...] 该设置对没有设置
auto
的接口有什么影响?iface inet dhcp
ifup
/etc/network/interfaces 中的设置仅在运行时应用。因此,您看到的“影响”实际上是“auto”的目的:它告诉系统ifup <interface>
在启动时运行。如果没有该选项,ifupdown 不会自动配置接口,而是留给手动使用。
当你有两者都不“auto” 也不是“iface”,ifup 也没有做任何事情——相反,您让 NetworkManager 充当您的 DHCP 客户端。