[原]關於區域網NTP伺服器與客戶端實現的方法

火星人 @ 2014-03-04 , reply:0


[原]關於區域網NTP伺服器與客戶端實現的方法

關於區域網NTP伺服器與客戶端實現的方法說明
環境:將Linux伺服器做為Source伺服器,將LINUX, AIX, UNIX做為客戶端,在同一個網段內達到時間的同步。
測試系統:winodws 2003  FC4_LINUX IBM_AIX
NTP簡介:NTP協議全稱網路時間協議(Network Time Procotol)。它的目的是在國際互聯網上傳遞統一、標準的時間。具體的實現方案是在網路上指定若干時鐘源網站,為用戶提供授時服務,並且這些網站間應該能夠相互比對,提高準確度。
NTP最早是由美國Delaware大學的Mills教授設計實現的,從1982件最初提出到現在已發展了將近20年,2001年最新的NTPv4精確度已經達到了200毫秒。對於實際應用,又有確保秒級精度的SNTP(簡單的網路時間協議)。本項目使用網上時間傳遞格式NTPv3公佈於1992年,當前幾乎所有的授時網站都是基於NTPv3的。
NTP所建立起的網路基本結構是分層管理的類樹形結構。網路中的節點有兩種可能:時鐘源或客戶。每一層上的時鐘源或客戶可向上一層或本層的時鐘源請求時間校正。
第0層為官方時鐘所保留。
第一層為一級時鐘源層,其上沒有任何客戶,只有主鍾源,這些鍾源之間相互不允許校正。一級鍾源的任務就是將時間信息向第二層的鐘源或客戶發布。
第二層及以下層除層數不同、時間質量不一樣外沒有本質上的區別。第N層上的時鐘源的時間來自第N-1層或第N層,並向第N層上的時鐘源和第N+1層上的客戶提供校時服務。
最常用的NTP的工作模式為客戶/伺服器模式和廣播模式。
客戶/伺服器模式:與主/被動模式基本相同。唯一區別在於,客戶方可被伺服器同步,但伺服器不能被客戶同步。
廣播模式:一對多的連接,伺服器不論客戶工作在何種模式下,主動發出時間信息,客戶由此信息調整自己的時間。
LINUX對NTP的支持
在linux下,我們可以通過自帶的NTP(Network Time Protocol)協議通過網路使自己的系統保持精確的時間。
編輯NTP伺服器上的/etc/ntp.conf文件,內容如下:
----------------------------
server 0.pool.ntp.org #校對伺服器,同Internet時間伺服器進行校對。
server 1.pool.ntp.org
server 2.pool.ntp.org
server 127.127.1.1 #這行可刪除, 使用本地系統時間。
fudge 127.127.1.1 stratum 10 #同上
driftfile /etc/ntp/drift #/etc/ntp/drift 可能是ntp.drift 這無所謂,看你的版本號
restrict 0.pool.ntp.org
restrict 1.pool.ntp.org
restrict 2.pool.ntp.org
restrict 127.0.0.1
restrict 10.7.253.56
restrict 10.7.253.56.x  mask 255.255.255.0 nomodify #讓x網段的機器都能訪問自己,進行時間校對
#restrict default ignore #這行刪除或註釋都可以
因為我用的是REDHAT FC4,可以使用ntsysv這個命令設置為ntpd服務開機自動啟動。

