我刚刚在单独的硬盘上安装了 Ubuntu 16.04,并注意到两个奇怪之处:
而在 14.04 上(在我的主硬盘上),我的 USB Wi-Fi 加密狗显示为
wlan0
,而在 16.04 上它显示为wlx112233445566
。(真实 MAC 已删除)另外,使用
hw ether
参数更改 MAC 地址在 16.04 上不起作用。
以下是相关输出lsusb
:
Bus 008 Device 002: ID 148f:5370 Ralink Technology, Corp. RT5370 Wireless Adapter
有人能解释一下这里发生了什么吗?
答案1
最近,Ubuntu(嗯,systemd
)现在使用了一种叫做可预测的网络接口名称enx<MAC_ADDR>
本质上,这意味着非永久网络接口(即 USB 接口)现在具有或(或类似)形式的名称wlx<MAC_ACCR>
,以便任何依赖于该接口的脚本和系统具体的设备将 100% 确信其定位的是正确的设备。
其他命名约定允许通过物理位置或任何其他形式的永久标识值来引用设备。具体来说,可以使用以下任何值来生成接口名称(选择最佳值):
- 包含固件/BIOS 为板载设备提供的索引号的名称(例如
eno1
:)- 包含固件/BIOS 的名称提供的 PCI Express 热插拔插槽索引号(例如
ens1
:)- 包含硬件连接器的物理/地理位置的名称(例如
enp2s0
:)- 包含接口 MAC 地址的名称(例如
enx78e7d1ea46da
:)- 经典的、不可预测的内核原生 ethX 命名(例如
eth0
:)
过去,接口名称的分配方式并不“合理”——有些系统使用伪永久名称(wlan1
针对具有此 MAC 的设备),而其他系统则按照先到先得的原则分配它们。如果您仍然喜欢这种方案(或者只是讨厌永久名称,因为它systemd
正在这样做),可以通过将其添加net.ifnames=0
到启动参数中来逆转它。
您仍然可以使用连接编辑器伪造设备的 MAC 地址,但这种方法hw ether
将不再有效,因为 MAC 地址是设备标识符/名称的一部分。
答案2
可以通过在启动参数中添加 net.ifnames=0 来逆转它。
这还不足以改变 USB 接口的名称……你还需要尝试80-net-setup-link.rules
1)将当前规则复制到你的/etc/udev/rules.d/
目录
sudo cp /lib/udev/rules.d/80-net-setup-link.rules /etc/udev/rules.d/
2)创建一个符号链接将其发送至/dev/null
以禁用它:
sudo ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules
欲了解更多信息,请查看此主题:如何恢复 USB wifi 接口名称(从 wlxXXXXXXXXXXXX 到 wlanX)?
答案3
我认为这只是设计变更,数字现在不同了。这不是错误。例如,我的 LAN 在 14.04 中是 eth0(在其他一些发行版中仍然是),但在 16.04 中是 enp0s25。
这种命名约定对性能没有影响,我不会担心它。
编辑:Kaz Wolfe 给出了更详尽的解释。