为什么升级后eth0改名为enx78e7d1ea46da?

为什么升级后eth0改名为enx78e7d1ea46da?

我认为这与可预测的网络接口名称有关。该设备是运行 kali (kali-next) 的 Raspberry Pi B 型号

  1. 包含固件/BIOS 为板载设备提供的索引号的名称(例如:eno1)
  2. 包含固件/BIOS 的名称提供的 PCI Express 热插拔插槽索引号(例如:ens1)
  3. 包含硬件连接器的物理/地理位置的名称(例如:enp2s0)
  4. 包含接口 MAC 地址的名称(例如:enx78e7d1ea46da)
  5. 经典、不可预测的内核原生 ethX 命名(例如:eth0)

策略 4) 默认不使用,但如果用户选择则可用。

我可以在哪里禁用策略 4?我不知道为什么首先启用它。看来固件/BIOS 没有提供以太网接口的索引/位置信息。

$ udevadm test-builtin net_id /sys/class/net/enx78e7d1ea46da 2> /dev/null
ID_NET_NAME_MAC=enx78e7d1ea46da
ID_OUI_FROM_DATABASE=Raspberry Pi Foundation

答案1

该问题显然是由 debian 和 ubuntu udev 软件包 v233 之前版本中的 /lib/udev/rules.d/73-usb-net-by-mac.rules 中的一个错误引起的。

该问题已通过以下提交修复:

https://anonscm.debian.org/cgit/pkg-systemd/systemd.git/commit/debian/extra/rules/73-usb-net-by-mac.rules?id=9e202a329175b0ca4eaa09a75897aa2044eb7d7a

也可以看看:

https://askubuntu.com/questions/811295/73-usb-net-by-mac-rules-issue-with-net-ifnames/895879#895879

在撰写本文时,v233 已不是已为 Debian jessie 发布。

在本地解决问题的一种方法是按照与上述提交相同的方式编辑文件,然后重新启动。

答案2

rm /lib/systemd/network/90-mac-for-usb.link
ln -s /dev/null /lib/systemd/network/90-mac-for-usb.link

答案3

经过几个小时的挖掘和无果而终,我找到了一个针对运行 Ubuntu 16.04 预装服务器 armhf 的 Raspberry Pi 3 的修复程序。长话短说,运行$ apt-get update添加可预测的网络接口名称

编辑以下文件:

$ vim /lib/udev/rules/73-usb-net-by-mac.rules

您应该看到:

ACTION=="add", SUBSYSTEM=="net", SUBSYSTEMS=="usb", NAME=="", \
    ATTR{address}=="?[014589cd]:*", \
    TEST!="/etc/udev/rules.d/80-net-setup-link.rules", \
    IMPORT{builtin}="net_id", NAME="$env{ID_NET_NAME_MAC}"

将末尾的 NAME 更改如下:

ACTION=="add", SUBSYSTEM=="net", SUBSYSTEMS=="usb", NAME=="", \
    ATTR{address}=="?[014589cd]:*", \
    TEST!="/etc/udev/rules.d/80-net-setup-link.rules", \
    IMPORT{builtin}="net_id", NAME="eth0"

保存更改。重启。假设所有东西都指向 eth0,现在一切都应该正常工作了。

相关内容