我认为这与可预测的网络接口名称有关。该设备是运行 kali (kali-next) 的 Raspberry Pi B 型号
- 包含固件/BIOS 为板载设备提供的索引号的名称(例如:eno1)
- 包含固件/BIOS 的名称提供的 PCI Express 热插拔插槽索引号(例如:ens1)
- 包含硬件连接器的物理/地理位置的名称(例如:enp2s0)
- 包含接口 MAC 地址的名称(例如:enx78e7d1ea46da)
- 经典、不可预测的内核原生 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://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,现在一切都应该正常工作了。