Ubuntu 17.04:如何根据路径重命名 USB 网络接口?(不基于MAC)

The*_*veO 8 networking udev systemd 17.04

不,这不是为什么我的 Wi-Fi 适配器在 16.04 中不显示为 wlan0?,因为这解释了如何恢复eth0命名,而不是如何单独命名特定接口。

我不想根据 MA​​C 匹配进行分配。我所需要的只是根据 USB 路径分配名称。

当我插入 USB 网络适配器时,在 Ubuntu 17.04 上,它会根据其 MAC 分配一个网络接口名称,例如encx000000000000. 现在我想根据它的 ID_PATH= 将它重命名为更能说明问题的名称pci-000:02:03.0-usb-0:1:1.0。特别是,我不想根据 MA​​C 地址进行匹配。理由是更换接口后一切都会崩溃,但如果有人简单地更换网络接口硬件,使新硬件与旧硬件在同一位置,系统将在不需要 IT 和重新配置支持的情况下继续运行。

所以我创建了一个文件/etc/systemd/network/50-my-island.link

[Match]
Path=pci-000:02:03.0-usb-0:1:1.0
[Link]
Name=island0
Run Code Online (Sandbox Code Playgroud)

不幸的是,该名称从未分配过。使用udevadm info我可以看到有ID_NET_NAME=island0设置,但它不适用。尝试NamePolicy=NamePolicy=name在该[Link]部分下也无济于事。

我迷路了!如何将 .link 文件中的名称分配给我的 USB 网络适配器?在不诉诸某些 udev 规则的情况下,这完全可能吗?当 .link 文件在我的情况下似乎不起作用时,为什么还要有 .link 文件呢?我在哪里犯了错误?

The*_*veO 14

所以我终于弄清楚自己到底发生了什么。

唉,我看到重命名基于USB的网络接口不起作用的问题实际上是由/lib/udev/rules.d/73-usb-net-by-mac.rulesUbuntu/Debian(因此也是 Raspbian)上的 udev 规则引起的。罪魁祸首在这里:

ACTION=="add", SUBSYSTEM=="net", SUBSYSTEMS=="usb", NAME=="", \
  ATTR{address}=="?[014589cd]:*", \
  TEST!="/etc/udev/rules.d/80-net-setup-link.rules", \
  TEST!="/etc/systemd/network/99-default.link", \
    IMPORT{builtin}="net_id", NAME="$env{ID_NET_NAME_MAC}"
Run Code Online (Sandbox Code Playgroud)

请注意此特定规则如何检查是否存在;如果不是,则将设置为基于 MAC48 的名称,并且以后的默认安装规则将永远不会有机会分配. 现在很难过。再次。/etc/udev/rules.d/80-net-setup-link.rulesNAME/lib/udev/rules.d/80-net-setup-link.rulesNAME

为了能够将用户定义的名称分配给USB网络接口,我们需要有,因为这是在分配之前检查的规则集。/etc/udev/rules.d/80-net-setup-link.rules73-usb-net-by-mac.rulesNAME

这意味着需要简单地链接 from/etc/udev/rules.d/80-net-setup-link.rules/lib/udev/rules.d/80-net-setup-link.rules避免用户分配的网络接口名称不再被忽略。

sudo ln -s /lib/udev/rules.d/80-net-setup-link.rules /etc/udev/rules.d/80-net-setup-link.rules
Run Code Online (Sandbox Code Playgroud)

重启。完毕。

请注意,这种方式的副作用73-usb-net-by-mac.rules是设置,这会导致所有基于 USB 的网络接口都采用“旧”命名eth0等,除非在.link文件中明确命名。

我不知道为什么要按原样编写规则,因为为所有未明确命名的 USB 网络适配器使用基于 MAC 的命名会很好。再想一想……,使用基于 MAC48 的名称没有任何意义,除非您碰巧标记了所有 USB 网络加密狗并不断交换它们;但也许基于 MAC 的名称与扩展坞一起使用,在那里它实际上是有意义的......?