3、网络层排查:IP地址获取、Ping测试、路由追踪与DNS解析

设备连不上云,十有八九是网络层出了问题。我排查过上千台掉线的物联网设备,最怕的就是那种“灯亮着,数据就是上不来”的情况。说白了,网络层就是设备的“身份证”和“地图”——它得知道自己是谁(IP),知道网关在哪(路由),还得知道服务器叫什么(DNS)。

这一章,咱们就把这四个环节拆开揉碎了讲。你跟着我的思路走一遍,大部分网络层问题都能定位到根因。

核心排查路径: IP地址获取 → 网关连通性 → 路由可达性 → DNS解析

任何一个环节断裂,设备就是“孤岛”。

网络层排查核心流程 DHCP/静态IP 获取IP地址 Ping测试 网关连通性 路由追踪 路径可达性 DNS解析 域名转IP IP获取失败 → 检查DHCP服务 Ping不通 → 检查网关/防火墙 DNS失败 → 检查DNS服务器 💡 排查顺序建议: 先确认IP是否获取成功 → 再Ping网关 → 然后路由追踪 → 最后检查DNS。别跳步,跳步容易误判。

3.1 IP地址获取:设备的第一张“身份证”

设备上电后第一件事,就是给自己弄个IP地址。要么找DHCP服务器要,要么自己写死一个静态IP。我见过太多设备“掉线”,其实就是IP没拿到。

3.1.1 DHCP方式

大部分物联网设备默认用DHCP。设备发一个广播包,DHCP服务器回一个IP租约。这个过程叫DORA(Discover、Offer、Request、Ack)。

快速验证方法: 在设备上执行 ifconfig 或 ip addr,看有没有拿到IP。如果IP是169.254.x.x,那就是DHCP失败了——这是Windows的APIPA自动分配地址,说明设备没找到DHCP服务器。

我在一个智能路灯项目里遇到过:200盏灯,每天早上有30盏连不上。查了半天,发现是DHCP租约时间设成了1小时,而路灯夜间断电超过1小时,第二天IP已经被分配走了。后来我把租约改成24小时,问题解决。

3.1.2 静态IP方式

工业设备、网关节点,我建议用静态IP。稳定,不依赖DHCP服务器。但有个坑——IP冲突。

静态IP配置避坑指南:

  • IP地址必须在子网范围内(比如网关是192.168.1.1/24,设备IP就得是192.168.1.x)
  • 子网掩码必须一致(常见的是255.255.255.0)
  • 默认网关必须填对(填错了,设备能Ping通局域网,但出不去)
  • DNS服务器至少填两个(主备)

我曾经帮一个工厂排查产线设备掉线问题。30台设备,每天随机掉3-5台。我抓包一看,好家伙,有人把一台新设备的IP设成了和PLC一样的地址。IP冲突导致两台设备轮流掉线。从那以后,我要求所有静态IP必须登记在Excel表里,上线前先Ping一下。

3.2 Ping测试:最直接的连通性验证

拿到IP之后,第一件事就是Ping网关。网关是设备出局域网的大门,门都出不去,就别提连云了。

3.2.1 标准Ping测试步骤

# 在设备上执行
ping 192.168.1.1    # Ping网关,看局域网通不通
ping 8.8.8.8        # Ping公网IP,看能不能出互联网
ping baidu.com      # Ping域名,看DNS解析+网络连通性

Ping不通怎么办?别慌,按顺序排查:

现象 可能原因 排查方向
Ping网关不通 网线/网口故障、VLAN配置错误、防火墙拦截ICMP 检查物理连接、交换机端口配置
Ping公网IP不通,但网关通 网关NAT配置问题、运营商限制、路由表缺失 检查网关的默认路由和NAT规则
Ping域名不通,但公网IP通 DNS解析失败 检查DNS服务器配置

我的经验: 很多物联网设备默认禁用了ICMP响应。如果Ping不通,先确认设备是否开了ICMP。有些路由器也默认禁Ping,别被假象迷惑。

