在将服务器从 Debian 9 升级到 10 之前,我尝试按照建议将接口名称从旧命名 ( eth0
, eth1
) 迁移到新命名,即enp1s0
, enp2s0
。我找到的所有指南都告诉我:
- 发现新旧名称(完成);
- 删除或注释
/etc/udev/rules.d/70-persistent-net.rules
, 据说这是在 Debian 9 中保持旧名称有效的唯一方法; - 编辑
/etc
文件,将新名称替换为旧名称,然后重新启动,祈祷。
问题是/etc/udev/rules.d/70-persistent-net.rules
不存在。零。所以服务器应该已经使用新名字。在 Debian 9 中,udev 应该自行应用它们。
我在某个地方看到一个建议,检查表单中是否有内核命令行参数net.ifnames=0
。但没有。
我不明白。任何人都可以阐明 udev NIC 命名过程吗?我应该检查什么 udev 规则?
答案1
深入研究 udev 的奥秘,我发现以下命令允许调试网络名称分配:(请参阅https://manpages.debian.org/testing/udev/systemd.link.5.en.html)
sudo SYSTEMD_LOG_LEVEL=debug udevadm test-builtin net_setup_link /sys/class/net/eth0
calling: test-builtin
...
Load module index
Found container virtualization none
timestamp of '/etc/systemd/network' changed
timestamp of '/lib/systemd/network' changed
Skipping overridden file: /lib/systemd/network/99-default.link.
Parsed configuration file /etc/systemd/network/99-default.link
Created link configuration context.
ID_NET_DRIVER=e1000e
Config file /etc/systemd/network/99-default.link applies to device eth1
ID_NET_LINK_FILE=/etc/systemd/network/99-default.link
Unload module index
Unloaded link configuration context.
其中/etc/systemd/network/99-default.link
仅包含注释,以便跳过中提供的策略,/lib/systemd/network/99-default.link
从而允许内核提供的名称保持有效。删除 /etc 中的文件将恢复新的命名。