在我们的云中,我们生成带有2c:c2:60实例前缀的 MAC 。当我们重用或复制一个实例时,新副本会获得另一个 MAC 地址。当新副本启动时,由于新的 MAC,NIC 获得名称 eth1。
我看到在 中/lib/udev/rules.d/75-persistent-net-generator.rules,有一些已知前缀的规则,例如52:54:00 (KVM)and VMWare (00:0c:29)。但是这个文件应该没有在第一行规定进行编辑。我们想使用我们自己注册的 MAC 前缀,而不是其他人的。
如何完全禁用网络规则生成?
小智 8
根据 JasminJ 的回答,我阅读了手册。嗯,我读了其中的一小部分。“规则文件”部分的第五句话指出:
如果需要,这可用于用本地文件覆盖系统提供的规则文件;
/etc与 中的规则文件同名的符号链接/lib,指向/dev/null,完全禁用规则文件。
我刚刚用虚拟机测试了这个,它确实按照描述的那样工作。与禁用此功能的常规/hacky 方法相比,我更喜欢这种方法。
这是命令
ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
Run Code Online (Sandbox Code Playgroud)
小智 7
cd /etc/udev/rules.d
rm -f 70-persistent-net.rules
rm -f 75-persistent-net-generator.rules
echo "# " > 75-persistent-net-generator.rules
Run Code Online (Sandbox Code Playgroud)
参见https://www.kernel.org/pub/linux/utils/kernel/hotplug/udev/udev.html
章节“规则文件”
小智 5
您可以/lib/udev/rules.d/*通过将它们复制到/etc/udev/rules.d然后修改它们来覆盖。
或者,您可以创建一个具有词汇更高名称的新文件,例如/etc/udev/rules.d/99-stop-persistent-net.rules使用以下“什么都不做”条目:
SUBSYSTEM=="net", DRIVERS=="?*", NAME="%k"
Run Code Online (Sandbox Code Playgroud)
这应该可以防止创建新规则,因为 udev 认为该接口已经列出。这也将在 udev 更新等中幸存下来。
抱歉,没时间测试……