/etc/networking/interfaces
使用“可预测的网络接口名称”时如何重置?
低于15.10的Ubuntu版本使用以下网络适配器名称:
eth0
eth1
eth2
更换网卡或将虚拟机移至新的虚拟机管理程序,将导致Linux增加接口号。删除/etc/udev/rules.d/70-peristent-net.rules
将使Linux重用eth0
。
Ubuntu 15.10及更高版本使用“ 可预测的网络接口名称 ”。网络适配器名称是从mac地址派生的。
ens3
ens32
ens192
迁移虚拟机时,由于/etc/network/interfaces
仍引用旧的不存在的网络适配器,因此网络无法启动。
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto ens32
iface ens32 inet dhcp
pre-up sleep 2
重置/ etc / network / interfaces文件的最佳方法是什么?
我需要在关闭虚拟机并迁移到新的虚拟机监控程序之前执行此操作,因为我正在使用打包程序根据Chef / Bento黄金映像创建自动化的黄金映像。
我发现删除/ etc / network / interfaces无效,因为迁移后该文件在下次启动时不会自动重新生成。
我尝试编辑grub文件以恢复为'eth0'的命名约定。虽然/ etc / network / interfaces确实引用了旧名称(eth0),但vm不会获得IP,并且任何重新引导都会导致vm使用新的命名约定。另外,我发现systemd将始终优先,除非我可以保证biosdevname=0
永久保留在grub config中。不确定如何永久应用
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0 bios.devname=0"
如果可能的话,我宁愿不使用cloud init也不使用任何启动后脚本,因为我宁愿保持黄金图像尽可能干净。
当然,这是云提供商(Azure,AWS,RackSpace,Openstack)在导入vm时已经解决的问题。我不可能是第一个使用可预测的网络接口名称尝试迁移虚拟机的人。
在关闭和迁移虚拟机之前,我尝试过运行这些命令
apt-get remove biosdevname -y;
ln -s /dev/null /etc/systemd/network/99-default.link;
我发现当我将VM迁移,即/etc/network/interfaces
并ip address
仍然会参考ens32