我将运行 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 现在原生支持以下不同的网络接口命名方案:
- 包含固件/BIOS 为板载设备提供的索引号的名称(例如
eno1
:) - 包含固件/BIOS 的名称提供的 PCI Express 热插拔插槽索引号(例如
ens1
:) - 包含硬件连接器的物理/地理位置的名称(例如
enp2s0
:) - 包含接口 MAC 地址的名称(例如
enx78e7d1ea46da
:) - 经典的、不可预测的内核原生 ethX 命名(例如:
eth0
)- 已弃用
默认情况下,systemd 现在将按照以下策略命名接口:
- 如果固件中的信息适用且可用,则返回到
- 如果固件中的信息适用且可用,则返回到
- 如果适用,则返回到
- 默认情况下不使用,但如果用户选择则可用。
- 在所有其他情况下。
如何禁用此功能?
您基本上有以下选择:
- 创建您自己的手动命名方案,例如,将您的接口命名为 internet0 或 lan0。为此,请创建您自己的 udev 规则文件并设置设备的名称属性。确保将其排序在默认策略文件之前,例如,将其命名为
/etc/udev/rules.d/70-my-net-names.rules
- 更改默认策略文件,以选择不同的命名方案,例如默认根据 MAC 地址命名所有接口名称:
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、……等。
重启