目录

DNS域名解析错误

问题现象

背景知识

问题定位

通常DNS问题参考如下方式定位:

  1. 检查网络连通性,通过浏览器访问域名或在终端执行hdc shell ping [域名]检查网络连接情况。在通畅的网络下,使用默认DNS服务器,终端返回域名解析结果,丢包率0%:
    > hdc shell ping developer.huawei.com
    Ping developer.huawei.com (183.61.***.**): 56(84) bytes.
    64 bytes from 183.61.***.**: icmp_seq=1 ttl=47 time=26 ms
    64 bytes from 183.61.***.**: icmp_seq=2 ttl=47 time=28 ms
    64 bytes from 183.61.***.**: icmp_seq=3 ttl=47 time=25 ms
    
    --- 183.61.***.** ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss
    round-trip min/avg/max = 25/26/28 ms
  2. 查看hilog日志,分析报错信息有1007900006、Couldn't resolve host name、ERR_NAME_NOT_RESOLVED报错。
    1. RCP请求分析示例如下:
      • dnsStatus:DNS结果的状态,1表示有IP地址,2表示只拿到了CNAME,3代表非法报文。
      • dnsFromNetsys:DNS查询的结果是否来自网络系统缓存,0代表从DNS服务器获取,1代表从缓存中获取。
      • tryDns:尝试连接的DNS服务器。
      • recvDns:收到响应的DNS服务器。
        [RCP]  {"code":1007900006,"data":"Couldn't resolve host name","extendInfo":{"httpPhase":"100000","dnsDur":"0.00",   "tcpDur":"0.00","tlsDur":"0.00","sndDur":"0.00","rcvDur":"0.00","totDur":"32.61","redDur":"0.00","osErr":"11", "sptIP6":"1","proxyType":"none","uptProxyMs":"0","proxyCode":"0","lastOsIn":"20:10:28.562","lastOsOut":"never",  "sock":"-1","dnsFromNetsys":"0","tryDns":"202.96.***.**","connDns":"1","recvDns":"202.96.***.**,202.96.***.**",   "dnsStatus":"3"}}

        如上面日志代表DNS解析失败,向DNS服务器202.96.***.**请求解析结果,但是未正常解析IP地址,返回了其他非法报文。

    2. ArkWeb网络请求错误日志示例如下:
      getaddrinfo_ext: 234: reportdnsresult: -2 in process 30114
      ...
      getErrorInfo:ERR_NAME_NOT_RESOLVED
      getErrorCode:-105
  3. 查看网络数据包,判断DNS解析请求数据包是否发出,使用dns.qry.name contains [域名]过滤pcap日志。
    • 正常情况下,同时存在DNS请求及响应数据包:

    • 若请求时间点存在DNS query数据包,没有query response响应包,ICMP返回Destination unreachable,需要检查DNS服务器是否可达。

    • 若请求时间点存在DNS query数据包,响应返回No such name [域名],需要检查域名是否拼写正确,或更换DNS服务器。

  4. 检查是否存在连接复用:对于HTTP/2版本,强制启用连接复用;HTTP/1.1版本中,header的Connection: keep-alive代表启用连接复用,默认开启,客户端可通过设置Connection: close显示关闭连接复用。

分析结论

修改建议