如何让NetworkManager自动忽略所有USB以太网适配器并保留唯一可识别的接口名
嘿,这个需求完全能搞定,不用搞什么复杂的“hack”,结合NetworkManager的配置和udev规则就能完美实现,我给你拆解成两步说清楚:
第一步:让NetworkManager自动忽略所有USB以太网适配器
你之前是手动指定单个接口名,但其实NetworkManager的unmanaged-devices支持属性匹配规则,不用硬写具体的接口名。你可以修改NetworkManager的配置文件(比如/etc/NetworkManager/conf.d/99-unmanaged-usb-eth.conf,没有的话就新建一个),写入以下内容:
[keyfile] unmanaged-devices=type:ethernet,property:ID_BUS=usb
这个规则的意思是:所有属于以太网类型、且总线为USB的设备,都会被NetworkManager标记为“不管理”——不管你插多少个新的USB以太网适配器,都会自动生效,再也不用每次改配置了。
第二步:给USB以太网接口加上统一前缀,保留唯一识别名
你担心重命名后没法区分设备?没问题,udev规则支持保留原始接口名的同时添加前缀。你可以新建一个udev规则文件/etc/udev/rules.d/70-usb-ethernet-naming.rules,写入:
SUBSYSTEM=="net", ENV{ID_BUS}=="usb", NAME="usb_%k"
这里的%k是udev的内置变量,代表设备的原始内核名称(比如你提到的enx6c4bca1ac914),加上usb_前缀后,最终的接口名就会变成usb_enx6c4bca1ac914——既统一标识了这是USB以太网,又保留了原始的唯一MAC后缀,你的网络脚本完全可以通过这个名字识别到特定设备。
最后验证生效
写完配置后,重启一下相关服务让设置生效:
sudo udevadm control --reload-rules sudo systemctl restart NetworkManager
之后重新插拔你的USB以太网适配器,就能看到接口名变成了带前缀的格式,而且NetworkManager也不会去管理它了。
备注:内容来源于stack exchange,提问作者Student4K

