Github无法加载图片解决方法

昨天上 Github 添加图片的时候发现图片不能正常加载了,访问全球最大的同性交友网站没有图片怎么能行(滑稽)。查了一下发现IP又挂了,修改 Hosts 后成功解决,此方法同样适用于 Github 无法访问的问题

原理

当我们通过网址访问网站的时候,需要通过 DNS 解析来把网址转换成 IP 地址,而Github上不去的原因之一就是 GFW 的 DNS 污染大法,这会导致 DNS 服务器返回的 IP 地址是错误的,自然也就无法连接网站,加载图片等资源了。另一个原因就是直接的IP封锁,GFW 会拦截带有相关 IP 的数据头,数据依然无法传输。

在因特网规模还小的时候,DNS 还没有诞生,域名映射到 IP 地址的工作是由 Hosts 来完成的,后来网络规模迅速扩大,仅靠 Hosts 已经不能满足需要了,此时 DNS 服务器才登上历史舞台。

虽然 DNS 抢了 Hosts 的饭碗,但是 Hosts 的优先级依然比 DNS 要高,计算机在请求 DNS 解析之前会先检查本机的 Hosts 中是否有要访问的域名和 IP 的映射关系,有的话就不需要使用 DNS 服务器,直接访问映射的IP地址即可。这就使得添加 Hosts 文件映射记录来避免 GFW 的 DNS 污染成为可能。

方法

下面是Windows 系统上的解决方案

  • 在开始菜单 Windows 图标处右键单击
  • 选择 Windows PowerShell (管理员)
  • 输入notepad.exe并回车,打开记事本
    • 这么做的原因是修改 Hosts 文件需要管理员权限,直接用记事本的话无法保存
  • 在记事本菜单栏依次点击文件打开
  • C:\Windows\System32\drivers\etc路径中找到 Hosts 文件并打开(UbuntuMacos的文件路径一般为/etc/hosts,先复制出来,替换完成后再粘贴回去替换)
  • 在最下面添加下面的映射
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    # Github
    192.30.253.112 github.com
    140.82.113.19 gist.github.com
    185.199.108.153 assets-cdn.github.com
    199.232.68.133 raw.githubusercontent.com
    199.232.68.133 gist.githubusercontent.com
    199.232.28.133 cloud.githubusercontent.com
    199.232.28.133 camo.githubusercontent.com
    199.232.68.133 avatars0.githubusercontent.com
    199.232.68.133 avatars1.githubusercontent.com
    199.232.68.133 avatars2.githubusercontent.com
    199.232.68.133 avatars3.githubusercontent.com
    199.232.28.133 avatars4.githubusercontent.com
    199.232.28.133 avatars5.githubusercontent.com
    199.232.68.133 avatars6.githubusercontent.com
    199.232.68.133 avatars7.githubusercontent.com
    199.232.28.133 avatars8.githubusercontent.com
  • ctrl+s保存,刷新网页一下就能正常访问了
  • 如果依然不能访问,需要刷新 DN S缓存 + 重启浏览器
    • Windows:ipconfig /flushdns
    • Ubuntu:sudo systemctl restart nscd
    • Macos:sudo killall -HUP mDNSResponder

更新 Hosts

由于 GFW 孜孜不倦的工作,这些 IP 隔一段时间就会被干掉,所以我们隔一段时间按就需要修改 Hosts 文件来访问被干掉的网站

  • 打开 ipaddress
  • 逐条输入 Hosts 中的相关域名
  • 用返回的新 IP 地址替换掉原来的地址
  • 保存