如何在Ubuntu中永久禁用USB以太网接口(重启后生效)
如何在Ubuntu中永久禁用USB以太网接口(重启后生效)
嘿,我懂你的困扰——不想让Ubuntu使用显示器自带的USB-C以太网接口,而且得保证重启后依然禁用,之前试了Netplan的activation-mode: off没效果对吧?别着急,咱们试试这几个靠谱的方法,总有一个能解决问题:
方法一:修正Netplan配置文件
有些Ubuntu版本里,activation-mode: off可能不生效,换用enabled: false的写法更稳妥,步骤如下:
- 先确定你的USB以太网接口名称,执行命令:
输出里类似ip link showenxabcdef123456的就是USB接口(通常以enx开头,带一串字母数字)。 - 打开Netplan配置文件(一般在
/etc/netplan/目录下,文件名可能是00-installer-config.yaml或者类似):sudo nano /etc/netplan/00-installer-config.yaml - 修改配置,在对应接口下添加禁用规则,示例如下:
network: version: 2 ethernets: enxabcdef123456: # 替换成你的接口名 match: name: enxabcdef123456 dhcp4: no dhcp6: no optional: true enabled: false - 应用配置并生成规则:
sudo netplan generate sudo netplan apply - 重启系统验证接口是否保持禁用状态。
方法二:用systemd-networkd彻底禁用
如果你的Ubuntu用的是systemd-networkd管理网络,这个方法更直接:
- 创建一个网络规则文件:
sudo nano /etc/systemd/network/10-disable-usb-eth.network - 写入以下内容(替换接口名):
[Match] Name=enxabcdef123456 # 替换成你的接口名 [Network] Disable=true - 重启systemd-networkd服务:
sudo systemctl restart systemd-networkd - 重启系统后检查接口状态。
方法三:用udev规则底层拦截
如果上面的方法都没效果,udev规则能从设备加载层面阻止接口启用,属于更彻底的方案:
- 先获取USB以太网设备的厂商ID和产品ID(比接口名更稳定,不会随系统变化):
输出会类似udevadm info -a -p $(udevadm info -q path -n enxabcdef123456) | grep -E "idVendor|idProduct"ATTRS{idVendor}=="1234"、ATTRS{idProduct}=="5678"。 - 创建udev规则文件:
sudo nano /etc/udev/rules.d/99-disable-usb-eth.rules - 写入规则(替换成你查到的ID):
如果你不想查ID,也可以直接用接口名,把上面的SUBSYSTEM=="net", ACTION=="add", ATTRS{idVendor}=="1234", ATTRS{idProduct}=="5678", RUN+="/sbin/ip link set $name down", RUN+="/sbin/ip link set $name nomaster"ATTRS{idVendor}和ATTRS{idProduct}换成ATTR{name}=="enxabcdef123456"。 - 重新加载udev规则:
sudo udevadm control --reload-rules && sudo udevadm trigger - 重启系统验证效果。
额外注意事项
- 如果你用的是NetworkManager图形化管理网络,也可以先在设置里找到该接口,选择“禁用”,然后执行
nmcli device set enxabcdef123456 managed no,防止NetworkManager自动启用它。 - 修改任何配置文件前,建议先备份原文件,比如
sudo cp /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.bak。
备注:内容来源于stack exchange,提问作者Tamer Ziady




