![重命名网络接口](https://linux22.com/image/175351/%E9%87%8D%E5%91%BD%E5%90%8D%E7%BD%91%E7%BB%9C%E6%8E%A5%E5%8F%A3.png)
我想将我的无线适配器重命名为 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.link
和71-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
使用经典的内核生成的接口名称,例如eth0
或wlan0
。
请注意,在 中/etc/systemd/network
,按字母数字顺序匹配的第一个文件获胜,因此通过将与每个接口匹配的文件命名为99-default.link
,您仍然可以选择通过编写特定于接口的链接文件来覆盖特定接口,只要您使用的优先级编号小于文件名中包含 99。