一、问题:EAI_AGAIN

近日在开发过程中,屡次遇到如下问题:

getaddrinfo EAI_AGAIN

查找发现这是一个DNS相关的问题:

EAI_AGAIN is a DNS lookup timed out error, means it is a network connectivity error or proxy related error.

即 DNS 查找超时,意味着网络链接错误或者代理相关错误。

二、解决:

在 Ubuntu 16.04 系统下,可以手动设置域名服务器解决该问题。
在 /etc/resolv.conf 中添加一行:

nameserver 8.8.8.8
或
nameserver 114.114.114.114

三、114.114.114.114 和 8.8.8.8

3.1 二者的联系

114.114.114.114和8.8.8.8,这两个IP地址都属于公共域名解析服务DNS其中的一部分,而且由于不是用于商业用途的,这两个DNS都很纯净,不用担心因ISP运营商导致的DNS劫持等问题,而且都是免费提供给用户使用的。

3.2 二者的区别

114.114.114.114

114.114.114.114是国内移动、电信和联通通用的DNS,手机和电脑端都可以使用,干净无广告,解析成功率相对来说更高,国内用户使用的比较多,而且速度相对快、稳定,是国内用户上网常用的DNS

8.8.8.8

8.8.8.8是GOOGLE公司提供的DNS,该地址是全球通用的,相对来说,更适合国外以及访问国外网站的用户使用

3.3 如何合理选择DNS

DNS对于网民来说,就跟灯塔和航海人员的道理是一样的,选择合理的DNS可以有效的帮助我们防止DNS劫持、提升上网速度等,那么,如何合理的选择DNS呢?

选择本地干净的DNS

目前世界上的大中型网站都是采用CDN做内容分发的,从而可以确保用户就近的接入、提升访问速度,不少的网站会使用DNS作为识别,因此,如果本人在北京,却选择了上海的DNS,就有可能会被网站认为是上海的用户而引导到上海的服务器上去。

不过所幸,现在的不少网站都根据IP地址来引导用户的。

选择安全无毒、免费的DNS

目前国内有不少的免费、安全而且无毒的DNS,常见的如百度提供的180.76.76.76、阿里提供的223.5.5.5和223.6.6.6、前文提到的114.114.114.114和8.8.8.8