/etc/hosts文件只是一个IP地址和对应服务器名的列表。服务器一般会在查询DNS前检查这个文件。如果找到了有对应IP地址的名称,那么就根本不会去查询DNS。不幸的是,如果主机的IP地址变化了,你也必须更新这个文件。这对单机来说不是什么大问题,但是如果是更新整个公司的话就很艰巨了。为了易于管理,通常是在文件只放loopback接口和本机机器名的记录,然后使用集中的DNS服务器来处理剩下的部分。有时你可能不能控制DNS服务器,在这种情况下,向/etc/hosts文件中添加一条记录就简单多了,直到其加入集中的DNS中。
192.168.1.101 smallfry
在上面的例子中,服务器smallfry的IP地址是192.168.1.101。你可以在ping,telnet或者其他网络相关程序中使用smallfry来代替192.168.1.101。下面的例子是使用ping命令查看smallfry是不是在网络上存在:
[root@bigboy tmp]# ping smallfry
PING zero (192.168.1.101) 56(84) bytes of data.
64 bytes from smallfry (192.168.1.101): icmp_seq=0 ttl=64 time=0.197 ms
64 bytes from smallfry (192.168.1.101): icmp_seq=1 ttl=64 time=0.047 ms
--- smallfry ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 2017ms rtt
min/avg/max/mdev = 0.034/0.092/0.197/0.074 ms, pipe 2
[root@bigboy tmp]#
你也可以在行后面添加别名,把其他名字和你的服务器关联起来。这里我们设置smallfry也可以用tiny和littleguy访问。
192.168.1.101 smallfry tiny littleguy
你永远不要在文件中重复使用同一个IP地址,因为Linux只会使用它找到的第一个记录值。
192.168.1.101 smallfry # (Wrong)
192.168.1.101 tiny # (Wrong)
192.168.1.101 littleguy # (Wrong)
localhost里面的loopback接口
通常/etc/hosts里面的第一条记录会定义服务器虚拟loopback接口的IP地址。它通常映射到名称localhost.localdomain(代替服务器自己的通用名称)和localhost(短别名)。默认情况下,Fedora会把主机名插到127.0.0.1和localhost之间:
127.0.0.1 bigboy localhost.localdomain localhost
当服务器连接到互联网上的时候,第一条记录的127.0.0.1后面应该是服务器的FQDN名称(fully qualified domain name)。例如,bigboy.mysite.com:
127.0.0.1 bigboy.my-site.com localhost.localdomain localhost
有些程序例如Sendmail非常敏感,如果觉得检测到了不正确的FQDN名称,它会缺省使用localhost.localdomain联络网络上的其他服务器。这会导致混淆,因为其他服务器也认为自己是localhost.localdomain.
注意: 你必须始终有一条把localhost和localhost。localdomain映射到127.0.0.1上的记录,以使Linux正常地安全地工作。