Ubuntu 24.04 LTS下实现内置与USB无线网卡自动切换的方案咨询
Ubuntu 24.04 LTS下实现内置与USB无线网卡自动切换的方案咨询
嗨,我来帮你搞定这个无线网卡自动切换的需求!结合你提供的网卡信息(wlan0是内置、wlx347de44fb859是USB),我们可以通过NetworkManager优先级配置+udev规则触发的组合来实现自动切换,具体步骤如下:
一、给USB网卡配置同WiFi并设置更高优先级
首先确保你的USB网卡能连接上和内置网卡一样的WiFi(比如你提到的WIFI228_2.4G),为了区分两个连接,建议给USB网卡的连接单独命名,比如WIFI228_2.4G (USB):
- 先查看当前所有WiFi连接:
nmcli connection show
- 复制内置网卡的WiFi连接配置,绑定到USB网卡:
nmcli connection clone "WIFI228_2.4G" "WIFI228_2.4G (USB)" nmcli connection modify "WIFI228_2.4G (USB)" connection.interface-name wlx347de44fb859
- 给USB连接设置更低的路由metric值(数值越小优先级越高,你的内置网卡当前metric是600,我们设成500):
nmcli connection modify "WIFI228_2.4G (USB)" ipv4.route-metric 500 nmcli connection modify "WIFI228_2.4G (USB)" ipv6.route-metric 500
二、用udev规则实现插拔时的强制切换
优先级设置能让系统优先选择USB网卡,但有时候插拔动作可能不会立即触发切换,udev规则可以帮我们强制触发连接切换:
- 创建udev规则文件:
sudo nano /etc/udev/rules.d/90-wifi-switch.rules
- 粘贴以下内容(注意替换连接名称为你实际的名称,MAC地址用你提供的USB网卡地址):
# 插入USB网卡时,激活USB连接并禁用内置连接 ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="34:7D:E4:4F:B8:59", RUN+="/usr/bin/nmcli connection up 'WIFI228_2.4G (USB)' && /usr/bin/nmcli connection down 'WIFI228_2.4G'" # 拔出USB网卡时,重新激活内置连接 ACTION=="remove", SUBSYSTEM=="net", ATTR{address}=="34:7D:E4:4F:B8:59", RUN+="/usr/bin/nmcli connection up 'WIFI228_2.4G'"
- 保存退出编辑器后,重新加载udev规则:
sudo udevadm control --reload-rules && sudo udevadm trigger
三、测试验证
现在你可以插拔USB网卡试试效果:
- 插入USB网卡:系统应该自动切换到USB网卡的连接,用
nmcli device status可以查看当前活跃的网卡 - 拔出USB网卡:系统会自动切回内置的wlan0连接
如果遇到问题,可以查看udev日志(journalctl -u systemd-udevd.service)或者NetworkManager日志(journalctl -u NetworkManager.service)来排查原因。
备注:内容来源于stack exchange,提问作者matveygal
相关产品推荐
相关产品推荐

