You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派IP路由持续添加eth0默认路由(metric100)问题求助

解决树莓派双网卡路由优先级问题

问题根源

从ip route输出能看到,eth0的默认路由metric(100)远低于wlan0的metric(600),系统会优先选eth0作为默认网关,但你的web服务依赖wlan0的路由器对外提供服务,导致外网无法访问。需要调整路由规则,让wlan0保持默认路由优先级,同时保留eth0的本地连接功能。

解决方案

先确认系统使用的网络管理工具:

systemctl list-unit-files | grep -E '(networkd|NetworkManager|dhcpcd)'

根据输出选择对应方案:

方案1:基于systemd-networkd配置

修改你之前创建的/etc/systemd/network/10-eth0.network,确保eth0不获取默认路由,同时设置更高的metric:

[Match]
Name=eth0

[Network]
DHCP=yes
Metric=700  # 数值高于wlan0的600,确保优先级更低

[DHCP]
UseRoutes=false  # 禁止eth0从DHCP获取默认路由

重启网络服务生效:

sudo systemctl restart systemd-networkd

方案2:基于NetworkManager配置(桌面版系统常用)

如果输出显示NetworkManager已启用,用命令行配置:

# 让eth0忽略DHCP下发的默认路由
nmcli connection modify eth0 ipv4.ignore-auto-routes yes
# 设置eth0的metric高于wlan0
nmcli connection modify eth0 ipv4.metric 700
# 重新激活eth0连接
nmcli connection up eth0

也可以通过图形界面操作:

  • 打开系统设置 → 网络
  • 找到eth0连接,点击齿轮图标进入设置
  • 切换到IPv4标签,将“路由”选项改为“手动”,勾选“忽略自动获取的路由”,并设置“路由度量”为700
  • 保存后重启连接

方案3:调整wlan0的metric抢占优先级

如果希望保留eth0的默认路由,但让wlan0始终优先,可配置wlan0的metric更低:
针对systemd-networkd,创建/etc/systemd/network/20-wlan0.network:

[Match]
Name=wlan0

[Network]
DHCP=yes
Metric=50  # 数值低于eth0的100,确保优先级更高

重启服务生效:

sudo systemctl restart systemd-networkd

验证配置

执行ip route查看路由表,确认:

  • eth0没有default via条目,或者其metric高于wlan0的默认路由metric
  • wlan0的default via条目metric数值更小

此时web服务应该可以正常对外访问,同时你依然可以通过curl --interface eth0 192.168.68.103?c=i连接Arduino设备。

内容的提问来源于stack exchange,提问作者TheKillerCH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 10:43:25