/etc/hosts檔只是一個IP位址和對應伺服器名的清單。 伺服器一般會在查詢DNS前檢查這個檔。 如果找到了有對應IP位址的名稱,那麼就根本不會去查詢DNS。 不幸的是,如果主機的IP位址變化了,你也必須更新這個檔。 這對單機來說不是什麼大問題,但是如果是更新整個公司的話就很艱巨了。 為了易於管理,通常是在檔只放loopback介面和本機機器名的記錄,然後使用集中的HTTP://www.aliyun.com/zixun/aggregation/33842.html"> 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 smallfryPING 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 rttmin/avg/max/mdev = 0.034/0.092/0.197/0.07 4 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正常地安全地工作。