#首次阅读文章时请跳过本代码块,该部分是作者的回看速查区域!!!
#查看当前设备上的路由表
ip route show
#default中的mertic数值越小,路径优先级越高
#临时将设备eth0禁用
sudo ip link set eth0 down
#查看当前的连接名
nmcli connection show
# 替换 "MyWiFi" 为你的实际的连接名
sudo nmcli connection modify "MyWiFi" ipv4.route-metric 50
# (可选)替换 "Wired connection 1" 为你的有线连接名
sudo nmcli connection modify "Wired connection 1" ipv4.route-metric 200
# 先重载 Wi-Fi
sudo nmcli connection up "MyWiFi"
# 再重载有线(如果需要)
sudo nmcli connection up "Wired connection 1"
# 上面两步可以直接重启 NetworkManager,效果一样
sudo systemctl restart NetworkManager
# 验证路由表
ip route show
# 小技巧:快速查看连接名和设备的对应关系
nmcli -t -f NAME,DEVICE,TYPE connection show
在使用 Raspberry Pi 时,很多用户会同时连接有线网络(ethernet)和无线网络(Wi-Fi)。默认情况下,系统会优先使用有线连接上网。但如果你希望 强制优先使用 Wi-Fi(例如:有线仅用于局域网访问,或路由器对有线 MAC 地址做了限制),就需要手动调整网络接口的路由优先级。
本文将结合真实问题场景,完整讲解:
- 为什么树莓派在有线被“拉黑”后不会自动切到 Wi-Fi?
- 如何识别当前使用的网络管理工具?
- 如何正确配置 Wi-Fi 为首选连接?
一、问题背景:有线被拉黑,为何不自动切 Wi-Fi?
用户在路由器上“拉黑”了树莓派有线接口(enxb827eb534f0f)的 MAC 地址,导致其无法访问互联网。但树莓派并未自动切换到已连接的 Wi-Fi(wlan0)上网。
原因分析:
- “拉黑” ≠ 接口断开
路由器只是丢弃该 MAC 的外网流量,但树莓派本地的eth0接口仍处于UP状态,IP 和默认路由依然存在。 - Linux 默认只用一条默认路由
路由表中存在两条默认路由时,系统会选择 metric 值更小 的那条。通常有线接口 metric=100,Wi-Fi metric=600,因此优先走有线。 - 无主动健康检测机制
普通 Linux 系统不会主动探测“是否能上外网”,即使有线出口被封,也不会触发故障转移(failover)。
二、确认你的网络管理方式
不同系统使用不同的网络管理工具,配置方法完全不同。
运行以下命令检查:
ps aux | grep -E 'dhcpcd|NetworkManager|systemd-networkd'
dpkg -l | grep dhcpcd5
用户可能的输出:
systemd+ 591 ... /lib/systemd/systemd-networkd
root 603 ... /usr/sbin/NetworkManager --no-daemon
# dhcpcd5 未安装
✅ 结论:该树莓派使用 NetworkManager + systemd-networkd,不是默认的 dhcpcd。
因此,不能通过 /etc/dhcpcd.conf 配置,必须使用 nmcli(NetworkManager 命令行工具)。
三、正确配置:通过 NetworkManager 设置 Wi-Fi 优先
步骤 1:查看当前连接名称
nmcli connection show
输出示例:
NAME UUID TYPE DEVICE
Wired connection 1 abcdef12-... ethernet enxb827eb534f0f
MyWiFi 12345678-... wifi wlan0
记下 Wi-Fi 和有线连接的 NAME(如 MyWiFi 和 Wired connection 1)。
💡 可用
nmcli -t -f NAME,DEVICE,TYPE connection show快速查看对应关系。
步骤 2:设置更低的 route-metric(数值越小优先级越高)
# 设置 Wi-Fi 优先(metric=50)
sudo nmcli connection modify "MyWiFi" ipv4.route-metric 50
# (可选)提高有线 metric,确保不抢优先级
sudo nmcli connection modify "Wired connection 1" ipv4.route-metric 200
⚠️ 注意:替换
"MyWiFi"和"Wired connection 1"为你的实际连接名,保留引号(因含空格)。
步骤 3:重启连接使配置生效
sudo nmcli connection up "MyWiFi"
sudo nmcli connection up "Wired connection 1"
# 或直接重启服务
sudo systemctl restart NetworkManager
步骤 4:验证路由表
ip route show
预期输出:
default via 192.168.43.1 dev wlan0 ... metric 50 ← 优先使用
default via 192.168.100.1 dev enxb827eb534f0f ... metric 200
现在所有互联网流量将走 Wi-Fi,而有线仍可用于局域网通信。
四、补充说明
✅ 配置持久性
NetworkManager 的修改会永久保存到 /etc/NetworkManager/system-connections/,重启后依然有效。
✅ 故障自动回退
当 Wi-Fi 断开时,系统会自动使用 metric=200 的有线连接作为备用,实现基本高可用。
❌ 不要混用网络管理器
避免同时启用 dhcpcd、NetworkManager、systemd-networkd,否则会导致冲突。建议只保留一个。
五、常见误区
| 误区 | 正确理解 |
|---|---|
| “插着网线就该优先” | 可通过 metric 控制优先级,与物理连接无关 |
| “拉黑 = 断网 = 自动切 Wi-Fi” | 系统不知道你被拉黑,需主动配置 failover |
“改 /etc/dhcpcd.conf 就行” | 仅适用于使用 dhcpcd 的系统,本例不适用 |
六、总结
- 识别网络管理工具是第一步(用
ps和dpkg)。 - 不要假设所有树莓派都用 dhcpcd —— 定制系统可能改用 NetworkManager。
- 通过
nmcli connection modify ... ipv4.route-metric是 NetworkManager 下的标准做法。 - metric 越小,优先级越高,合理设置可实现“Wi-Fi 主用、有线备用”的智能切换。
📌 最终目标:即使有线被限制,树莓派也能无缝通过 Wi-Fi 访问互联网。
如有其他网络配置需求(如仅局域网走有线、策略路由等),可在现有基础上进一步扩展。欢迎继续提问!