4. 农业网关4G回传中断的拨号与路由排查

故障现象与排查边界

某大田气象站配套的农业网关通过 4G 回传向平台上报数据,运维发现平台侧从上午 9:20 起数据缺失,网关本地采集与 LoRa 汇聚仍正常(本地缓存持续增长)。这说明问题集中在4G 回传链路,而非传感器或本地组网。排查目标是把故障锁定在三个候选域之一:SIM 卡/资费状态、基站无线信号、网关拨号与路由配置。

先明确一个关键区分:拨号成功 ≠ 回传可用。PPP 拨号拿到 IP 只代表链路层建立,若默认路由缺失、APN 错误导致拿到私网地址却无出口,或 DNS 不可用,业务数据依然发不出去。因此排查顺序应为「拨号状态 → APN/地址 → 信号质量 → 路由表 → 业务连通性」。

农业网关 LoRa 汇聚(正常) 本地缓存(增长) 4G 模块 / PPP 路由表 / DNS SIM 卡 / 资费 欠费·停机·未激活 基站 / 无线信号 RSRP·SINR·小区 运营商核心网 APN 网关 / 出口 分配 IP·DNS 农业云平台 数据缺失(9:20 起) 业务不通 判定要点 ① 拨号失败 → 查 SIM 状态与 APN 配置 ② 拨号成功但 RSRP < -110 dBm / SINR < 0 → 查天线与基站覆盖 ③ 信号正常但无默认路由 / 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 出口是否被运营商限制(部分物联网卡仅允许访问指定平台,需在平台侧加白名单)。

排查顺序建议固定为「拨号 → 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+QENGRSRP > -100 dBmRSRP -92 dBm通过
默认路由ip route showdefault 走 ppp0default 走 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 输出以便回滚。