Linux修改本機/etc/hosts的hostName


1、Linux修改本機別名/etc/hosts的hostName后經常不生效解決

 

Linux修改本機別名/etc/hosts的hostName后經常不生效,

比如我們/etc/hosts的內容如下:

#192.68.1.10 message.xxx.com
192.68.1.11 message.xxx.com

但是ping message.xxx.com還是指向192.68.1.10。

 

一般2種解決方案:

1). 重啟,這是最直接最可靠穩定的一種方法,如果有些時候不方便重啟,則可以使用第二種方法。

2). 修改/etc/sysconfig/network文件,將HOSTNAME修改成對應的別名,如下:

 

NETWORKING= yes
HOSTNAME=host1
修改后重啟網絡服務
service network restart (本質是/etc/init.d/network)
 
3). 如果重啟服務器后,還是不起作用,應該是本機的dns緩存引起的。

查看nscd是否啟用: ps -ef|grep nscd
直接關閉Linux nscd 緩存服務:
/etc/init.d/nscd stop
 

2、Linux的DNS

     linux本身是沒有dns緩存的,想使用dns緩存的話需要自己安裝一個服務程序NSCD(name service cache daemon).

    nscd緩存三種服務passwd group hosts,所以它會記錄三個庫,分別對應源/etc/passwd, /etc/hosts 和 /etc/resolv.conf每個庫保存兩份緩存,一份是找到記錄的,一份是沒有找到記錄的。每一種緩存都保存有生存時間(TTL).

     安裝:

  yum install nscd

    修改配置文件/etc/nscd.conf,開啟dns緩存,修改這一行

  enable-cache hosts yes。

如果啟用了nscd 服務,才有dns 緩存,否則是沒有dns緩存的。

 

 

     開啟 、停止、 重啟服務

     service nscd start | stop | restart

 

nscd的配置:

 

通過編輯/etc/nscd.conf文件,在其中增加如下一行可以開啟本地DNS cache:

enable-cache hosts yes

 

阿里雲主機上的配置如下:

 

[plain]  view plain  copy
 
  1. [root@iZ2571ykq ~]# cat /etc/nscd.conf   
  2. #logfile        /var/log/nscd.log  
  3. threads         6  
  4. max-threads     128  
  5. server-user     nscd  
  6. debug-level     5  
  7. paranoia        no  
  8. enable-cache    passwd      no  
  9. enable-cache    group       no  
  10. enable-cache    hosts       yes  
  11. positive-time-to-live   hosts   5  
  12. negative-time-to-live   hosts       20  
  13. suggested-size  hosts       211  
  14. check-files     hosts       yes  
  15. persistent      hosts       yes  
  16. shared          hosts       yes  
  17. max-db-size     hosts       33554432  

 

相關參數的解釋如下:

 

logfile debug-file-name:指定調試信息寫入的文件名。

debug-level value:設置希望的調試級別。

threads number:這是啟動的等待請求的線程數。最少將創建5個線程。

server-user user:如果設置了該選項,nscd將作為該用戶運行,而不是作為root。如果每個用戶都使用一個單獨的緩存(-S參數),將忽略該選項

enable-cache service <yes|no>:啟用或禁用制定的 服務 緩存。

positive-time-to-live service value:設置 service 在指定緩存中正的項目(成功的請求)的TTL(存活時間)。 Value 以秒為單位。較大的值將增加緩存命中率從而減低平均響應時間,但是將增加緩存的一致性問題。

negative-time-to-live service value:設置 service 在指定緩存中負的項目(失敗的請求)的TTL(存活時間)。 Value 以秒為單位。如果存在由不在系統數據庫中的uid(用戶ID)(例如在以root身份解包linux 內核源代碼時)所擁有的文件將明顯改善性能;應該維持較小的值以降低緩存一致性問題。

suggested-size service value:這是內部散列表的大小, value 應該保持一個素數以達到優化效果。

check-files service <yes|no>:啟用或禁用檢查屬於指定 服務 的文件的改變。這些文件是 /etc/passwd, /etc/group, 以及/etc/hosts。

 

nscd的查看和清除

 

 

nscd緩存DB文件在/var/db/nscd下。

nscd -g  查看統計信息

 

清除 nscd緩存:

nscd -i passwd
nscd -i group
nscd -i hosts

 

當然也先刪除緩存庫或者停掉nscd服務:

