The*_*veO 8 networking udev systemd 17.04
不,这不是为什么我的 Wi-Fi 适配器在 16.04 中不显示为 wlan0?,因为这解释了如何恢复eth0命名,而不是如何单独命名特定接口。
我不想根据 MAC 匹配进行分配。我所需要的只是根据 USB 路径分配名称。
当我插入 USB 网络适配器时,在 Ubuntu 17.04 上,它会根据其 MAC 分配一个网络接口名称,例如encx000000000000. 现在我想根据它的 ID_PATH= 将它重命名为更能说明问题的名称pci-000:02:03.0-usb-0:1:1.0。特别是,我不想根据 MAC 地址进行匹配。理由是更换接口后一切都会崩溃,但如果有人简单地更换网络接口硬件,使新硬件与旧硬件在同一位置,系统将在不需要 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 的名称与扩展坞一起使用,在那里它实际上是有意义的......?
| 归档时间: |
|
| 查看次数: |
8684 次 |
| 最近记录: |