Series Article of UbuntuOS -- 20

修改 DNS 与 hosts,解决 github 无法访问

Posted by OUC_LiuX on September 16, 2021

有时候一些 Great Wall 外面的网站打不开、Ping 不通,可以通过 修改 DNS 或 Hosts 的方式解决。

DNS

方法一:
编辑 /etc/network/interface ,在文件最后添加如下内容:

dns-nameservers 8.8.8.8     

8.8.8.8是Google提供的DNS服务。
重启后DNS就生效了,这时候再看/etc/resolv.conf,最下面就多了一行:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)       

# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN      

nameserver 8.8.8.8

方法二:
编辑文件 /etc/resolvconf/resolv.conf.d/base (默认为空)
在里面插入:
nameserver 8.8.8.8
nameserver 8.8.4.4
如果有多个DNS就一行一个
修改好保存,然后执行

$ resolvconf -u      

再看 /etc/resolv.conf ,最下面就多了2行:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)      

# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN     

nameserver 8.8.8.8
nameserver 8.8.4.4

可以看到我们的设置已经加上了,然后再ping一个域名,当时就可以解析了,无需重启。

Hosts

这个方法比较直接,哪个网站不能访问,通过站长工具找 DNS,然后直接添加相关 hosts。以 github 为例,步骤如下:

  1. 查找 DNS。

    找到墙内 DNS 为 203.208.39.104 [上海市 北京谷翔信息技术有限公司电信数据中心]。实测 ping 的时候台湾地区的 dns 也可以 ping 通,不知道是不是挂了代理的原因。

  2. 添加 hosts 。
    编辑 /etc/hosts 文件,在 127.0.0.1 localhost 后面追加两行
    xxx.xxx.xxx.xxx https://github.com git
    203.208.39.104 https://github.com
    其中 xxx.xxx.xxx.xxx 是本机 ipv4 地址。
    原则上,对任意无法访问的域名都可以通过 hosot 方式解决。比如创造财富时使用的 cn.f2pool-backup.com, 无法直接访问,就可以使用站长工具获取其 ip ,添加到 hosts 文件。

更详细的 hosts

github 根据任务指向不同有许多子域名,一份过期的 hosts 文件如下:

# github
204.232.175.78 http://documentcloud.github.com
207.97.227.239 http://github.com
204.232.175.94 http://gist.github.com
107.21.116.220 http://help.github.com
207.97.227.252 http://nodeload.github.com
199.27.76.130 http://raw.github.com
107.22.3.110 http://status.github.com
204.232.175.78 http://training.github.com
207.97.227.243 http://www.github.com

如有需要,自己一个个用 站长工具找到现行 ip ,添加到 Hosts 中即可。
值得注意的是,hosts 不需要更新命令,修改完即更新。