第 1 章 实施一致的网络接口命名
udev
设备管理器在 Red Hat Enterprise Linux 中实施一致的设备命名。设备管理器支持不同的命名方案,默认情况下,根据固件、拓扑和位置信息分配固定的名称。
如果没有一致的设备命名,Linux 内核通过组合固定的前缀和索引来为网络接口分配名称。当内核初始化网络设备时,索引会增加。例如:eth0
代表启动时探测到的第一个以太网设备。如果您在系统中添加了另一个网络接口控制器,则内核设备名称的分配不再是固定的,因为重启后,设备可以以不同的方式初始化。在这种情况下,内核可以以不同的方式命名设备。
要解决这个问题,udev
分配一致的设备名称。它有以下优点:
- 设备名称在重启时是稳定的。
- 即使添加或删除硬件,设备名称也会保持不变。
- 因此,有问题的硬件可以被无缝地替换。
- 网络命名是无状态的,不需要显式的配置文件。
通常,红帽不支持禁用了一致设备命名的系统。有关例外情况,请参阅 设置 net.ifnames=0 安全吗 解决方案。
1.1. udev 设备管理器如何重命名网络接口
要为网络接口实施一致的命名方案,udev
设备管理器按列出的顺序处理以下规则文件:
可选:
/usr/lib/udev/rules.d/60-net.rules
只有在安装
initscripts-rename-device
软件包时,该文件才存在。定义了弃用的/usr/lib/udev/rename_device
助手工具的/usr/lib/udev/rules.d/60-net.rules
文件在/etc/sysconfig/network-scripts/ifcfg-*
文件中查找HWADDR
参数。如果变量中设置的值与接口的 MAC 地址匹配,则助手工具会将接口重命名为ifcfg
文件的DEVICE
参数中设置的名称。如果系统只使用 keyfile 格式的 NetworkManager 连接配置文件,则
udev
会跳过这一步。只在 Dell 系统上:
/usr/lib/udev/rules.d/71-biosdevname.rules
只有安装了
biosdevname
软件包,该文件才存在,如果没有在之前的步骤中重命名,定义了biosdevname
工具的规则文件会根据其命名策略重命名接口。注意仅在 Dell 系统上安装和使用
biosdevname
。/usr/lib/udev/rules.d/75-net-description.rules
此文件定义
udev
如何检查网络接口,并在udev
-internal 变量中设置属性。然后,这些变量被/usr/lib/udev/rules.d/80-net-setup-link.rules
文件在下一步中处理。其中一些属性可以是未定义。/usr/lib/udev/rules.d/80-net-setup-link.rules
此文件调用
udev
服务的net_setup_link
内置,并且udev
根据/usr/lib/systemd/network/99-default.link
文件中NamePolicy
参数中策略的顺序来重命名接口。详情请查看 网络接口命名策略。如果没有应用任何策略,则
udev
不会重命名接口。
其他资源