无需重启解决UDEV无法正确命名USB以太网接口的问题
无需重启解决UDEV无法正确命名USB以太网接口的问题
我完全懂你的困扰——每次插USB以太网都得重启才能拿到enx{MAC}这种符合可预测命名规则的名字,结果拔插一次又变回ethX,对于不能随便重启的机器来说太闹心了。下面给你几个不用重启就能解决的方案,一步步来:
第一步:先搞清楚当前设备状态
先打开终端,用这条命令确认当前的接口名和对应的MAC地址,记好这两个信息,后面会用到:
ip link show
你会看到类似eth0的接口,旁边跟着它的MAC地址(比如aa:bb:cc:dd:ee:ff)。
方案1:手动触发udev重新识别设备
很多时候只是udev没及时加载新的命名规则,咱们手动刷新一下就行:
- 先重新加载udev的规则库:
sudo udevadm control --reload-rules - 然后强制网络子系统重新识别所有设备:
sudo udevadm trigger --subsystem-match=net - 再跑一遍
ip link show,看看接口名是不是已经变成enx{MAC}了?
如果这招没见效,试试下面的方案。
方案2:清理旧的残留命名规则
旧系统留下的70-persistent-net.rules文件经常会和systemd的可预测命名方案冲突,先检查有没有这个文件:
ls /etc/udev/rules.d/70-persistent-net.rules
如果输出里有这个文件,直接删掉它:
sudo rm /etc/udev/rules.d/70-persistent-net.rules
删完之后再重复方案1的两条命令,然后拔插USB以太网试试。
方案3:手动写udev规则强制指定命名
要是上面的方法都不管用,咱们直接给这个USB网卡绑定固定的enx{MAC}名字,一劳永逸:
- 创建一个新的udev规则文件,优先级设高一点(比如90开头,确保比默认规则先执行):
sudo nano /etc/udev/rules.d/90-usb-ethernet-custom.rules - 在文件里输入以下内容,把
aa:bb:cc:dd:ee:ff换成你刚才查到的设备MAC地址,enxaaebbccddeeff就是对应的enx{MAC}格式名字(把MAC地址的冒号去掉就行):SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="enxaaebbccddeeff" - 按
Ctrl+O保存,Ctrl+X退出编辑器,然后重新加载udev规则:sudo udevadm control --reload-rules - 现在拔插你的USB以太网设备,再用
ip link show检查,应该就能看到正确的命名了,以后再拔插也不会变回ethX,而且全程不用重启系统。
额外排查:确认系统启用了可预测命名
如果上面所有方法都无效,可能是你的系统本身禁用了可预测命名规则。检查/etc/default/grub文件里有没有net.ifnames=0这个参数——如果有的话,把它删掉,然后更新grub配置:
- 对于Debian/Ubuntu系列:
sudo update-grub - 对于RHEL/CentOS系列:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
不过这个操作需要后续重启才能生效,但先把配置改对,下次重启后就彻底解决问题了。
备注:内容来源于stack exchange,提问作者Nicolas P
相关产品推荐
相关产品推荐

