无法更改附加网卡的接口名称

无法更改附加网卡的接口名称

我正在尝试为 Linux Mint 21.3 PC 上的网络接口分配永久名称。这台特定的 PC 经常添加和移除 PCIe 设备,因此“可预测”的命名方案enpXs0很不方便。

这台 PC 有两个以太网控制器,一个在主板上,一个在 PCIe 附加卡上。我能够lan0使用 udev 规则和 systemd 来定义主板以太网端口,但尝试使用相同方法定义 PCIe 附加卡lan1失败,而是将其分配为enpXs0

这是 udev 规则文件:

#/etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="<mac for motherboard lan0>", NAME="lan0"
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="<mac for PCIe lan1>", NAME="lan1"

这是 systemd 链接。此示例适用于lan0,但文件结构与 相同lan1

#/etc/systemd/network/10-persistent-lan0.link
[Match]
MACAddress=<mac for motherboard lan0>

[Link]
Name=lan0

我可以确定这两张卡之间唯一有意义的区别是它们的物理外形尺寸。这当然意味着它们也具有不同的 PCIe 地址。PCIe 附加卡 ( lan1) 最终将配置静态 IP 并设置为响应小型专用网络上的 RARP 请求,但所有这些配置都设置了不同的接口名称(不是分配的或目标)——认为 RARP 是在 上设置的enp2s0,并且卡最初被分配enp3s0,然后尝试重命名为lan1——所以我不明白为什么这会有所不同。

什么会导致附加卡的行为与集成卡不同?我查看了其他几个与 PC 上所有接口的命名问题有关的问题,但没有遇到任何专门处理这些问题的主题

答案1

根据@u1686_grawity,对日志进行一些挖掘后发现了来自 PCIe 以太网卡使用的 r8169 驱动程序的内核消息。

r8169 0000:02:00.0: can't read MAC address, setting random one

这是一个已知错误对于 kernel 中的此驱动程序5.15.x,我的系统正在运行它,并且似乎已在 kernel 中修复5.16。我不确定这是否完全解决了问题,因为随机 MAC 似乎通过重启保留(而不是关机和全新启动),但也许这种交互就是无法正确分配它的原因。

作为一种解决方法,我现在改为根据驱动程序设置接口,因为这是这台 PC 中唯一使用 r8169 驱动程序的设备。有效的 udev 规则是:

#/etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="<mac for motherboard lan0>", NAME="lan0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="r8169", NAME="lan1"

答案2

所引用的错误是在 5.16 中引入的,并在 5.16-rc 版本中修复。在这种情况下,供应商可能忘记使用有效的 MAC 地址对 NIC 进行编程。

相关内容