AIX對NTP的支持
AIX操作系統包括了xntpd程序。xntpd 守護進程是根據 RFC1035 定義的網路計時協議(NTP)版本 3 標準的完整實現,同時也保持與根據 RFC1059 和 RFC1119 分別定義的版本 1 和版本 2 伺服器的兼容性。xntpd 守護進程用定點演算法進行所有的計算,並不需要浮點代碼。
除了xntpd以外,AIX操作系統也支持ntpq,ntpdate, xntpdc等相關命令。另外,AIX還支持使用lssrc -ls命令檢查xntpd的運行狀態,以及使用ntptrace命令跟蹤遠程時間伺服器。在AIX操作系統中,xntpd的配置文件是/etc/ntp.conf。
配置AIX成為NTP伺服器的客戶端
NTP客戶端的設置
編輯 NTP 客戶端上的 /etc/ntp.conf文件, 內容如下:
----------------------------
#broadcastclient
server 10.7.253.56    # NTP伺服器的IP地址。
driftfile /etc/ntp.drift
tracefile /etc/ntp.trace
----------------------------
其中的 server 10.7.253.56 表明, 此客戶端與IP地址為10.7.253.56 的NTP伺服器進行時間同步
#ntpdate –u 10.7.253.56 #用於客戶端與NTP伺服器的命令
若是在運行以上命令出現提示:7 Dec 19:24:55 ntpdate: the NTP socket is in use, exiting
執行命令    #ps –ef | grep xntpd    #查看xntpd進程的PID
執行命令    #kill 1995    #若1995是xntpd的PID 則用kill 命令結束進程。
再執行命令  #ntpdate 10.7.253.56    #與NTP伺服器進行時間同步更新。
若提示:No Server suitable for synchronization found
這個是最容易出現的問題,比較常見的是配置好伺服器並啟動伺服器進程后,馬上啟動客戶進程,那麼客戶進程就會報錯。解決方法是,在大約3-5分鐘以後啟動進程就行.
在NTP客戶端啟動xntpd守護進程
# startsrc -s xntpd
也可通過調用smitty , 使 xntpd 在以後重啟伺服器時能自動啟動.
# smitty xntpd
查詢xntpd的狀態
當 system peer 不為 'insane' 時, 表明客戶端已與伺服器端成功地進行了同步.
# lssrc -ls xntpd
Program name: /usr/sbin/xntpd
Version: 3
Leap indicator: 00 (No leap second today.)
Sys peer: 10.7.253.56
...
設置AIX與客戶端進行時間同步的周期
#crontab –e
在配置文件里加入一下腳本語句:

00 00 * * * /usr/sbin/ntpdate –u 伺服器IP地址   #語句表示每晚的00:00 客戶端與時間源伺服器進行時間同步

Windows對NTP的支持
方法:
在運行裡面輸入cmdnet start w32time ---> net time /setsntp:伺服器IP地址 - net stop w32time - net start w32time

調整windows客戶端與時間源伺服器的時間同步周期方法:

在「開始」菜單點擊「運行」選項,輸入「regedit」點擊「確定」按鈕打開「註冊表編輯器」窗口。在
左側窗格依次定位到
「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient 」分
支,在右側窗格中雙擊「SpecialPollInterval」鍵值,彈出「編輯DWORD值」對話框,選中「十進位」選
框,此時在「數值數據」框中顯示的數字就是默認的自動更新時間了。其單位為秒,默認為604800,既七
天時間。這樣根據自己的需要將它改成合適的時間即可,比如要設為每天都自動同步一次,就把數字更改
為86400,點擊「確定」按鈕即可(如圖2)。重新打開「Internet時間」窗口,即可看到「下次同步」的
周期改為24小時了。

   如果主伺服器和客戶機器的時間相差超過1000秒,那麼這個時間同步系統會認為伺服器出現了系統故障,從而停止同步,需要注意這一點。
若伺服器與客戶機的時間相差1000秒客戶機時間修改方法
WINDOWS: (修改方法省略)
AIX:輸入命令 #smitty system
注意:AIX windows 的時區都需與伺服器時區一致 設置成 東八區(GM+8)

   可以通過查看/var/adm/syslog/syslog.log文件,查看xntpd的運行狀況。

關於ntpdate相關參數
-d 查看連接過程的debug信息,不會調整本地時鐘;有問題先用它試試找原因
-q 查詢,不調整本地時鐘
-u 使用非特權埠發送數據包,在防火牆后核對時鐘有用

註:以上命令適用於測試操作系統的發行版本。




[火星人 via ] [原]關於區域網NTP伺服器與客戶端實現的方法已經有346次圍觀

http://www.coctec.com/docs/service/show-post-34134.html