重命名网络接口

重命名网络接口

我想将我的无线适配器重命名为 int&ext。默认情况下,它们是随机命名的;

  ┌─╼[~] 
  └────╼ ifconfig
enp2s0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 98:40:bb:43:28:54  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 545  bytes 70113 (70.1 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 545  bytes 70113 (70.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlp1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.100  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 fd6f:40b0:565e::e84  prefixlen 128  scopeid 0x0<global>
        inet6 fe80::ec56:29b9:d982:cf64  prefixlen 64  scopeid 0x20<link>
        inet6 fd6f:40b0:565e:0:4ce5:90a:87e1:cae8  prefixlen 64  scopeid 0x0<global>
        inet6 fd6f:40b0:565e:0:5a4c:704e:d968:40d2  prefixlen 64  scopeid 0x0<global>
        ether a8:6b:ad:77:42:5f  txqueuelen 1000  (Ethernet)
        RX packets 14636  bytes 17950827 (17.9 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 11826  bytes 1675564 (1.6 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlx00c0ca59bd42: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 00:c0:ca:59:bd:42  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

我想将 wlp1s0 重命名为 wlan0,其他重命名为 wlan1,我在这个论坛中找到了两个线程,但遗憾的是它们不适用于我的情况,因为;

1:我将 pop_os 与 systemd-bootloader 一起使用。

2:其中一个建议使用udev规则,但在我的目录中/etc/udev/rules.d/没有规则,还有另一个目录有很多规则,由系统创建,但没有一个包含*persistent-net.rules。

3:有人建议net.ifnames=0使用 grub,但我正在使用带加密的 systemd-boot,因此从我所读到的内容来看,在不重新安装的情况下禁用加密几乎是不可能的。

我尝试过自己创建一个规则(在阅读了一些关于 udev 的文章并从 Mellanox 知识库帖子中复制了一些文章之后),但它们不起作用。这是我的规则;

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="a8:6b:ad:77:42:5f", KERNEL=="wlp1s0", NAME="wlan0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:c0:ca:59:bd:43", KERNEL=="wlx*", NAME="wlan1"

答案1

在 中创建两个文件/etc/systemd/network,命名为eg70-wlan0.link71-wlan1.link.它们的内容应该分别是:

[Match]
MACAddress=a8:6b:ad:77:42:5f

[Link]
Name=wlan0

[Match]
MACAddress=00:c0:ca:59:bd:42

[Link]
Name=wlan1

删除 udev 规则,更新 initramfs 文件(以防万一您的 NIC 在 initramfs 阶段加载),然后重新启动。您的接口现在应该根据您的规范重命名。请参阅man systemd.link了解更多详情。

顺便说一句,这些名字并不是随机的。

wlp1s0方法w愤怒PCI总线上的ess设备p阿斯:巴士1 s很多0...从那时起F未指定功能,它也是 0。因此lspci列表中的设备为 1:0.0。同样,enp2s0设备 2:0.0。

在 USB 设备上,基于路径的名称将以 USB 控制器的总线和插槽标识符开头,并继续基于 USB 总线和端口号的进一步标识符...每次插入设备时,这些标识符都可能会有所不同wlx。无线设备基于 MAC 地址的接口名称的前缀,即使插入到另一个端口,该前缀仍保留在设备中。

如果由于某种原因无法使用内核引导选项,可以使用包含以下内容的文件net.ifnames=0来实现相同的效果:/etc/systemd/network/99-default.link

[Match]

[Link]
NamePolicy=kernel

[Match]部分将匹配所有设备,并且设置NamePolicy=kernel使用经典的内核生成的接口名称,例如eth0wlan0

请注意,在 中/etc/systemd/network,按字母数字顺序匹配的第一个文件获胜,因此通过将与每个接口匹配的文件命名为99-default.link,您仍然可以选择通过编写特定于接口的链接文件来覆盖特定接口,只要您使用的优先级编号小于文件名中包含 99。

相关内容