升级到16.04后无法启动升级网络接口

Modified on: Sun, 10 Jun 2018 00:38:23 +0800

我刚刚将虚拟14.04服务器机器升级到16.04。重新启动VM后,我看到以下错误:

[FAILED] Failed to start Raise network interfaces.
 See 'systemctl status networking.service' for details

登录后我可以运行上述命令并获得以下输出(图像因为我无法连接):

/etc/network/interfaces中的配置看起来很好 - 以手动配置的eth0为特色(此处不使用dhcp)

让我疑惑的是ifconfig -a列出

  • ens160
  • LO

我期待的地方

  • 的eth0
  • LO

尝试通过

启动eth0设备

sudo ifup -v eth0 

输出:

... Cannot find device "eth0" Failed to bring up eth0.

虚拟有线网络设备本身仍然像以前一样在VM中配置。

ip link也显示loens160 - 其中ens160在vmware中配置了mac地址单个配置的虚拟网络设备。

更新

如果我将/etc/network/interfaces中eth0的所有引用更改为ens160,我就能解决问题。

但是 - 由于以下几个原因,这对我来说不合适:

  1. 我想了解这个问题
  2. 我想坚持使用eth0而不是ens160
  3. 醇>

    所以请有人解释一下这个改变,这个改变并没有发生在我升级到16.04的同一台服务器上的其他几台14.04机器上。

作者:Zanna,dufte

最佳答案

的原因

问题是由systemd / udev的Predictable-Network-Interface-Name引起的。

可能的解决方案

根据此来源,您可以:

  • 禁用固定名称的分配,以便再次使用不可预测的内核名称。为此,只需屏蔽默认策略的udev规则文件:ln -s / dev / null /etc/udev/rules.d/80-net-setup-link.rules
  • 您可以创建自己的手动命名方案,例如命名接口“internet0”,“dmz0”或“lan0”。为此,在/ etc / systemd / network /中创建自己的.link文件,为您的一个,部分或全部接口选择显式名称或更好的命名方案。有关详细信息,请参阅systemd.link(5)。
  • 您在内核命令行上传递net.ifnames = 0

应用解决方案

我在10-rename-network.rules中创建了一个新文件/etc/udev/rules.d/,并添加了以下内容:

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="ff:ff:ff:ff:ff:ff", NAME="eth0"

,其中

  • eth0 =所需的网络接口名称,用于/etc/network/interfaces
  • ff:ff:ff:ff:ff:ff =网络设备的硬件mac地址

我建议在完成此操作后重新启动,以确保更改是粘性的。

作者:Community,dufte

相关问答

添加新评论