五、嵌入式网络配置的坑
2026/8/6大约 2 分钟
五、嵌入式网络配置的坑
12. eth0 默认路由死活删不掉
现象:
default dev eth0 scope link
default via 10.195.7.248 dev wlan0 metric 10ip route del default dev eth0 删除后立即恢复,无法上网。
原因:eth0 通过 DHCP 获取了 169.254.x.x 链路本地地址,内核自动生成 scope link 路由。DHCP 客户端在接口 UP 时不断重新添加。
解决:用 replace 覆盖而非 del 删除。
ip route replace default via 10.195.7.248 dev wlan0经验:在嵌入式环境中,无法阻止其他进程重新添加路由,用 replace 覆盖是更可靠的方案。
13. SSL 握手失败
现象:SSL handshake failed,错误信息 "The certificate is not yet valid"。
根本原因:开发板没有 RTC 电池,系统时间回退到 1970 年,远早于 SSL 证书的生效日期。
解决方案:
// 调试阶段:忽略 SSL 错误
connect(netManager, &QNetworkAccessManager::sslErrors,
this, [](QNetworkReply *reply, const QList<QSslError> &errors) {
reply->ignoreSslErrors();
});
// 生产环境:校准系统时间
date -s "2026-07-14 10:30:00"
hwclock -w经验:嵌入式设备的时间问题很容易被忽视,但它会导致各种证书验证失败,且错误信息不够直观。
14. rc.local 阻塞导致桌面卡在进度条
现象:在 /etc/rc.local 中添加网络配置后,桌面程序卡在启动进度条。
原因:rc.local 中的命令(如 wpa_supplicant、udhcpc)执行时间长,且 rc.local 执行完毕前系统不会继续启动图形界面。
解决:将耗时命令放入后台执行。
(
wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf -D wext
udhcpc -i wlan0
) &
/opt/QDesktop &经验:嵌入式启动脚本中,任何耗时操作都要放后台,否则会阻塞整个启动流程。
15. wpa_supplicant 驱动不兼容
现象:nl80211: Driver does not support authentication/association or connect commands
原因:RTL8188E 等老款 WiFi 模块不支持 nl80211 接口。
解决:使用 wext 驱动后端。
wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf -D wext经验:不同 WiFi 模块驱动支持不同,wext 是兼容性最好的备选方案。

