明确设置以太网的“iface inet dhcp”将禁用该接口

明确设置以太网的“iface inet dhcp”将禁用该接口

我目前正在使用以太网连接,该连接没有配置/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 客户端。

相关内容