关于ESP8266 DNS域名解析异常问题及其解决办法
eeskill 2022-01-20

最近公司的ESP8266网关在项目现场出现一个很奇怪的问题,偶尔会出现设备连接不上网络,没有数据上报到云端。由于项目是使用在一些高档豪宅上面,现场还在施工,网络也是临时搭建的,特别不稳定,经常出现一段时间没有网络,之前跑过几次现场,排查的问题都是没有网络,或者网速很差导致连接不上服务器,所以没有放在心上,但是由于有好几个设备间都是出现了手机连接路由器的网络上网不错,但是网关就是连接不上网,后台看不到数据(同事描述),负责测试的同事一直督促着说老板的玻璃心快碎了,快点解决,没办法,又戴上安全帽,去了一趟现场,查看了下log信息,傻眼了,做网关那么多年,第一次看到DNS解析的服务器IP都错误了,log如下:

connected with 303303, channel 6(有所修改,删除了些没用的log)

dhcp client start...

ip:192.168.1.103,mask:255.255.255.0,gw:192.168.1.1

portlen=4dns m2m ip=10.0.0.1new local port is 34182

mqtt connect to ip10.0.0.1:1883

client->connState=10

TCP: Reconnect to 10.0.0.1:1883

TCP_RECONNECT_REQ errType=-9

看到这个log,我都傻眼了,DNS解析出来的服务器IP怎么是那个样子呢,和我们的服务器IP:123.56.xxx.xxx相差太远了,于是查看了下DNS那部分代码,我设置了一个2s定时器,如果解析不能OK,也就是没有返回值的话,那么就一直运行,这个导致造成了DNS域名攻击,有些DNS服务器返回错误的IP给网关,把这个问题反馈给了乐鑫,可惜官方也没遇到过,要我提交测试场景,晕,我自己都没遇到过,也就是那种奇葩的环境第一次遇到过,这个问题就卡在这里了,可以说和官方沟通也没结果,后来我自己想了一种折中的办法,有效的解决了。

因为网络也不是一直出现这种问题,绝大部分时间是没什么问题的,这个通过我们后台监控的数据绘制的曲线连贯性可以看出来。

对于DNS域名解析返回错误IP的解决办法:

模块第一次使用,DNS解析OK,连接服务器OK,那么服务器IP保存到FLASH,第二次出现DNS解析时,如果DNS解析OK,连接服务器FAIL,那么我接下来就拿保存到FLASH的IP连接服务器;

如果出现了DNS解析OK,连接服务器IP OK,如果是DNS解析的IP和保存的IP不同,那么我就更新FLASH里面的IP成最新的(说明服务器IP更换了)。

这个方法这段时间在施工现场测试后,目前没发现之前的问题,我自己用软件模拟也可以很好的解决DNS解析服务器IP错误的问题。

以下是测试后的log(已经修改过得):

mqtt connect to ip10.0.0.1:1883

client->connState=10

TCP: Reconnect to 10.0.0.1:1883

TCP_RECONNECT_REQ errType=-9

strore ip 123,56,xxx,xxx

client ip 10.0.0.1

client ip update 123.56.xxx.xxx

Free memory

new local port is 31543

mqtt connect to ip123.56.xxx.xxx:1883

TCP: Reconnect to: 123.56.xxx.xxx:1883

MQTT: Connected to broker 123.56.xxx.xxx:1883

client->connState=14

client->connState=14

receive data----4----------

client->connState-----14

MQTT: Connected to 123.56.xxx.xxx:1883

MQTT: queue subscribe, topic"xxx/xxxx", id: 1

pubserver_connect_ok

MQTT: queue subscribe, topic"xxx/xxxx", id: 2

server_save_ip 123,56,xxx,xxxx

MQTT: Sending, type: 8, id: 0001

receive data----5----------

client->connState-----17

MQTT: Subscribe successful,1

MQTT: Sending, type: 8, id: 0002

