编程崽

登录

一叶在编程苦海沉沦的扁舟之上,我是那只激情自射的崽

host 文件

host 文件

浏览器访问网站,要首先要把访问的网站域名解析成其指定的 IP 地址,浏览器才能对此网站进行定位并且访问其数据。

操作系统规定,这种网络请求,会先检查系统自己的 hosts 文件中,是否有这个域名和 IP 的映射关系。

如果有,则直接访问这个IP地址指定的网络位置,如果没有,再向已知的 DNS 服务器提出域名解析请求。

hosts 文件可以用文本编辑工具打开并修改,内容就是一个个 IP 和域名的对应关系。

我们可以修改这个文件中的映射关系,来免除一些域名请求的 DNS 步骤,加快访问,或者自定义一些映射关系,配合一些软件开发。

有时候,比如我们在 hosts 文件中指定了某个我们随便编的域名,访问某个网站 ip,可能会发现无法正常打开。

这可能是因为,对方的网站想到正常打开,是需要域名必须是他们指定的域名才行,这个对方是可以在 nginx 中配置的。

实际你是已经访问到这个 ip 的了,但对方经过判断,知道你这个域名不是自己的,就不给你正常提供服务了。

各系统文件位置和默认内容

文件位置:

  • linux 系统(Ubuntu 18.04.5 LTS \n \l):/etc/hosts
  • Mac 系统:/etc/hosts
  • Windows 系统:C:\Windows\System32\drivers\etc\hosts
  • Android 系统:/system/etc/hosts
  • iOS 系统:/etc/hosts

默认内容

以下是 Mac 系统的 hosts 文件内容,其他系统的关键内容类似。

默认内容:

sh 复制代码
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost

查询最佳 host

修改 host,对 DNS 解析比较慢、或者自动解析到的服务器距离自己太远(比如自己住北京,某个网站在北京明明有服务器,可 DNS 硬是给解析到一个美国的服务器,导致打开网站很慢)。

比如广为诟病的 github.com,国内常常打开很慢,或者压根就打不开,那么很可能就是 DNS 解析失败、解析的慢、解析到的 IP 地址舍近求远了。

这时修改 host 就比较有必要了,使用此网站查询某个域名对应的 IP、和此 IP 的访问速度。

使用 nslookup 指令

以下是使用系统自带的 nslookup 工具,分别查询 github.comgithub.global.ssl.fastly.Net 两个域名的服务 ip:

sh 复制代码
# 查询 github.com 提供服务的 ip
@bogon ~ % nslookup github.com
Server:		192.168.1.1
Address:	192.168.1.1#53

Non-authoritative answer:
Name:	github.com
Address: 13.250.177.223

# 查询 github.global.ssl.fastly.Net 提供服务的 ip
@bogon ~ % nslookup github.global.ssl.fastly.Net
Server:		192.168.1.1
Address:	192.168.1.1#53

Non-authoritative answer:
Name:	github.global.ssl.fastly.Net
Address: 115.126.100.160

查询到 ip,再直接修改系统的 host 文件,添加下面两行即可:

sh 复制代码
13.250.177.223   github.com
115.126.100.160  github.global.ssl.fastly.Net

使用第三方网站

查询工具网站:http://tool.chinaz.com/dns

1. 输入 github.com,点击「检测」查询

Snipaste_2021-03-01_11-45-59.png

可见,这里会展示几个比较良好的 ip,但注意,这些并不一定适合自己,因为这些 ip,应该是相对于人家这个网站服务器来说的,而不是相对于「你」现在这台电脑使用的网络。

比如我 ping 203.208.39.99 这个 ip,可以 ping 通,延迟还挺低,但设置为 host 后,github.com 却完全打不开了(见下面 设置了「不合适」的 host 时 的图)。

所以我们需要依次使用这几个 ip 来设置 host,实验检验真理,而我当前的设置使用的可用的是 13.229.188.59 这个ip。

设置了「不合适」的 host 时:

Snipaste_2021-03-01_11-54-09.png

设置了「合适」的 host 时: Snipaste_2021-03-01_11-54-47.png

2. 点击「更多节点」查询更多节点

如果这几个 ip 都不合适(可能性比较小),那可以尝试点击「更多节点」,来跳转到另一个网站,查询更多节点。

这里跳转了新网站,虽然但不建议直接在这个网站的输入框搜索,因为我这儿搜索后,直接显示「系统正在维护中…」。

但此时,如果直接再刷新下页面,你要搜的东西就出来了。。。所以,搜索框不能用,但搜索失败后,再刷新页面就可以了。

点击后跳转网站,下拉到「ip占比」,这几个 ip 都可以尝试。

Snipaste_2021-03-01_12-02-13.png

3. 最后,同理添加 github.global.ssl.fastly.net 的 host

4. 清除系统的 DNS 缓存,让 host 修改生效(非必须)

Windows环境下,可以使用以下命令:

sh 复制代码
ipconfig /flushdns

Mac OS X 环境下,通常可以使用以下命令:

sh 复制代码
sudo dscacheutil -flushcache

Linux 根据系统DNS缓存机制的不同设置,自查。

修改 host 的软件

正常修改 host 会比较麻烦,需要去找到文件修改什么的。。。也不太麻烦。

这里有一个可视化软件,可以方便的管理 host,类似设置好几个 host 文件,自己选择当前使用哪一套。

软件 SwitchHosts:https://github.com/oldj/SwitchHosts/releases

默认为英文,可在设置中选择中文。

Snipaste_2021-02-27_13-50-04.png