1、
Linux修改本機別名/etc/hosts的hostName后經(jīng)常不生效解決
linux修改本機別名/etc/hosts的hostName后經(jīng)常不生效,
比如我們/etc/hosts的內容如下:
#192.68.1.10 message.xxx.com
192.68.1.11 message.xxx.com
但是pingmessage.xxx.com還是指向192.68.1.10。
一般2種解決方案:
1). 重啟,這是最直接最可靠穩(wěn)定的一種方法,如果有些時候不方便重啟,則可以使用第二種方法。
2). 修改/etc/sysconfig/network文件,將HOSTNAME修改成對應的別名,如下:
NETWORKING=yes
HOSTNAME=host1
修改后重啟網(wǎng)絡服務
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
阿里云主機上的配置如下:
[root@iZ2571ykq ~]# cat /etc/nscd.conf
#logfile /var/log/nscd.log
threads 6
max-threads 128
server-user nscd
debug-level 5
paranoia no
enable-cache passwd no
enable-cache group no
enable-cache hosts yes
positive-time-to-live hosts 5
negative-time-to-live hosts 20
suggested-size hosts 211
check-files hosts yes
persistent hosts yes
shared hosts yes
max-db-size hosts 33554432
相關參數(shù)的解釋如下:
logfile debug-file-name:指定調試信息寫入的文件名。
debug-level value:設置希望的調試級別。
threads number:這是啟動的等待請求的線程數(shù)。最少將創(chuàng)建5個線程。
server-user user:如果設置了該選項,nscd將作為該用戶運行,而不是作為root。如果每個用戶都使用一個單獨的緩存(-S參數(shù)),將忽略該選項
enable-cache service <yes|no>:啟用或禁用制定的 服務 緩存。
positive-time-to-live service value:設置 service 在指定緩存中正的項目(成功的請求)的TTL(存活時間)。 Value 以秒為單位。較大的值將增加緩存命中率從而減低平均響應時間,但是將增加緩存的一致性問題。
negative-time-to-live service value:設置 service 在指定緩存中負的項目(失敗的請求)的TTL(存活時間)。 Value 以秒為單位。如果存在由不在系統(tǒng)
數(shù)據(jù)庫中的uid(用戶ID)(例如在以root身份解包linux 內核源代碼時)所擁有的文件將明顯改善性能;應該維持較小的值以降低緩存一致性問題。
suggested-size service value:這是內部散列表的大小, value 應該保持一個素數(shù)以達到優(yōu)化效果。
check-files service <yes|no>:啟用或禁用檢查屬于指定 服務 的文件的改變。這些文件是 /etc/passwd, /etc/group, 以及/etc/hosts。
nscd的查看和清除
nscd緩存DB文件在/var/db/nscd下。
nscd -g 查看統(tǒng)計信息
清除 nscd緩存:
nscd -i passwd
nscd -i group
nscd -i hosts
當然也先刪除緩存庫或者停掉nscd服務:
rm -f /var/db/nscd/hosts
service nscd restart
或者是直接停止nscd 服務 service nscd stop。