更新至 15.10 后网络接口名称发生变化 - udev 更改

更新至 15.10 后网络接口名称发生变化 - udev 更改

我将运行 Ubuntu 服务器 15.04 的虚拟机更新到刚刚发布的新稳定版本 15.10。

没有明显的问题,但重启后机器失去了网络连接。lspci显示正确的卡并lsmod证明驱动程序已加载。

关于编辑或删除的提示/etc/udev/rules.d/70-persistent-net.rules没有成功(仍然没有网络,没有新文件),著名的/lib/udev/write_net_rules甚至不存在。

我对 udev 和 systemd 不太了解,所以我花了一些时间才在 /sys/class/net 中找到网络接口名称已更改。它变成了ens32,是从 重命名的eth0。在我更改后,/etc/network/interfaces网络通信再次启用。

但是 - 为什么会发生这种情况?如果发生这种情况,接口文件不应该自动更新吗?

现在我删除了虚拟网卡并创建了另一个,eth0变成了eno16777728,这不是那么好。

是否应将此行为(至少是升级过程的行为)报告为错误?

此外,/etc/udev/rules.d/70-persistent-net.rules现在已经过时了吗?还有(尽管只是部分相关)那又如何呢/etc/udev/rules.d/70-persistent-cd.rules?)

编辑-附加问题(在接受的答案之后) 实际接口名称的依赖关系/etc/network/interfaces让我很困扰。我尝试在另一台虚拟机中重新安装 *ubuntu。令我惊讶的是,它/etc/network/interfaces仅包含对环回设备的引用。但是,对于我原来的虚拟机,此更改阻止了网络启动。那么我还需要更改什么呢?

编辑 嗯,从另一个测试中我发现一个新的 Ubuntu服务器 中的网络接口卡/etc/network/interfaces,而XUbuntu没有。可能是正在使用network-manager或其他原因。

答案1

在 Ubuntu 15.10 (Wily Werewolf) 中,从 systemd/udev 启动将自动为所有本地以太网、Wlan 和 Wwan 接口分配可预测、稳定的网络接口名称 (来源)。

udev 现在原生支持以下不同的网络接口命名方案:

  1. 包含固件/BIOS 为板载设备提供的索引号的名称(例如eno1:)
  2. 包含固件/BIOS 的名称提供的 PCI Express 热插拔插槽索引号(例如ens1:)
  3. 包含硬件连接器的物理/地理位置的名称(例如enp2s0:)
  4. 包含接口 MAC 地址的名称(例如enx78e7d1ea46da:)
  5. 经典的、不可预测的内核原生 ethX 命名(例如:eth0)- 已弃用

默认情况下,systemd 现在将按照以下策略命名接口:

  1. 如果固件中的信息适用且可用,则返回到
  2. 如果固件中的信息适用且可用,则返回到
  3. 如果适用,则返回到
  4. 默认情况下不使用,但如果用户选择则可用。
  5. 在所有其他情况下。

如何禁用此功能?

您基本上有以下选择:

  • 创建您自己的手动命名方案,例如,将您的接口命名为 internet0 或 lan0。为此,请创建您自己的 udev 规则文件并设置设备的名称属性。确保将其排序在默认策略文件之前,例如,将其命名为/etc/udev/rules.d/70-my-net-names.rules
  • 更改默认策略文件,以选择不同的命名方案,例如默认根据 MA​​C 地址命名所有接口名称:cp /lib/udev/rules.d/80-net-setup-link.rules /etc/udev/rules.d/80-net-setup-link.rules,然后在那里编辑文件并根据需要更改行。
  • net.ifnames=0在内核命令行上传递。

答案2

有一个更简单的方法ArchWiki 初学者指南

首先通过以下方式获取设备的 MAC 地址

$ ip link

输出显示如下

3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000     
          link/ether 20:68:9d:xx:xx:xx brd ff:ff:ff:ff:ff:ff

您的设备的 MAC 地址是

20:68:9d:xx:xx:xx

只需创建文件(只需在文本编辑器中使用 sudo 权限打开即可)

$ nano /etc/udev/rules.d/10-network.rules    

添加以下行

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="net1"

用您想要的名称替换名称,并将 aa:bb:cc:dd:ee:ff 替换为您设备的 MAC 地址。

现在只需重新启动计算机,设备名称就应该改变。

答案3

尝试这个: 编辑你的/etc/default/grub。将行从

GRUB_CMDLINE_LINUX=""

GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"

最后运行:

# update-grub

以 root 身份重新启动系统。

答案4

如果你有全新安装

apt-get remove biosdevname

然后

update-initramfs -u

检查您是否有 udev net ruels 文件。如果有,请将其删除。

rm /etc/udev/rules.d/70-persistent-net.rules

现在编辑 /etc/network/interfaces,将接口重命名为 eth0、eth1、……等。

重启

相关内容