启动期间的“IP-Config:”是什么,为什么它会覆盖我的 /etc/network/interfaces?

启动期间的“IP-Config:”是什么,为什么它会覆盖我的 /etc/network/interfaces?

我有一个/etc/network/interfaces文件(在 16.04 盒子上),如下所示:

# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.88.50
netmask 255.255.255.0
gateway 192.168.88.1
dns-nameservers 192.168.88.1
dns-domain mynet.lan

您可能希望这会导致eth0出现指定的 IP。但这并没有发生。在启动过程中,我看到一行内容:

IP-Config: eth0 hardware address e0:db:55:0c:34:7e mtu 1500 DHCP

..然后接口就会使用本地 DHCP 服务器提供的非常有用的地址。

更令人不安的是,这个 IP-Config 行仅在启动时显示并且在我的任何日志文件中都看不到。

什么是 IP-Config,为什么它会破坏我的interfaces文件,在哪里可以配置它?

更多信息:

虚假地址(在我的情况下为 192.168.88.222)仅在启动期间创建,有时是在if*脚本到达它之前。ip addr显示错误地址(从 DHCP 收集)直接位于正确地址(标记为“次要”)上方。

tl;dr:在使用命令正常启动之前,某些东西正在为 DHCP 进行广播并将其分配给 NIC if*,从而导致同一个 NIC 上出现两个地址。

如果我关闭接口,则ip address显示虚假地址仍与 NIC 关联。如果我发出ip address flush eth0,则虚假地址将被删除,并且在后续接口重新启动时不会再次出现 - 但它系统重新启动后返回。

答案1

我终于找到了导致这种情况的原因。不是通过在某处找到指向它的隐藏指针,而是通过 grep 整个文件系统来查找 DHCP 设置:grep -ri 'dhcp' /。几乎肯定有更好的方法。但无论如何:

之前尝试在这台机器上玩 ISCSI 网络启动时,不知怎么就创建了一个/run/network/dynamic-interfaces文件,它似乎使用了与 相同的语法/etc/network/interfaces。果然,其中有一行告诉机器将 eth0 作为 DHCP 启动,并且由于这是在 的上下文中发生的,因此它会在有机会initramfs之前很久就将接口联机。iftools

此文件是 Ubuntu 服务器上标准软件包的一部分cloud-initramfs-dyn-netconf。您不想卸载它,因为它是ubuntu-server元软件包的一部分(如果您卸载它,将来的升级可能会失败)

清除文件并重新启动后,NICinterfaces将按正常预期由文件控制。

答案2

我认为正确的表述是静止的;不是手动的。另外,您是否确定所选的地址 192.168.88.50 超出了路由器中用于 DHCP 的地址范围,从而避免了冲突?也许 x.50 已被使用或保留。

确定路由器中的 DHCP 池后,建议您将该文件修改为:

# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.88.zz
netmask 255.255.255.0
gateway 192.168.88.1
dns-nameservers 192.168.88.1
dns-domain mynet.lan

...其中 zz 是 DHCP 池之外的地址。

重启界面:

sudo ifdown eth0 && sudo ifup -v eth0

详细参数 -v 会生成输出,告诉我们连接是否成功。

您收到所请求的地址了吗?

ifconfig

相关内容