rm -f /var/db/nscd/hosts

service nscd restart

或者是直接停止nscd 服務  service nscd stop。

 
 
  1. 1、關於/etc/host,主機名和IP配置文件

     

    Linux操作系統下/etc/hosts文件配置方法

    Linux 的/etc/hosts是配置ip地址和其對應主機名的文件,這里可以記錄本機的或其他主機的ip及其對應主機名。不同的linux版本,這個配置文件也可能不同...

     

    1、關於/etc/host,主機名和IP配置文件

    Hosts - The static table lookup for host name(主機名查詢靜態表)

    hosts文件是Linux系統中一個負責IP地址與域名快速解析的文件,以ASCII格式保存在“/etc”目錄下,文件名為“hosts”(不同的linux版本,這個配置文件也可能不同。比如Debian的對應文件是/etc/hostname)。hosts文件包含了IP地址和主機名之間的映射,還包括主機名的別名。在沒有域名服務器的情況下,系統上的所有網絡程序都通過查詢該文件來解析對應於某個主機名的IP地址,否則就需要使用DNS服務程序來解決。通常可以將常用的域名和IP地址映射加入到hosts文件中,實現快速方便的訪問。

     

  2.  

    2、配置文件

    這個文件可以配置主機ip及對應的主機名,對於服務器類型的linux系統其作用還是不可忽略的。在局域網或是INTERNET上,每台主機都有一個IP地址,它區分開每台主機,並可以根據ip進行通訊。但IP地址不方便記憶,所以又有了域名。在一個局域網中,每台機器都有一個主機名,用於區分主機,便於相互訪問。

    Linux主機名的相關配置文件就是/etc/hosts;這個文件告訴本主機哪些域名對應那些ip,那些主機名對應哪些ip:

    比如文件中有這樣的定義

    192.168.1.100 linumu100 test100

    假設192.168.1.100是一台網站服務器,在網頁中輸入http://linumu100或http://test100就會打開192.168.1.100的網頁。

    通常情況下這個文件首先記錄了本機的ip和主機名:

    127.0.0.1 localhost.localdomain localhost

     

  3.  

    3、配置文件格式說明

    一般/etc/hosts 的內容一般有如下類似內容:

    127.0.0.1     localhost.localdomain localhost

    192.168.1.100 linmu100.com linmu100

    192.168.1.120 ftpserver ftp120

    一般情況下hosts文件的每行為一個主機,每行由三部份組成,每個部份由空格隔開。其中#號開頭的行做說明,不被系統解釋。

    hosts文件的格式如下:

    IP地址 主機名/域名

     

    第一部份:網絡IP地址;

    第二部份:主機名或域名;

    第三部份:主機名別名;

    當然每行也可以是兩部份,即主機IP地址和主機名;比如 192.168.1.100 linmu100。

    這里可以稍微解釋一下主機名(hostname)和域名(Domain)的區別:主機名通常在局域網內使用,通過hosts文件,主機名就被解析到對應ip;域名通常在internet上使用,但如果本機不想使用internet上的域名解析,這時就可以更改hosts文件,加入自己的域名解析。

     

  4.  

     hosts文件可以幫助解決哪些問題

    4.1 遠程登錄linux主機過慢問題

    有時客戶端想遠程登錄一台linux主機,但每次登錄輸入密碼后都會等很長一段時間才會進入,這是因為linux主機在返回信息時需要解析ip,如果在linux主機的hosts文件事先加入客戶端的ip地址,這時再從客戶端遠程登錄linux就會變很快。

    注:這里所說的遠程登錄不僅僅是ssh,還可能是mysql遠程登錄,或是文件共享的查詢等。

    4.2 雙機互連

    當兩台主機只是雙機互連時,這時兩台主機都需要設置自己的ip,同時在對方的hosts文件里加入自己的ip和主機名。

    5、主機名修改工具hostname;

    其實主機名的修改也有專用工具,就是hostname

    hostname - show or set the system’s host name

    顯示主機名:

    # hostname

    linmu100

    此主機的主機名是linmu100,不加參數是用來顯示當前主機的主機名;

    臨時設置主機名:

    # hostname test100

    # hostname 注:顯示主機名

    test100

    通過hostname 工具來設置主機名只是臨時的,下次重啟系統時,此主機名將不會存在;

    顯示主機IP:

    # hostname -i

    192.168.1.100


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM