树莓派双网卡(有线 + Wi-Fi)优先级配置指南:让 Wi-Fi 成为主连接
本文最后更新于 7 天前,其中的信息可能已经有所发展或是发生改变。
#首次阅读文章时请跳过本代码块,该部分是作者的回看速查区域!!!

#查看当前设备上的路由表
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)上网。

原因分析:

  1. “拉黑” ≠ 接口断开
    路由器只是丢弃该 MAC 的外网流量,但树莓派本地的 eth0 接口仍处于 UP 状态,IP 和默认路由依然存在。
  2. Linux 默认只用一条默认路由
    路由表中存在两条默认路由时,系统会选择 metric 值更小 的那条。通常有线接口 metric=100,Wi-Fi metric=600,因此优先走有线。
  3. 无主动健康检测机制
    普通 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(如 MyWiFiWired 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 的有线连接作为备用,实现基本高可用。

❌ 不要混用网络管理器

避免同时启用 dhcpcdNetworkManagersystemd-networkd,否则会导致冲突。建议只保留一个。


五、常见误区

误区正确理解
“插着网线就该优先”可通过 metric 控制优先级,与物理连接无关
“拉黑 = 断网 = 自动切 Wi-Fi”系统不知道你被拉黑,需主动配置 failover
“改 /etc/dhcpcd.conf 就行”仅适用于使用 dhcpcd 的系统,本例不适用

六、总结

  • 识别网络管理工具是第一步(用 psdpkg)。
  • 不要假设所有树莓派都用 dhcpcd —— 定制系统可能改用 NetworkManager。
  • 通过 nmcli connection modify ... ipv4.route-metric 是 NetworkManager 下的标准做法。
  • metric 越小,优先级越高,合理设置可实现“Wi-Fi 主用、有线备用”的智能切换。

📌 最终目标:即使有线被限制,树莓派也能无缝通过 Wi-Fi 访问互联网。


如有其他网络配置需求(如仅局域网走有线、策略路由等),可在现有基础上进一步扩展。欢迎继续提问!

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