4. 农业网关4G回传中断的拨号与路由排查
故障现象与排查边界
某大田气象站配套的农业网关通过 4G 回传向平台上报数据,运维发现平台侧从上午 9:20 起数据缺失,网关本地采集与 LoRa 汇聚仍正常(本地缓存持续增长)。这说明问题集中在4G 回传链路,而非传感器或本地组网。排查目标是把故障锁定在三个候选域之一:SIM 卡/资费状态、基站无线信号、网关拨号与路由配置。
先明确一个关键区分:拨号成功 ≠ 回传可用。PPP 拨号拿到 IP 只代表链路层建立,若默认路由缺失、APN 错误导致拿到私网地址却无出口,或 DNS 不可用,业务数据依然发不出去。因此排查顺序应为「拨号状态 → APN/地址 → 信号质量 → 路由表 → 业务连通性」。
第一步:读取拨号状态与 APN 配置
登录网关(示例为 Linux 系统,4G 模块通过 ppp0 拨号),先确认链路层是否建立:
# 查看拨号接口与地址
ip addr show ppp0
# 查看拨号进程与日志
ps | grep pppd
tail -n 40 /var/log/ppp.log
# 查看当前 APN 配置(示例路径,按实际网关调整)
cat /etc/ppp/peers/4g-connect
cat /etc/ppp/chat-4g
判读要点:ppp0 存在且拿到 10.x.x.x 类私网地址属正常(运营商常分配私网地址,经 NAT 出口)。若 ppp0 不存在或日志出现 LCP terminated、CHAP authentication failed,优先怀疑 SIM 欠费/停机或 APN 与卡不匹配。示例中日志出现 CHAP authentication failed,说明卡状态或 APN 认证有问题,需先联系运营商确认卡状态,再核对 APN 名称(如物联网卡常用专用 APN,不能用公网 cmnet)。
第二步:采集信号质量
拨号成功后,用 AT 指令读取无线侧指标(示例模块为通用 AT 指令集,具体指令以模块手册为准):
# 进入 AT 通道(示例:/dev/ttyUSB2)
# AT+CSQ 信号强度 0-31,99 表示未知
# AT+CEREG? 4G 注册状态,1 为已注册本地
# AT+QENG="servingcell" 查询 RSRP/SINR/小区信息
判读参考:AT+CSQ 返回 +CSQ: 18,99 属中等;RSRP 优于 -100 dBm、SINR 大于 5 dB 为良好。若 RSRP 低于 -110 dBm 或 SINR 为负,说明天线安装位置或遮挡是主因,应检查天线接头、馈线是否松动,必要时调整天线朝向或加高安装。
第三步:核对路由表与 DNS
这是最容易被忽略的一步。拨号成功但默认路由仍指向旧接口(如以太网 eth0),业务流量就不会走 4G:
ip route show
# 期望看到:default dev ppp0 或 default via <对端网关> dev ppp0
# 若 default 指向 eth0,需修正路由优先级
cat /etc/resolv.conf
# 期望包含运营商 DNS 或公共 DNS
# 业务连通性验证(示例平台地址)
ping -c 4 -I ppp0 8.8.8.8
curl -v --interface ppp0 https://platform.example.com/health
若 ping -I ppp0 通而 curl 域名解析失败,问题在 DNS;若两者都不通,检查 APN 出口是否被运营商限制(部分物联网卡仅允许访问指定平台,需在平台侧加白名单)。
排查记录表(可直接填写)
| 检查项 | 命令/方法 | 正常判据 | 本次结果 | 结论 |
|---|---|---|---|---|
| 拨号接口 | ip addr show ppp0 | 存在且有 IP | 存在,10.32.x.x | 通过 |
| 拨号日志 | tail /var/log/ppp.log | 无认证失败 | CHAP authentication failed | 异常 |
| APN 配置 | cat /etc/ppp/peers/4g-connect | 与卡类型匹配 | 误填 cmnet | 异常 |
| 信号质量 | AT+CSQ / AT+QENG | RSRP > -100 dBm | RSRP -92 dBm | 通过 |
| 默认路由 | ip route show | default 走 ppp0 | default 走 eth0 | 异常 |
| 业务连通 | curl --interface ppp0 | 返回 200 | 超时 | 异常 |
修正与验证
本例中同时存在两处问题:APN 误填为公网 cmnet(物联网卡应使用运营商分配的专用 APN),以及默认路由仍指向 eth0。修正方式:
# 1. 修正 APN(示例:改为物联网专用 APN)
sed -i 's/cmnet/iot.apn.example/' /etc/ppp/peers/4g-connect
# 2. 重新拨号
killall pppd
pppd call 4g-connect
# 3. 修正默认路由优先级(示例:降低 eth0 默认路由 metric)
ip route del default dev eth0
ip route add default dev ppp0 metric 100
# 4. 验证
ip route show | grep default
ping -c 4 -I ppp0 8.8.8.8
curl -s -o /dev/null -w "%{http_code}" --interface ppp0 https://platform.example.com/health
验证通过条件:default 指向 ppp0,ping 丢包率为 0,curl 返回 200,且平台侧在 1 个上报周期内恢复数据接收。若修正后仍不通,再回到信号与平台白名单两个方向继续排查。
eth0 出口,避免误删默认路由导致本地管理通道中断;建议保留一条带 metric 的备用路由,并记录修改前的 ip route show 输出以便回滚。