NTP summary

 NTP是用來使系統和一個精確的時間源保持時間同步的協議。建議大家在自己管理的網絡中建立至少一臺時間服務器來同步本地時間,這樣可以使得在不同的系統上處理和收集日誌和管理更加容易。
    同樣,也有很多免費的NTP客戶端可供Windows使用,你可以用它們來同步你windows的系統時間。

I.下載和安裝
     在RedHat9.0上安裝時間服務器,如果想獲得NTP的最新版本,你可以下載tar包自己編譯,這裏只介紹RPM方式安裝的NTP服務軟件。

    RedHat9.0帶的NTP版本是4.1.2,你可以用下面的命令查看是否已經安裝了這個軟件包:

    # rpm -qa|grep 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

II. 配置文件 /etc/ntp.conf

    1)定義外部服務器

     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
  
  
    2)設置可以訪問的客戶機地址,通常這些服務器都應該位於我們自己局域網內。

    restrict 192.168.0.0 mask 255.255.255.0 notrust nomodify notrap (主要沒有noquery)
   

    3)最後,也是最重要的是默認的限制配置要從你配置文件中刪除,否則它將覆蓋你所有的配置選項,你將發現如果不刪除該配置,你的時間服務器將只能和自己通訊。如果ntp.conf中有以下一行,請將它註釋:

    # restrict default ignore

    4)保存你的配置文件,然後對每個你在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

III 使用工具來啓動服務和檢查時間服務器是否正確同步

   1) 爲了使NTP服務可以在系統引導的時候自動啓動,執行:

    # chkconfig ntpd on

    啓動/關閉/重啓NTP的命令是:

    # /etc/init.d/ntpd start
    # /etc/init.d/ntpd stop
    # /etc/init.d/ntpd restart

    切記每次修改了配置文件後都需要重新啓動服務來使配置生效。可以使用下面的命令來檢查NTP服務是否啓動,你應該可以得到一個進程ID號:

    # pgrep ntpd

 

    2) 用“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.549    1.572
milo.mcs.anl.go  ntp0.mcs.anl.go  2 u  818 1024  125  41.993  -15.264    1.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.098    3.979    0.333
+taylor.cs.wisc. ben.cs.wisc.edu  2 u  454 1024  347  54.127    3.379    0.047
-ntp0.cis.strath harris.cc.strat  3 u  507 1024  377 115.274   -5.025    1.642
*clock.via.net   .GPS.            1 u  426 1024  377 107.424   -3.018    2.534
ntp1.conectiv.c  0.0.0.0         16 u    - 1024    0   0.000    0.000  4000.00
 
    一個可以證明同步問題的證據是所有遠程服務器的jitter值是4000並且delay和reach的值是0。

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================

 LOCAL(0)        LOCAL(0)        10 l    -   64    7    0.000    0.000   0.008

 ntp-cup.externa 0.0.0.0         16 u    -   64    0    0.000    0.000 4000.00

 snvl-smtp1.trim 0.0.0.0         16 u    -   64    0    0.000    0.000 4000.00

 nist1.aol-ca.tr 0.0.0.0         16 u    -   64    0    0.000    0.000 4000.00


 
    可能的原因有:

        配置文件中的restrict default ignore沒有被註釋

        有防火牆阻斷了與server之間的通訊
    此外每次重啓NTP服務器之後大約要3-5分鐘客戶端才能與server建立正常的通訊連接,否則你執行ntpdate ip的時候將返回:


上述一些字段的含義:
  refid:參考的上一層 NTP 主機的地址
  st:stratum 階層
  when:幾秒鐘前曾經做過時間同步化更新的動作;
  poll:下一次更新在幾秒鐘之後;
  reach:已經向上層 NTP 服務器要求更新的次數
  delay:網絡傳輸過程當中延遲的時間,單位爲 10^(-6) 秒
  offset:時間補償的結果,單位與 10^(-6) 秒
  jitter:Linux 系統時間與 BIOS 硬件時間的差異時間, 單位爲 10^(-6) 秒。


也可以檢查一下BIOS時間與Linux系統時間的差異,就是/var/lib/ntp/drift的內容,就能瞭解到Linux系統時間與BIOS硬件時鐘到底差多久?單位爲 10^(-6) 秒


   3)ntptrace

IV Linux客戶端配置
1) 類似 II.1,在客戶端的ntp.conf配置文件裏,增加局域網內的server ip.
 
2) 用ntpdate server-name 手工同步時間
   或者用crontab -e配置自動同步
  
   Example: #echo "40 7 * * * root /etc/init.d/ntpd restart; /sbin/hwclock -w" >>/etc/crontab

V Window客戶端配置

1.
修改註冊表如下第過12個小時同步一次)
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/W32Time/TimeProviders/NtpClient]
"SpecialPollInterval"=dword:00015180

2.
cmd下運行如下命令:
net time /setsntp:192.168.X.X
net stop w32time
net start w32time

V 遇到的一個問題
爲測試客戶端設置NTP server功能,把一臺linux機器配置成服務器。在客戶端用ntpdate命令,可以連接,但是客戶端的時間就是不變。仔細檢查,服務器端設置沒有問題。後來在google搜索,看到一篇介紹linux時間設置的文章,有了一個靈感是不是時區不一致。檢查服務器時區,它是美國芝加哥時區,而其他的機器都是中國上海。改變服務器時區,同步沒有問題了。
  設定時區步驟:
    1)運行tzselect來設置時區。假設設置的時區是$timezone(比如Asia/Shanghai)
    2)保存時區: cp /usr/share/zoneinfo/$timezone /etc/localtime

VI.References
http://blog.csdn.net/zlhg/archive/2010/02/22/5316284.aspx
http://blog.csdn.net/wind_sky/archive/2009/09/10/4537807.aspx
http://blog.tianya.cn/blogger/post_show.asp?BlogID=576400&PostID=10607829
......

發佈了36 篇原創文章 · 獲贊 3 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章