banner
NEWS LETTER

嵌入式 Linux 系列 12:网络配置、连通性和 MQTT 排查

Scroll down

网络问题是嵌入式现场最常见的问题之一。设备能不能拿到 IP、能不能解析域名、能不能连上 MQTT、断网后能不能恢复,都会影响产品稳定性。

一、先看本机网络状态

常用命令:

1
2
3
4
ip addr
ip link
ip route
cat /etc/resolv.conf

检查顺序:

  1. 网卡是否 up。
  2. 是否有 IP。
  3. 是否有默认路由。
  4. DNS 是否配置。
  5. 是否能 ping 网关。
  6. 是否能访问外网或 broker。

不要一上来就看应用日志。

二、静态 IP 和 DHCP

静态 IP 适合固定工业现场:

1
2
3
4
ipaddr=192.168.1.100
netmask=255.255.255.0
gateway=192.168.1.1
dns=8.8.8.8

DHCP 适合通用网络环境,但要处理获取失败和租约更新。

配置建议持久化到:

1
/data/config/network.conf

不要只改运行时命令,否则重启丢失。

三、连通性分层排查

按层检查:

1
2
3
4
链路层:网线、Wi-Fi、link up
网络层:IP、路由、网关
传输层:端口是否可达
应用层:协议、账号、证书、topic

命令:

1
2
3
4
ping 192.168.1.1
ping 8.8.8.8
nslookup mqtt.example.com
nc -vz mqtt.example.com 1883

精简 rootfs 不一定有 nc,可以用 telnet 或应用内连接日志替代。

四、MQTT 排查

MQTT 连不上时看:

  • broker 地址。
  • 端口。
  • client id。
  • 用户名密码。
  • TLS 证书。
  • 系统时间。
  • keepalive。
  • topic 权限。

TLS 场景一定要检查时间:

1
date

系统时间错误会导致证书校验失败。

五、断网重连策略

设备服务要支持:

  • 指数退避重连。
  • 网络恢复后重新订阅 topic。
  • QoS 策略。
  • 离线状态缓存。
  • 重复命令去重。

不要每秒疯狂重连 broker。现场网络抖动时,这会放大问题。

六、抓包

如果条件允许,使用:

1
tcpdump -i eth0 -w mqtt.pcap

再用 Wireshark 分析。抓包能直接看到 DNS、TCP 握手、TLS 握手和 MQTT 报文。

网络问题要尽量用事实定位,少靠猜。

其他文章
目录导航 置顶
  1. 1. 一、先看本机网络状态
  2. 2. 二、静态 IP 和 DHCP
  3. 3. 三、连通性分层排查
  4. 4. 四、MQTT 排查
  5. 5. 五、断网重连策略
  6. 6. 六、抓包
请输入关键词进行搜索