如何将持久性网络名称(例如enx00b56d00d500)更改为别名(而不是替代名称)以替代Linux (eth0)提供的标准名称?
我希望能够同时使用这两个名称,但是systemd.link目前破坏了原始接口名,没有明显的方法告诉它不要使用。
我在运行Debian /Linux。我理解持久性命名的好处,并希望继续使用它们,但我也发现不能依赖命令行中的简单Linux名称,这让我感到沮丧。
例如,我的一些机器没有内置的以太网,我的工作台上有十几个不同的USB和以太网接口。我希望我插入的任何一个都可以作为eth0和任何持久性名称系统( systemd )提供给它。
我从Debian Wiki中了解到,我可以通过使用net.ifnames=0内核参数来禁用网络重命名,但该页面还指出,不可能创建这样的别名,这样就可以自由使用任何一个名称。我相信这可能是旧的信息,因为Linux从2019年就开始使用添加其他网络名称的功能了。
请注意,我不希望手动重命名接口。理想情况下,解决方案将阻止systemd删除原始名称,但如果有一些自动的方法将Linux名称添加回作为替代方案,那就好了。
发布于 2023-02-21 03:47:27
如果您正在运行Debian 11 (或更高版本),您应该已经有了您想要的行为。altname接口的自动配置由/usr/lib/systemd/network/99-default.link中的AlternativeNamesPolicy设置控制。使用默认配置:
[Match]
OriginalName=*
[Link]
NamePolicy=keep kernel database onboard slot path
AlternativeNamesPolicy=database onboard slot path
MACAddressPolicy=persistent如果我用net.ifnames=0引导Debian 11系统,我会得到:
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 52:54:00:f7:e2:94 brd ff:ff:ff:ff:ff:ff
altname eth0我可以将这个接口称为enp1s0或eth0:
root@debian:~# ip -br link show eth0
enp1s0 UP 52:54:00:f7:e2:94 <BROADCAST,MULTICAST,UP,LOWER_UP>
root@debian:~# ip -br link show enp1s0
enp1s0 UP 52:54:00:f7:e2:94 <BROADCAST,MULTICAST,UP,LOWER_UP>如果您运行的Debian版本比Debian 11更早,我认为您可能不走运:早期发行版上的iproute包不支持altname。
在回应你的评论时:
Debian有办法禁用它(以及将来可能创建的任何其他
*.link文件)吗?
您不能禁用“将来可能创建的任何其他*.link文件”,但是可以禁用或替换任何特定文件,在/etc/systemd/network中使用等效的命名文件(对于任何类型的systemd单元文件都是如此)。对于“禁用”情况,最简单的解决方案是将文件符号链接到/dev/null;从https://www.freedesktop.org/software/systemd/man/systemd.link.html:
/etc/中的文件具有最高优先级,/run/ lib中的文件优先于/usr/lib/中同名的文件。如果需要,可以用本地文件覆盖系统提供的链接文件。作为特例,指向/dev/null的空文件(文件大小为0)或符号链接将完全禁用配置文件(它是“掩码”)。
因此,您可以通过运行以下命令来屏蔽73-usb-net-by-mac.link文件:
ln -s /dev/null /etc/systemd/network/73-usb-net-by-mac.linkhttps://unix.stackexchange.com/questions/736251
复制相似问题