解决GitHub无法访问的问题

2022年11月16日发现github间歇性无法访问,这对于着急下载某些软件的人来讲很是折磨,于是通过百度得到一个修改hosts文件的方法,本文就是建立在解决本问题基础上,顺带科普一下DNS服务器。

DNS服务器的工作原理

我们在浏览器输入网址时,会向 DNS 服务器发送一个请求,DNS 服务器会给我们返回目标网站所在的服务器 IP ,然后浏览器才知道打开哪个网页。 原理如下图所示

DNS服务器工作原理

问题分析

现在由于DNS服务器的问题,有的是确实服务器有问题,有的是人为因素干扰了DNS服务器正常工作。然而我们的电脑也可以绕过DNS服务器,因为hosts文件提供了域名和IP地址的对应列表,如果此文件存在,则电脑直接访问域名对应的IP地址,如果不存在则访问DNS服务器,但是访问哪一个服务器呢?这个是在网络设置中设置好的,如果一个DNS服务器总出问题,那么我可以更换DNS服务器IP,也就是重新选择一台DNS服务器。但是对于一些自动获取IP地址的情况,这个DNS服务器不一定能够更换,这就有对于特定的网址设置hosts文件列表的必要了.

设置访问GitHub

由于某些原因造成了国内访问GitHub不是很流畅,于是我们可以针对GitHub配置hosts文件,为了解决此问题已经有人专门配置了项目,其官方网站为 https://gitlab.com/ineo6/hostshttps://github.com/ineo6/hosts 我的电脑目前可用的IP地址为:

/etc/hosts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# New!欢迎使用基于DNS的新方案
# https://gitlab.com/ineo6/hosts/-/raw/master/next-hosts
# 地址可能会变动,请务必关注GitHub、Gitlab获取最新消息
# 也可以关注公众号:湖中剑,保证不迷路
# GitHub Host Start
140.82.113.3 central.github.com
140.82.113.3 assets-cdn.github.com
151.101.1.6 github.map.fastly.net
151.101.1.6 github.global.ssl.fastly.net
140.82.113.3 gist.github.com
185.199.108.153 github.io
140.82.113.3 github.com
140.82.113.3 api.github.com
140.82.113.3 codeload.github.com
72.21.206.80 github-cloud.s3.amazonaws.com
72.21.206.80 github-com.s3.amazonaws.com
72.21.206.80 github-production-release-asset-2e65be.s3.amazonaws.com
72.21.206.80 github-production-user-asset-6210df.s3.amazonaws.com
72.21.206.80 github-production-repository-file-5c1aeb.s3.amazonaws.com
185.199.108.153 githubstatus.com
140.82.112.18 github.community
140.82.113.3 raw.github.com
#
# Please Star : https://github.com/ineo6/hosts
# Mirror Repo : https://gitlab.com/ineo6/hosts
#
# Update at: 2022-11-16 11:14:10
#
# GitHub Host End

有时候因为某些原因,网址对应的IP地址可能会发生变动,这时候需要重新设置hosts文件,就像上面这相配置说的那样,到网站 https://gitlab.com/ineo6/hosts/-/raw/master/next-hosts 找到最新的设置,然后替换掉原来的hosts内容就可以了。