我知道一个进程会根据 /lib/udev/rules.d/75-persistent-net-generator.rules 中的规则生成持久网卡名称。我也知道如何用一个简单的方法完全禁用这个过程
echo '#' > /etc/udev/rules.d/75-persistent-net-generator.rules
但我读到我“也可以编写自己的规则文件来给接口命名——如果已经设置了名称,持久性规则生成器会忽略接口”(/etc/udev/rules.d/README 确认这个有可能)。
您能否提供有关如何编写此类规则的说明和/或示例?(我主要关心 Debian/Ubuntu,而对 CentOS 则不太关心)。就我而言,我想添加如下规则:
- MAC A 或 B 的卡应命名为 eth0
- MAC C 或 D 的卡应命名为 eth1
- 其他任何东西都遵循默认命名方案
作为我为什么要编写自定义规则的一个具体示例:我有两台相同的服务器,带有一个板载 LAN 和一个 PCI LAN。在硬件故障的情况下,我希望能够将磁盘从 HW#1 移动到 HW#2,重要的是 eth0 继续指向板载卡,eth1 指向 PCI 卡(没有人想弄乱中间的电缆硬件故障恐慌)。我目前的解决方法有效,但工作量很大[1] 所以我想知道编写自定义规则是否可以让我表达上述规则
[1] 在 HW#1 中安装操作系统并保留 /etc/udev/rules.d/70-persistent-net.rules 的副本。将磁盘移动到 HW#2 并保留同一文件的第二个副本。连接两个副本并手动编辑 NAME="ethX" 部分。将 /etc/udev/rules.d/70-persistent-net.rules 替换为我的版本。最后禁用自动创建一个新的 70-persistent-net.rules 使用
echo '#' > /etc/udev/rules.d/75-persistent-net-generator.rules
要回答您的具体问题,请将其添加到 persistent-net.rules:
不理会 persistent-net-generator.rules。udev 不会覆盖您手动添加的规则,但生成器规则会像往常一样导致为新卡添加新规则。
通常我在命名接口方面要做的就是交换 eth0 和 eth1。我让系统创建文件
/etc/udev/rules.d/70-persistent-net-rules
,然后通过切换名称来编辑它,重新启动,然后在网络配置文件中配置接口节。乏味,但完成它。文件顶部有一个提示: