大陆地区GitHub访问慢的解决方法

发布于 2022-04-12  343 次阅读


引子:

国内网络访问 Github 速度过慢的原因有许多,但其中最直接和原因是其 CND 域名遭到 DNS 污染,导致我们无法连接使用 GitHub 的加速服务,因此访问速度缓慢。
简单理解:CDN「Content Delivery Network」,即内容分发网络,依靠部署在各地的边缘服务器,平衡中心服务器的负荷,就近提供用户所需内容,提高响应速度和命中率。DNS 污染,是指一些刻意或无意制造出来的数据包,把域名指向不正确的 IP 地址,阻碍了网络访问。
我们默认从目标网址的最近 CDN 节点获取内容,但当节点过远或 DNS 指向错误时,就会操成访问速度过慢或无法访问的问题。

在大陆地区访问GitHub总是时行时不行的,网站总是处于半墙状态。本文提出了一种不用翻过“那堵墙”的方法——>修改host。

Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统再会将网址提交DNS域名解析服务器进行IP地址的解析。具体来说,hosts文件是系统中一个负责IP地址与域名快递解析的文件,以ASCLL格式保存。计算机在键入域名(比如b.simplenull.com)的时候,首先会去看看hosts文件汇总有没有关于此域名IP地址的记录。如果有,就直接登陆该网站;如果没有再查询DNS服务器。

举例来说,host文件就好比如你想去一个人的家里,你就得知道对方的地址。当你的脑子中记得对方的住址的时候,你就可以直接去对方家。而如果你忘记了Ta的地址,你就得在群里问,就会有人回答Ta住在哪。这时,你的大脑就是计算机,对方的地址就是ip,而你大脑能记住对方地址的这种情况就是ip处于host文件中。而你忘记了对方地址,去群里问这种情况就是计算机未能在host文件中找到这个网址对应解析的ip,就需要去DNS服务器查询。

正是由于host文件具有的这种特性,所以我们可以通过修改host文件来加速GitHub的访问。


host文件在不同系统中处于不同位置:
Windows系统的host文件位于C:\Windows\System32\drivers\etc目录下
Linux系统和MacOS系统(以及其他基于unix的系统)的host文件位于/etc/hosts


注意!所有系统的host文件都不带后缀。同时如果无法直接修改host文件,可以现在其他文件夹新建一个,然后删除旧的host文件(记得备份备份备份!!!重要的事情说三遍!!!),再复制进去。

下面是修改host文件来加速Linux系统的教程(Windows和MacOS同样适用,只不过不用命令行修改,直接定位到文件位置,双击打开修改):
首先利用网络上的ping工具,例如这个,检测网址、IP 地址的通讯情况。分别输入要检测的网址github.com和raw.github.com(可选:assets-cdn.github.com,avatars.githubusercontent.com,assets-cdn.github.com,github.global.ssl.fastly.net,codeload.github.com,)(如果能直接访问就不用添加了),点击「Ping 检测」。工具提供的服务是利用自己分布在各地的网络节点的本机ping工具,执行对网址的ping操作,汇总结果,统计响应网址的服务器 IP。

然后选取速度最快的那些ip,复制。

下一步,在终端中输入:sudo vi /etc/hosts。然后输入i,回车进入编辑模式,粘贴下面的代码。
输入类似如下内容:
13.127.152.42 codeload.github.com
151.101.88.133 github.map.fastly.net
151.101.88.133 favicons.githubusercontent.com

151.101.88.133 raw.github.com
151.101.88.133 raw.githubusercontent.com
151.101.88.133 camo.githubusercontent.com
151.101.88.133 cloud.githubusercontent.com

151.101.88.133 avatars.githubusercontent.com
151.101.88.133 avatars0.githubusercontent.com
151.101.88.133 avatars1.githubusercontent.com

151.101.88.133 avatars2.githubusercontent.com
151.101.88.133 avatars3.githubusercontent.com
151.101.88.133 user-images.githubusercontent.com
185.199.111.154 github.githubassets.com
52.69.239.207 api.github.com
52.74.223.119 gist.github.com

其中,网址前面的ip替换成你测速出来最快的ip。
粘贴完按esc键,输入:,再输入wq!,然后回车,这样就保存退出了。

最后,别忘了刷新host缓存来使改变生效,具体方法如下:
1.Windows 同时按Win键和R键唤出运行 -> 输入cmd,回车 -> 在CMD窗口输入:ipconfig /flushdns ,然后回车。
2.Linux 终端输入:sudo rcnscd restart
3.Mac OS X终端输入:sudo killall -HUP mDNSResponder
4.其他:断网,再重新连接
5.终极方法: 重启机器

点击数:62


"收余恨,免娇嗔,且自新,改性情,休恋逝水,苦海回身,早悟兰因."