GitHub 是全球最大的代码开源平台,重要性不言而喻。
但由于某些特殊原因,可能导致了DNS解析缓慢,容易出现tcp的连接超时情况,很多人发现自己访问 GitHub 时断时续。
到底是什么原因导致了这个问题,网上众说纷纭,我还是小白,也不必去深究,只要解决这个问题来满足自己的访问需求就可以了。
下面就说两种方法吧:
1. 改 hosts
我们在浏览器输入 GitHub 的网址时,会向 DNS 服务器发送一个请求,获取到 GitHub 网站所在的服务器 IP 地址,从而进行访问。
就像你是一名快递员,在送快递前要先找中间人询问收件人的地址。而 DNS 就是这个告诉你目标地址的中间人,如果 DNS 告诉了你错误的地址、或者请求被拦截、再或者 DNS 挂了,都会导致你无法访问网站。
那有什么办法不经过 DNS,就获取到网址对应的 IP 么?
答案就是修改 hosts
文件。当用户在浏览器中输入网址时,系统会首先自动从 hosts 文件中寻找对应的 IP 地址,一旦找到,系统会立即打开对应网页,如果没有找到,系统才会再将网址提交 DNS 域名解析服务器进行 IP 地址的解析。
(关于DNS地址解析协议的详解,前面的随笔中写的非常清楚了,不太懂的朋友可以去看看。快速链接:https://www.cnblogs.com/eudaimonia/p/15983188.html)
因此,想要访问 GitHub,我们可以先通过 IP 查询工具 来获取当前 GitHub 网站的真实地址,再修改本地 hosts 文件,将该地址和 GitHub 网址关联。
先找到 hosts 文件的位置,不同操作系统,hosts 文件的存储位置也不同:
- Windows 系统:
C:\Windows\System32\drivers\etc\hosts
- Linux 系统:
/etc/hosts
- Mac(苹果电脑)系统:
/etc/hosts
- Android(安卓)系统:
/system/etc/hosts
- iPhone(iOS)系统:
/etc/hosts
打开 hosts 文件,添加一行,将 xx 替换为你查询到的解析地址即可:
xx.xx.xx.xx www.github.com
但这种方式比较麻烦,而且查询出来的 IP 也未必支持国内的访问,所以下面再推荐另外一种更简单的方式!
如果出现hosts写权限失败,或者修改后也无法访问的情况,请跳转文末有结局方案
2.github520
GitHub520 就是一个帮助大家访问 GitHub 的项目,本质也是通过修改 hosts 来实现的。
该项目的作者为大家提供了一份完整的 hosts 列表,无需大家自己查询可用 IP,非常地贴心,而且每天都会更新!
通过修改本地hosts文件中的内容,让访问github达到加速的目的。操作很简单,复制下面的内容到设备的hosts文件中去。
# GitHub520 Host Start
185.199.108.154 github.githubassets.com
140.82.113.22 central.github.com
185.199.108.133 desktop.githubusercontent.com
185.199.108.153 assets-cdn.github.com
185.199.108.133 camo.githubusercontent.com
185.199.108.133 github.map.fastly.net
199.232.69.194 github.global.ssl.fastly.net
140.82.113.3 gist.github.com
185.199.108.153 github.io
140.82.114.4 github.com
140.82.112.6 api.github.com
185.199.108.133 raw.githubusercontent.com
185.199.108.133 user-images.githubusercontent.com
185.199.108.133 favicons.githubusercontent.com
185.199.108.133 avatars5.githubusercontent.com
185.199.108.133 avatars4.githubusercontent.com
185.199.108.133 avatars3.githubusercontent.com
185.199.108.133 avatars2.githubusercontent.com
185.199.108.133 avatars1.githubusercontent.com
185.199.108.133 avatars0.githubusercontent.com
185.199.108.133 avatars.githubusercontent.com
140.82.113.9 codeload.github.com
52.217.88.28 github-cloud.s3.amazonaws.com
52.216.238.99 github-com.s3.amazonaws.com
52.216.26.252 github-production-release-asset-2e65be.s3.amazonaws.com
52.217.101.68 github-production-user-asset-6210df.s3.amazonaws.com
52.217.48.84 github-production-repository-file-5c1aeb.s3.amazonaws.com
185.199.108.153 githubstatus.com
64.71.168.201 github.community
185.199.108.133 media.githubusercontent.com
# Update time: 2022-03-13 T12:24:16+08:00
# Star me GitHub url: https://github.com/521xueweihan/GitHub520
# GitHub520 Host End
上面内容会自动定时更新,保证最新有效。
下面再说两种方法都可能会出现的问题:
1.hosts文件无法修改
找到hosts文件后右键安全属性,高级设置,配置权限为允许修改和写入即可。
**注:修改完毕hosts文件后,出于安全考虑,还是请大家将权限再次关闭,以免出现恶意定位的ip伪装攻击。
2.激活hosts文件重新生效
大部分情况下是直接生效,如未生效可尝试下面的办法,刷新 DNS:
Windows:在 CMD 窗口输入:ipconfig /flushdns (win+r调出搜索台,键入cmd后回车即可进入控制台)
Linux 命令:sudo rcnscd restart
Mac 命令:sudo killall -HUP mDNSResponder
Tips: 上述方法无效可以尝试重启机器。
**3.13日晚更新:使用上述方法依然会有时候无法访问,原因应该是github的ip自动更新了,然而dns的解析仍然停留在老的ip地址,所以会出现访问困难。
最好用的解决办法:
每次访问困难时,调cmd做一次dnsflush:ipconfig /flushdns,然后再利用这个url:http://www.github.com.ipaddress.com/ 查出github新的ip地址,然后使用ip访问。
这个方法一次大概可以维持一小时,基本可以满足需求,一小时后再使用的话,再flush一次dns,访问新的ip就可以了