问题描述

问题出现在对一个地址进行get请求的时候出现了这个问题,显示如下:

问题解决:Get “xxx“: dial tcp: lookup xxx on xxx: read udp xxx:xxx: i/o timeout_.net


可以说是查遍了全网,最终终于找到了原因,并成功解决,遂记录这篇文章,让后来遇到这个问题的朋友可以少走弯路。

问题解决

首先抛出原因,问题出现在dns解析上。

首先并不是因为访问​​golang.org​​​出现这个问题,访问​​www.baidu.com​​​, ​​www.csdn.net​​​也都会出现这个问题。第一版的解决方案,就是手动ping网址,然后把其中的IP对网址的映射放入到​​/etc/hosts​​​中,这样的话就可以不经过dns查询,直接查询本地缓存了,当然也就不会出现上面的问题了。注意因为​​/etc/hosts​​权限均为root,修改之前sudo一下。

问题解决:Get “xxx“: dial tcp: lookup xxx on xxx: read udp xxx:xxx: i/o timeout_.net_02


问题解决:Get “xxx“: dial tcp: lookup xxx on xxx: read udp xxx:xxx: i/o timeout_.net_03


经过以上操作,从开一个终端进行测试,就发现没有问题了。可是治标不治本,访问其他的网址时还是会出现问题,比如​​www.csdn.net​​​,没有放到本地缓存中还是会在dns解析方面出现问题,如何解决呢,方法就是改变本机的目标dns服务器,默认设置在​​/etc/resolv.conf​​,我的默认目标dns为本地路由,我们的方法就是把dns目标地址修改为一个可用的dns服务器,如8.8.8.8或者4.4.4.4,检测是否可用就是ping一下,配置完如下:

问题解决:Get “xxx“: dial tcp: lookup xxx on xxx: read udp xxx:xxx: i/o timeout_本地缓存_04

配置完成以后,如果目标网址没被墙,基本就没什么问题了。当然如果连8.8.8.8都ping不通,就说明网络配置有问题了,参考[1]

参考:

  1. 博文《​​linux下出现ping:unknown host www.baidu.com问题时的解决办法——ubuntu下局域网络的配置​​》
  2. 博文《​​三步解决,dial tcp: lookup production.cloudflare.docker.com on 114.114.114.114:53: read udp i/o timeout​​》