禁用持久网络设备命名

禁用持久网络设备命名

我在基于 qemu 的虚拟机中运行 CentOS-6.5,具有单个以太网接口,令人惊讶的是,udev 将其从 eth0 重命名为 eth1,无论谁知道原因(!)

所以我想完全禁用此行为,即将“net.ifnames=0”传递到内核命令行。它似乎不起作用,行为没有改变。 “biosdevname=0”作为内核参数都没有帮助。

% qemu-system-x86_64 -cpu host -boot c -hda my_image.qcow2 -snapshot
-m 1024 --enable-kvm -name vm0 -nographic -display curses -pidfile
/var/run/vm0.pid -mem-path /dev/hugepages -mem-prealloc -monitor
unix:/var/run/vm0monitor,server,nowait -net none -netdev
type=tap,id=net0,script=no,downscript=no,ifname=vhost1,vhost=on
-device virtio-net-pci,netdev=net0,mac=00:00:00:00:00:01,csum=off,gso=off,guest_tso4=off,guest_tso6=off,guest_ecn=off

没有警告或错误,之后我可以登录虚拟机。然而,udev 似乎已将单个网络接口从 eth0 重命名为 eth1,这是在启动时自动创建的规则文件:

% cat /etc/udev/rules.d/70-persistent-net.rules
# PCI device 0x1af4:0x1000 (virtio-pci)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:00:00:00:00:0
1", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

为什么 virtio-pci 驱动程序会选择 eth1 作为系统中的单个接口?

但是,如果我在没有 mac=.. 选项的情况下运行 qemu,即不会发生这种情况。 MAC地址是qemu预定义的52:54:xxx,但我想通过命令行提供mac。

答案1

删除:

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

并重新启动。udev将找到您的网络适配器并为其命名eth0。然后,它将使用一致命名该适配器的规则重新创建上面的文件eth0

如果您在删除文件之前阅读该文件,您会发现一条命名该适配器的规则eth1。文件中可能有另一个命名特定适配器的规则eth0。如果您在过去某个时候更换了适配器,这种情况经常会发生。

要完全禁用此行为,请将上面的文件设为符号链接/dev/null

# ln -s /dev/null /etc/udev/rules.d/70-persistent-net.rules

相关内容