Ubuntu 16.04 以太网接口。重新连接电缆后无 IP 地址

Ubuntu 16.04 以太网接口。重新连接电缆后无 IP 地址

我有一个 Ubuntu (Ubuntu 16.04.3 LTS) 系统映像在不同的硬件上显示此行为。

enp2s0接口在启动时出现,但如果断开并重新连接网线,该接口将无法获取 IP 地址。两者都systemctl restart networking可以dhclient enp2s0手动使其恢复生机。

这似乎与接口文件(以某种方式)相关。如果/etc/network/interfaces为空或注释掉,则重新连接电缆后该接口将恢复。

一旦放入任何内容/etc/network/interfaces(静态或 dhcp),enp2s0就会表现出这种行为。

我正在测试的系统现在有两个网络接口。enp2s0enp1s0。这不会发生在enp1s0.在此处的另一个系统(从同一映像创建)上,只有一个enp2s0界面。它总是在那里发生。

我创建了一个测试脚本并将其放入/etc/network/if-up.d/以将日期和接口信息发送到日志文件。启动时我看到这个:

lo Mon Jan 22 15:31:01 AEDT 2018
enp2s0 Mon Jan 22 15:31:15 AEDT 2018
--all Mon Jan 22 15:31:16 AEDT 2018

如果重新连接电缆,则enp2s0永远不会执行。如果我重新连接电缆enp1s0,它就会工作,并且我会在日志中看到它。

我尝试过各种不同的组合/etc/network/interfaces。我什至完全重新创建了该文件,从普通机器验证了权限等。一旦我将信息放入其中,事情就会变成梨形。

我当前的接口文件:

auto lo
iface lo inet loopback

auto enp2s0
iface enp2s0 inet dhcp

iface enp1s0 inet manual

它也通过静态配置执行相同的操作。

我认为这里的一个重要线索是,if-up.d/test当电缆重新连接时,我的脚本没有运行,而仅针对该一个接口运行。

谁能告诉我什么决定了这个脚本是否针对特定接口运行?

提前致谢!

答案1

你有NetworkManager或者ifplugd安装了吗? (nmcli device show除了错误消息之外,是否输出任何内容?是否/etc/default/ifplugd存在,如果存在,它会说什么?)

您的 NIC 使用哪些驱动程序? (运行sudo ethtool -i enp2s0; sudo ethtool -i enp1s0并发布输出。如果产生错误,请运行sudo apt-get install ethtool并重试。)

如果 中没有某个接口的条目/etc/network/interfaces,则该接口通常受 控制NetworkManager,它可以检测链路状态并默认执行 DHCP。

但是,如果您在 中配置该接口/etc/network/interfaces,则NetworkManager不会触及它:那么该接口通常是受控制的仅有的通过ifupdown脚本,其基本形式根本不包括链接检测。像这样的包ifupdown-extra可以添加一些基本的链接检测(即跳过如果界面似乎没有链接,则启动界面)但一般来说,ifupdown在启动时配置一次,然后就完成了。

ifplugd可能是导致您行为不一致的原因:我认为它的某些版本曾经适用于某些但不是所有网络接口。一些现代 NIC 在未配置时会进入断电状态:在这种状态下,它们将无法检测到链接的存在。其他 NIC 至少具有始终通电的链路检测部分(或在加载驱动程序时通电)。第二组 NIC 适用于所有版本的 NIC ifplugd,但我认为第一组中的 NIC(曾经?) 存在问题。如果您enp2s0enp1s0在这方面属于不同的群体,则可能可以解释不一致的情况。

相关内容