出现这种情况的原因是因为:DNS投毒
或者叫 DNS污染
。
从客户端向DNS服务器发出查询IP的请求,到响应返回到客户端的这段时间里,如果有黑客或者其他一些不可说的设施伪造返回了一个错误的DNS应答,那么用户将不能访问到真正的资源。
所以有两种解决方式:1、短期处理方法 2、从根源解决问题
1. 短期处理方法 [1]
网上绝大部分的回答,都是修改 host 文件,已到达手动指定DNS解析的目的,此方法只能临时解决该问题,等过一段时间之后,会发现又开始打不开网页、图片无法加载、访问很慢等问题。
步骤如下
1.1 获得真实ip地址:
打开【https://www.ipaddress.com】网页,输入想要解析的网址【github.com】与【avatars.githubusercontent.com】
红色方框地址就是我们想要的目标IP
1.2 修改host文件
获得IP之后,找到host文件,【C:\Windows\System32\drivers\etc\host】
在文件末尾按如下格式添加即可
# GitHub Host Start
140.82.113.3 github.com
185.199.108.133 avatars.githubusercontent.com
185.199.109.133 avatars.githubusercontent.com
185.199.110.133 avatars.githubusercontent.com
185.199.111.133 avatars.githubusercontent.com
这种方式需要每隔一段时间就去获取一次IP,不然会重新出现打不开网页、无法加载、打开慢等问题。
2. 从根源解决问题 [2]
因为国内的DNS很容易被劫持污染无法直接指向目标地址,那么可以尝试直接使用Google提供的DNS服务器地址8.8.8.8; 8.8.4.4
,直接指向目标地址
但是这种方法会引出新的问题:当访问国内网页时,会出现访问Github时的情况:打不开网页、无法加载、打开慢等问题。
那么问题回到了起点,有没有两种都适用的方法?
很明显是有的!
在这之前先要弄明白什么是首选(Preferred)DNS服务器与备选(Alternate)DNS服务器:
首选DNS和备用DNS都是一种域名系统,正常情况下都是使用首选DNS服务器,只有当首选DNS服务器无法正常解析时,才会使用备选DNS服务器。
所以我们可以将首选DNS服务器填写国内常用DNS地址[3]:
114.114.114.114
备选DNS服务器填写Google提供的DNS地址:
8.8.8.8 或者 8.8.4.4
114.114.114.114是国内移动、电信和联通通用的DNS,手机和电脑端都可以使用,干净无广告,解析成功率相对来说更高,国内用户使用的比较多,而且速度相对快、稳定,是国内用户上网常用的DNS。
8.8.8.8是Google提供的DNS,该地址是全球通用的,相对来说,更适合国外以及访问国外网站的用户使用。
【参考资料】
[1]https://blog.csdn.net/qq_38132105/article/details/107137558
[2]https://blog.csdn.net/lr157/article/details/105665798/
[3]https://baike.baidu.com/item/114DNS?fr=aladdin#2