Linux 或任何其他操作系统中的 /etc/hosts 文件用于映射IP地址和域名。
这是一个很一般的答案,对吧?本文将更加深入的了解一些关于该文件的用途。
Linux 中的 etc/hosts 文件是什么
在联网的早期,/etc/hosts 文件被用来将 IP 地址(比如:8.8.8.8)转换为人类可读的形式(比如:www.google.com),随着时间的推移,该功能不再被需要。现在,解析域名的整个过程都是通过 DNS(域名系统)完成的。
既然如此,我们为什么还需要保留这个文件呢?
当你想阻止某网站时;
当DNS被破坏时,它可以用作备份;
也可以将其用作本地DNS服务器。
下面我们通过例子来介绍一下关于 etc/hosts 文件的几个实际用途。
使用/etc/hosts文件重定向URL
hosts 文件需要两个组件才能工作:域名和 IP。
所以接下来(作为演示的例子,我们使用百度的地址),我们要做的是使用百度的DNS,并将其重定向到百度的IP。
$ ping -c1 www.baidu.comping www.baidu.com (180.101.49.14) 56(84) bytes of data.64 bytes from 180.101.49.14 (180.101.49.14): icmp_seq=1 ttl=58 time=8.98ms...
现在,我们打开 hosts 文件(在我们的例子中我们使用 vim 编辑器):
$ sudo vim etc/hosts127.0.0.1 localhost::1 localhost180.101.49.14 tiap.com180.101.49.14 www.tiap.com
上面例子中,最后两行是我们新添加的。
那现在当我在 ping www.tiap.com 的时候,它就会被重定向到百度的 IP:
$ ping -c1 www.tiap.comping www.baidu.com (180.101.49.14) 56(84) bytes of data.64 bytes from 180.101.49.14 (180.101.49.14): icmp_seq=1 ttl=58 time=8.98ms...
你可以使用此方法将网站从一台服务器迁移到另一台服务器。在实际将网站的DNS更改为新服务器之前,需要在新服务器上进行所有更改,该服务器可以通过系统上的域名进行访问。
使用 /etc/hosts 文件阻止不需要的网站
接下来我们要做的,是将本地 IP 地址分配给不想再访问的站点。
ping -c1 facebook.com

然后编辑 hosts 文件:
$ sudo vim /etc/hosts127.0.0.1 localhost::1 localhost127.0.0.1 facebook.com127.0.0.1 www.facebook.com
当我们再次访问 Facebook 时,显示如下:

使用 /etc/hosts 文件创建网站快捷方式
如果一个网站的域名比较长,我们可以为其取一个简短的名称,作为其快捷方式在本机使用。比如,我们为 Linuxhandbook 创建一个名为 lhb.com 的快捷方式。
$ ping -c1 linuxhandbook.com

$ sudo vim /etc/hosts
做如下更改:

完成之后,可以 ping 一下快捷方式:

通过上图可以看到,访问原域名与快捷方式的域名完全一样。




