不知道是不是最近因为马云被骂得太惨,还是他们要故意这样做。我只能说那个马云用的人才用,不用的人永远不会去用。
当你尝试访问Github的时候,你的浏览器将提示你,This site can’t be reached github.com refused to connect。这个github.com站点连接不可达。
浏览器也会给一些尝试的解决方案比如Checking the connection检查你的网络连接,Checking the proxy and the firewall检查代理和防火墙的配置。
最后提示一个连接被ERR_CONNECTION_REFUSED。如果你按浏览器的提示去做这些操作,你永远不会有任何结果结果。
除了浏览器提示你连接被拒绝之外,如果你是Javascript/Node.js开发者。你经常使用使用的包管理器npm,yarn,pnpm等。
不出意外的话,当你尝试安装一个模块或者包使用npm/yarn/pnpm命令。你会看到一个莫名奇妙的错误,请求失败connect ECONNRE FUSED 127.0.0.1:443。在安装electron时。
你可能会问,为什么会请求127.0.0.1:443。你可能会怀疑的是他们的代码写错了?答案:不是。如果你之前安装此npm包的话,就不会存在次问题,因为本地存在缓存。
也并不是所有npm包都会这样,因为某些包会从github下载文件。例如electron就会从github下载文件。会导致你安装失败。
现在我们解释一下其中的原因,这是当前请求Github域名解释时返回了不正确的地址。而且该地址是127.0.0.1,也就是你本地计算机的回环地址。
如果你还想追问到底的话,只有一个答案,那就是....................,这里就不具体说了,懂的都懂,可以润的赶紧润。
你可以使用DNS解释工具dig命令,来获取github在DNS服务器的结果。打开你的ctrl+alt+t
终端运行命令dig github.com
,它将返回github.com域名经过DNS服务器的结果。
当你完成命令的运行后你的终端中的输出将包行github.com. 58 IN A 127.0.0.1
。我们解释一下这行的含义。
github.com域名的A记录的地址是127.0.0.1
,是不是很惊讶。你在本地映射github.com了吗?还是把github搬到你的计算机了。
这种技术的方式在计算机术语中称为DNS污染。是计算机网络领域的一种黑客技术。现在已经找到问题所在,接下就是怎么解决这个问题。
解决问题方式有很多种,第一种就是建立自己的本地DNS服务器。第二种是修改你的计算机网卡/接口的DNS服务器地址。第三种就是直接在你/etc/host文件中映射github正确的地址。
解决github不能访问的问题
在本教程中,我们使用第二种方式来解决github不能访问的问题。我们将使用Google的DNS地址8.8.8.8
或Cloudflare的DNS服务器1.1.1.1
。
如果你使用的Ubuntu Linux。你可参考我们的教程如何在Ubuntu上设置自定义DNS服务器。
如果你使用的是Windows,这里暂时不描述。打开Google,搜索你想要的结果。解决你的问题。MacOS用户也请行Google。
你也可在hosts文件映射github的ip地址。我们在这里提供一个可用的github的地址,让你暂时解决该问题。添加行github.com 20.205.243.166
到你的hosts文件即可。