
原因
由于GFW影响,Github在中国大陆地区持续的受到大规模的DNS污染,目前部分地区只能间歇性访问,有的地方则是完全阻断。
GitHub 在全球开源领域的地位举足轻重,从基础软件到最前沿的科技项目一应俱全,各种知名的开源项目也都在上面进行开发和维护。毫无疑问,GFW的行为是布局对开源精神的严重伤害,使国内开发者的学习与工作受到了极大阻碍。
因此,此文就聊聊如何在国内访问Github的问题。
原理
当我们在浏览器地址输入github.com的这一刻,DNS就开始发挥作用,将你输入的github.com翻译成可供连接的IP地址供你的电脑连接,如果返回的IP正确,你就成功获得了Github服务器的IP地址,继而进行访问。
但GFW就在这个过程中插手,当监听到你访问Github时,GFW便伪装成DNS服务器,返回了一个虚假的 IP 地址,因为这个IP错误,导致浏览器无法找到Github的服务器并进行连接,继而导致访问网站失败。因此想要顺利访问Github的关键就是如何避免GFW这个中间商,越过运营商的DNS服务器直接获得Github服务器的IP。
此时我们就要介绍一下hosts文件
了,hosts文件是一个用于储存计算机网络中各节点信息的文件,它的作用是将常用的网址域名与其对应的IP地址建立关联。当用户在浏览器中输入网址时,系统会首先从hosts文件中查找对应的IP地址,如果找到,浏览器会立即打开对应网页。如果没有找到,才会提交给DNS服务器进行解析。
如果我们将Github服务器的IP写入电脑的hosts文件内,就可以绕过DNS服务器直接让浏览器获得服务器IP了。理论存在,实践开始。
方法
软件修改hosts文件
打开电脑的Microsoft Store,在里面搜索Watt Toolkit这款软件并安装。
打开安装好的Watt Toolkit,找到网络加速页面,在平台加速里找到Github并勾选,然后点击一键加速即可,软件就会自动在hosts文件里修改了。
手动修改hosts文件
注意虽然hosts文件广泛存在于各系统中,但是位置是不一样的:
- Windows 系统:
C:\Windows\System32\drivers\etc\hosts
- Linux 系统:
/etc/hosts
- Mac(苹果电脑)系统:
/etc/hosts
- Android(安卓)系统:
/system/etc/hosts
- iPhone(iOS)系统:
/etc/hosts
这里以windows系统为例,由于hosts
文件需要管理员权限,无法直接在文件资源管理器打开。所以我们需要先在任务栏里搜索记事本,并以管理员身份运行。
点击记事本的左上角的文件,点击打开,在弹出的窗口里按照上面的路径找到hosts文件并打开。
打开就是下图样式,把以下的内容复制粘贴到hosts文件内容末尾(可能过时,可自行搜索最新版本)。
# GitHub Host Start140.82.114.25 alive.github.com140.82.113.5 api.github.com185.199.110.153 assets-cdn.github.com185.199.111.133 avatars.githubusercontent.com185.199.111.133 avatars0.githubusercontent.com185.199.111.133 avatars1.githubusercontent.com185.199.111.133 avatars2.githubusercontent.com185.199.111.133 avatars3.githubusercontent.com185.199.111.133 avatars4.githubusercontent.com185.199.111.133 avatars5.githubusercontent.com185.199.111.133 camo.githubusercontent.com140.82.112.22 central.github.com185.199.111.133 cloud.githubusercontent.com140.82.114.9 codeload.github.com140.82.113.22 collector.github.com185.199.111.133 desktop.githubusercontent.com185.199.111.133 favicons.githubusercontent.com140.82.112.3 gist.github.com52.216.163.147 github-cloud.s3.amazonaws.com52.217.124.1 github-com.s3.amazonaws.com52.216.144.83 github-production-release-asset-2e65be.s3.amazonaws.com52.217.121.249 github-production-repository-file-5c1aeb.s3.amazonaws.com52.217.206.57 github-production-user-asset-6210df.s3.amazonaws.com192.0.66.2 github.blog140.82.114.4 github.com140.82.113.18 github.community185.199.110.154 github.githubassets.com151.101.1.194 github.global.ssl.fastly.net185.199.110.153 github.io185.199.111.133 github.map.fastly.net185.199.110.153 githubstatus.com140.82.112.25 live.github.com185.199.111.133 media.githubusercontent.com185.199.111.133 objects.githubusercontent.com13.107.42.16 pipelines.actions.githubusercontent.com185.199.111.133 raw.githubusercontent.com185.199.111.133 user-images.githubusercontent.com13.107.253.40 vscode.dev140.82.112.21 education.github.com
刷新
完成上述步骤后,我们清除一下电脑的本地 DNS 缓存
按下 Windows键 + R 打开“运行”对话框,在文本框中输入 ipconfig /flushdns
,然后点击“确定”。
重启你的浏览器后,在地址栏输入网址:github.com即可访问Github了。
结尾
目前部分地区好像针对Github域名进行了SNI干扰,如果是这样的话那改host这个方法就也失效了。
中国开发者在GitHub全球用户数量规模排名第三,活跃率更是全球第一。粗暴的封禁Github是不明智且弊大于利的,国内的码云和CSDN无论是用户数还是使用体验上还是不如Github的。
我并不是不支持国内的开源平台发展,我看到网络上有一些人总是拿Github封禁伊朗和国家安全来说事,说这是跪久了站不起来。我不想评价它们的用意,这些人很显然是没有用过Github也不是它的用户群体的,爱国全靠键盘。从国家层面来说我们是需要国产化,gitee如今的发展有这个必要。但从个人角度来说,知乎评论区的一句话写的很好:
GitHub有可能因为我的国籍封我,gitee有可能因为我的代码封我。
— 知乎用户