3.3 路由追踪:找到数据包的“迷路”点

Ping通了网关,但连不上云服务器。这时候就需要路由追踪了。它能告诉你数据包走到哪一步丢了。

3.3.1 常用命令

# Windows
tracert 8.8.8.8

# Linux/Mac
traceroute 8.8.8.8

# 物联网设备(如果支持)
mtr 8.8.8.8    # 结合Ping和路由追踪,更好用

输出结果里,每一跳就是一个路由器。如果某跳显示 * * * 或者超时,那问题大概率出在这一段。

我记得有个项目,设备在北京,服务器在杭州。设备Ping网关通,Ping公网IP也通,但就是连不上服务器。我跑了一次traceroute,发现数据包走到某个运营商节点后就没了。后来联系运营商,发现是路由策略问题,绕路了。

小技巧: 如果traceroute中间某跳超时,但后续跳又能通,那可能是那个节点禁用了ICMP,不用太担心。如果连续3跳以上超时,那才是真断了。

3.4 DNS解析:域名转IP的“翻译官”

设备连云服务器,通常用域名(比如 iot.aliyun.com)。DNS就是把域名翻译成IP地址的。翻译错了,设备就找不到服务器。

3.4.1 常见DNS问题

  • DNS服务器不可达: 设备配置的DNS服务器IP不对,或者DNS服务器挂了
  • DNS缓存污染: 设备或路由器缓存了错误的DNS记录
  • 域名解析超时: DNS查询超时,设备等不到回复
  • DNS劫持: 运营商或恶意设备篡改DNS响应

3.4.2 排查方法

# 在设备上执行
nslookup iot.aliyun.com          # 查看解析结果
dig iot.aliyun.com               # 更详细的DNS查询

# 检查DNS服务器连通性
ping 8.8.8.8                     # 先确认能Ping通DNS服务器
nslookup iot.aliyun.com 8.8.8.8  # 指定DNS服务器查询

如果nslookup返回了IP,但设备还是连不上,那可能是设备固件里写死了某个IP,或者DNS缓存没刷新。我遇到过一台设备,固件里写死了5年前的服务器IP,换了服务器之后,设备一直连旧的IP,当然连不上。

重要提醒: 物联网设备通常有DNS缓存。改了DNS配置后,记得重启设备或清除缓存。有些设备缓存时间长达24小时,你改了配置,它第二天才生效。

3.5 综合排查实战:一个真实案例

去年帮一个智慧农业项目排查。大棚里的温湿度传感器,每天下午3点准时掉线,5点自动恢复。我一开始以为是网络问题,结果发现:

  1. DHCP获取IP正常(设备IP没变)
  2. Ping网关正常(延迟1ms)
  3. Ping公网IP正常(延迟20ms)
  4. Ping服务器域名超时

问题出在DNS。我查了DNS服务器日志,发现每天下午3点,DNS服务器会做一次缓存清理,导致域名解析临时失败。而设备固件里,DNS查询超时时间设成了30秒,重试次数只有1次。所以一旦DNS超时,设备就认为服务器不可用,直接断连。

解决方案很简单:把DNS查询超时改成5秒,重试次数改成3次。再也没掉过线。

总结一下排查顺序:

  1. 先看IP: ifconfig 或 ip addr,确认IP、掩码、网关
  2. 再Ping网关: 确认局域网连通性
  3. 然后Ping公网IP: 确认互联网连通性
  4. 接着路由追踪: 找到丢包点
  5. 最后检查DNS: nslookup 或 dig

按这个顺序走,90%的网络层问题都能定位。剩下的10%,可能是防火墙规则、MTU问题或者运营商限制,那就要抓包分析了。

嗯,网络层排查就这些。记住,别一上来就怀疑设备坏了。先看看IP拿到了没,网关通不通。很多时候,问题就出在最基础的环节。