在Linux下,我們可以通過自帶的NTP(Network Time Protocol)協議通過網絡使自己的系統保持精確的時間。可用的公共時間服務器列表可以從下面的地址獲取: http://www.eecis.udel.edu/~mills/ntp/servers.Html 什麼是NTP NTP是用來使系統和一個精確的時間源保持時間同步的協議。建議大家在自己管理的網絡中建立至少一台時間服務器來同步本地時間,這樣可以使得在不同的系統上處理和收集日志和管理更加容易。 同樣,也有很多免費的NTP客戶端可供Windows使用,你可以用它們來同步你windows的系統時間。 下載和安裝 本文介紹如何在RedHat9.0上安裝時間服務器,如果想獲得NTP的最新版本,你可以下載tar包自己編譯,這裡只介紹RPM方式安裝的NTP服務軟件。 RedHat9.0帶的NTP版本是4.1.2,你可以用下面的命令查看是否已經安裝了這個軟件包: # rpm -qagrep ntp chkfontpath-1.9.7-1 ntp-4.1.2-0.rc1.2 如果發現沒有安裝,請從光盤上安裝這個軟件。執行下面命令安裝NTP的RPM包: # rpm -ivh ntp-4.1.2-0.rc1.2.i386.rpm /etc/ntp.conf 這是NTP的主要配置文件,裡面設置了你用來同步時間的時間服務器的域名或者IP地址,下面是到互聯網同步時間的最基本的配置: 首先定義我們喜歡的時間服務器: server ntp.research.gov server otherntp.research.gov 接下來,我們設置上面兩台服務器的訪問權限,在這個例子中我們不允許它們修改或者查詢我們配置在Linux上的NTP服務器 restrict ntp.research.gov mask 255.255.255.255 nomodify notrap noquery restrict otherntp.research.gov mask 255.255.255.255 nomodify notrap noquery 掩碼255.255.255.255是用來限制遠程NTP服務器的掩碼地址。 接下來設置允許訪問我們時間服務器的客戶機地址,通常這些服務器都應該位於我們自己局域網內。請注意,配置中noquery已經去掉了: restrict 192.168.0.0 mask 255.255.255.0 notrust nomodify notrap 在上例中,掩碼地址擴展為255,因此從192.168.0.1-192.168.0.254的服務器都可以使用我們的NTP服務器來同步時間。 最後,也是最重要的是默認的限制配置要從你配置文件中刪除,否則它將覆蓋你所有的配置選項,你將發現如果不刪除該配置,你的時間服務器將只能和自己通訊。如果ntp.conf中有以下一行,請將它注釋: # restrict default ignore 保存你的配置文件,然後對每個你在ntp.conf裡配置的時間服務器執行2編查詢命令: # ntpdate ntp.research.gov 27 Jun 10:12:01 ntpdate[25475]: adjust time server ntp.research.gov offset -0.127154 sec # ntpdate ntp.research.gov 27 Jun 10:12:06 ntpdate[25478]: adjust time server ntp.research.gov offset 0.010008 sec 使NTP進程自啟動 為了使NTP服務可以在系統引導的時候自動啟動,執行: # chkconfig ntpd on 啟動/關閉/重啟NTP的命令是: # /etc/init.d/ntpd start # /etc/init.d/ntpd stop # /etc/init.d/ntpd restart 切記每次修改了配置文件後都需要重新啟動服務來使配置生效。可以使用下面的命令來檢查NTP服務是否啟動,你應該可以得到一個進程ID號: # pgrep ntpd 檢查時間服務器是否正確同步 使用下面的命令檢查時間服務器同步的狀態: # ntpq -p 輸出: remote refid st t when poll reach delay offset jitter ============================================================================== -jj.cs.umb.edu gandalf.sigmaso 3 u 95 1024 377 31.681 -18.5491.572 milo.mcs.anl.go ntp0.mcs.anl.go 2 u 818 1024 125 41.993 -15.2641.392 -mailer1.psc.edu ntp1.usno.navy. 2 u 972 1024 377 38.206 19.589 28.028 -dr-zaius.cs.wis ben.cs.wisc.edu 2 u 502 1024 357 55.0983.9790.333 +taylor.cs.wisc. ben.cs.wisc.edu 2 u 454 1024 347 54.1273.3790.047 -ntp0.cis.strath harris.cc.strat 3 u 507 1024 377 115.274 -5.0251.642 *clock.via.net .GPS.1 u 426 1024 377 107.424 -3.0182.534 ntp1.conectiv.c 0.0.0.0 16 u- 10240 0.0000.000 4000.00 一個可以證明同步問題的證據是所有遠程服務器的jitter值是4000並且delay和reach的值是0。 remote refid st t when poll reach delay offset jitter ============================================================================== LOCAL(0)LOCAL(0)10 l- 6470.0000.000 0.008 ntp-cup.externa 0.0.0.0 16 u- 6400.0000.000 4000.00 snvl-smtp1.trim 0.0.0.0 16 u- 6400.0000.000 4000.00 nist1.aol-ca.tr 0.0.0.0 16 u- 6400.0000.000 4000.00 可能的原因有: 配置文件中的restrict default ignore沒有被注釋 有防火牆阻斷了與server之間的通訊 此外每次重啟NTP服務器之後大約要3-5分鐘客戶端才能與server建立正常的通訊連接,否則你執行ntpdate ip的時候將返回: 27 Jun 10:20:17 ntpdate[21920]: no server suitable for synchronization found