receive data----5----------

client->connState-----17

MQTT: Subscribe successful,2

总结:解决一个问题,不一定要从源头解决,如果从DNS解析错误那块死扣,我觉得很难有所突破,但是我上面那种方法就可以很好的解决掉上面那个问题,换个思考方式,说不定山重水复疑无路,柳暗花明又一村!ESP8266是一款性价比不错的芯片,不过也是有些问题,只要绕过去,还是不错的选择,好久没听到同事说老板玻璃心快碎了,快去现场解决,我的世界又可以安静一段时间了

声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 相关技术文库
  • 物联网
  • 蓝牙
  • WIFI
  • LoRa
  • 传感网都有哪些技术呢?

    很多人在看到传感网时脑子里不觉的就会联想到物联网,对于传感网和物联网之间的关系也存在不同的声音。有一种声音是传感网是包含于物联网中的,而还有一种声音是传感网和物

    05-06
  • 智慧居家服务平台的家电智能化应用

      随着经济规模的演进、网络与技术的演进,使得智慧化或数字化的生活环境逐渐成为可能。智能家电与感测模块,在智能生活的应用范围亦随之扩展;人们有机会与建筑物产生不

    04-26
  • 7寸Nook Tablet多媒体平板电脑全程高清拆解

      【OFweek电子工程网原创】:第一步  1GHz双核处理器  1GBRAM  高达48GB的存储空间(16GB内部存储)  支持802.11b/g/nWi

    04-25
  • 物联网技术中的电子身份识别

      物联网的终端是物品,人们的生活和工作都离不开周围成千上万的各种物品。人是主体,物品是客体。对物联网最直观的理解是人们需要知道哪些物品,并控制他们发挥其作用。

    04-13
  • 基于光敏电阻和光电传感器的智能灯控系统

      摘要:文章设计了一种基于光敏电阻和光电传感器的智能灯控系统。本系统主要包括两部分,一部分是以光敏电阻为主要功能元件的模块,其作为检测系统的启动开关,另一部分

    04-12
  • 物联网技术框架与融合模式

      引言:“CASAGRAS”是欧盟所支持的项目计划,主要在支持与协调全球RFID相关活动与标准化。参与此计划的专家除来自欧洲外,还有来自中国、日本、韩国以及美

    04-11
  • 传感器节点通过采集能源供电的设计

      如果我们周围的系统能够自己检测其环境变化并做出反应,这毫无疑问会彻底改变我们的生活。无线传感器网络就是这样一个系统,系统中的一些分布式传感器实施(节点)通过

    04-06
  • 如何在典型的物联网设计中使用PIC-IoTWG

    Google Cloud 之类的企业级云服务为物联网开发人员提供了各种功能服务,从可扩展虚拟机服务到交钥匙型人工智能 (AI) 应用,不一而足。而这些服务的基本

    04-02
  • 图形辨识的原理及流程

    图形识别(Pattern recognition,或称模式识别),为透过计算机运算技术方法达到图形的自动判读之技术。影像在计算机中以数组的形式储存与运算,如三原

    03-28
  • 基于蓝牙协议的无线网络化传感器设计

      摘要:以传感器接口标准IEEE1451.2为基础,介绍了无线网络化传感器实现的一些具体技术要点,提出了一种基于蓝牙协议的无线网络化传感器结构模型,并给出了基

    03-22
  • IoT技术框架概述

      引言:“CASAGRAS”是欧盟所支持的项目计划,主要在支持与协调全球RFID相关活动与标准化。参与此计划的专家除来自欧洲外,还有来自中国、日本、韩国以及美

    03-04
  • 家居环境实时监测系统总体设计

      引言   家居环境是指家庭团聚、休息、学习和家务劳动的环境。家居环境条件的好坏,直接影响着居民的发病率和死亡率。城市居民每天在室内工作、学习和生活

    03-01
下载排行榜
更多
广告