NTP詳解-轉


網管實戰:Linux時間服務器配置

【IT168 專稿】目前計算機網絡中各主機和服務器等網絡設備的時間基本處於無序的狀態。隨着計算機網絡應用的不斷涌現,計算機的時間同步問題成為愈來愈重要的事情。以Unix系統為例,時間的准確性幾乎影響到所有的文件操作。 如果一台機器時間不准確,例如在從時間超前的機器上建立一個文件,用ls查看一下,以當前時間減去所顯示的文件修改時間會得一個負值,這一問題對於網絡文件服務器是一場災難,文件的可靠性將不復存在。為避免產生本機錯誤,可從網絡上獲取時間,這個命令就是rdate,這樣系統時鍾便可與公共源同步了。但是一旦這一公共時間源出現差錯就將產生多米諾效應,與其同步的所有機器的時間因此全都錯誤。

另外當涉及到網絡上的安全設備時,同步問題就更為重要了。這些設備所生成的日志必須要反映出准確的時間。尤其是在處理繁忙數據的時候,如果時間不同步,幾乎不可能將來自不同源的日志關聯起來。 一旦日志文件不相關連,安全相關工具就會毫無用處。不同步的網絡意味着企業不得不花費大量時間手動跟蹤安全事件。現在讓我們來看看如何才能同步網絡,並使得安全日志能呈現出准確地時間。

Internet的發展使得電子貨幣,網上購物,網上證券、金融交易成為可能,顧客可以坐在家里用個人電腦進行上述活動。要保證這些活動的正常進行就要有統一的時間。不能設想用戶3點鍾匯出一筆錢銀行2點50分收到。個人電腦的時鍾准確度很低,只有10-4、10-5,一天下來有可能差十幾秒。

現在許多在線教學系統的許多功能都使用了時間記錄,比如上網時間記錄,遞交作業時間和考試時間等等。通常在線教學系統記錄的用戶數據均以網站服務器時間為准。筆者以前就曾出現過因為應用服務器時間還在23點55分,而數據庫服務器已跨過24點,導致正在進行的整個批處理日切或數據歸檔等重要處理失敗或根本無法進行的情況,其實應用和數據庫服務器時間也只是相差了幾分鍾而已。為了避免出現這種情況,系統管理員要經常關注服務器的時間,發現時間差距較大時可以手工調整,但由系統管理員手工調整既不准確、並且隨着服務器數量的增加也會出現遺忘,因此有必要讓系統自動完成同步多個服務器的時間。

上述問題的解決方法,就是需要一個能調整時鍾抖動率,建立一個即時緩和、調整時間變化,並用一群受托服務器提供准確、穩定時間的時間管理協議,這就是網絡校時協議(NTP)。如果可以你的局域網可以訪問互聯網,那么不必安裝一台專門的ntp服務器,只需安裝ntp的客戶端軟件到互聯網上的公共ntp服務器自動修正時間即可。如果不能訪問互聯網,而要將各個計算機時間的統一,就需要自己架設一台ntp服務器。

一、 網絡時間服務的實現方式及其選擇

NTP提供准確時間,首先要有准確的時間來源,這一時間應該是國際標准時間UTC。 NTP獲得UTC的時間來源可以是原子鍾、天文台、衛星,也可以從Internet上獲取。這樣就有了准確而可靠的時間源。

網絡時間服務的實現方式主要有以下三種方式:

1) 無線時鍾。服務器系統可以通過串口連接一個無線時鍾。無線時鍾接收GPS(全球衛星定位系統)的衛星發射的信號來決定當前時間。無線時鍾是一個非常精確的時間源,但是需要花一定的費用。
2) 時間服務器。可以使用網絡中NTP時間服務器,通過這個服務器來同步網絡中的系統的時鍾。http://www.eecis.udel.edu/~mills/ntp/servers.html列出了Internet上有效的一級時間服務器。
3) 局域網內的同步。如果只是需要在本局域網內進行系統間的時鍾同步,就可以使用局域網中任何一個系統的時鍾。需要選擇局域網中的一個節點的時鍾作“權威的”的時間源,然后其它的節點就只需要與這個時間源進行時間同步即可。如果一個系統在一個局域網的內部,同時又不能使用無線時鍾,這種方式是最好的選擇。

NTP選擇

如果您要求實在不高,建議您使用rdate即可,簡單又方便。如果您的精確度要求在秒以下,建議您使用SNTP。如果您有一群工作站需要同步或做較精密的時間運算,那么建議您使用NTP,操作系統最好是UNIX或者linux,其次是Win2000/xp、2003。Win95、98的NTP及時的解析度只有55ms,又不穩定,不建議使用。

二、 NTP的網絡體系結構和工作原理
NTP所建立起的網絡基本結構是分層管理的類樹形結構。網絡中的節點有兩種可能:時鍾源或客戶。每一層上的時鍾源或客戶可向上一層或本層的時鍾源請求時間校正。 UTC時間是使用多種不同的方法得到的,包括無線電和衛星系統。一些國家的用於高級服務的特別可以使用特別的接收機,包括GPS。但是,在每台計算機都安裝這些接收機一是不實際,也是經濟的。作為替代,指定的時間服務器的計算機上安裝這種接收機,並使用如NTP的協議來同步時間,從UTC分開的程度是被定義為層,一個無線電釧(從指定的發射機或衛星導航設備上接收信息)是0層,直接與無線電鍾連接的是1層,從1層計算機上接收時間的是2層,依次如此。
topo

NTP <wbr>工作原理詳解
圖1 ntp網絡體系結構


從UTC獲取標准時間 ,網路校時協議,提供在互連的網路上提供校時服務和發送供給標准時間給計算機。目前已成為Internet上時間同步的標准協議。NTP提供准確時間,首先要有准確的時間來源,這一時間應是國際標准時間UTC。NTP獲得UTC的時間來源可以是原子鍾,天文台,衛星,也可以從Internet上獲取。這樣就有了准確而可靠的時間源。

NTP如何工作

NTP提供准確時間,首先要有准確的時間來源,這一時間應該是國際標准時間UTC。 NTP獲得UTC的時間來源可以是原子鍾、天文台、衛星,也可以從Internet上獲取。這樣就有了准確而可靠的時間源。時間按NTP服務器的等級傳播。按照離外部UTC 源的遠近將所有服務器歸入不同的Stratun(層)中。Stratum-1在頂層,有外部UTC接入,而Stratum-2則從Stratum-1獲取時間,Stratum-3從Stratum-2獲取時間,以此類推,但Stratum層的總數限制在15以內。所有這些服務器在邏輯上形成階梯式的架構相互連接,而Stratum-1的時間服務器是整個系統的基礎。

計算機主機一般同多個時間服務器連接, 利用統計學的算法過濾來自不同服務器的時間,以選擇最佳的路徑和來源來校正主機時間。即使主機在長時間無法與某一時間服務器相聯系的情況下,NTP服務依然有效運轉。

為防止對時間服務器的惡意破壞,NTP使用了識別(Authentication)機制,檢查來對時的信息是否是真正來自所宣稱的服務器並檢查資料的返回路徑,以提供對抗干擾的保護機制。

在基本條件下,NTP客戶端發出時間請求,與時間服務器交換時間,這個交換的結果是,客戶端能計算出時間的延遲,它的彌補值,並調整與服務器時間同步。通常情況下,在設置的初始,在5至10分鍾有內6次交換。 一旦同步后,每10分鍾與服務器時間進行一次同步,通常要求單一信息交換。冗余服務器和不同的網絡路徑用於保證可靠性的精確度,除了客戶端/服務器商的同步以外,NTP還支持同等計算機的廣播同步。NTP在設計上是高度容錯和可升級。時間按NTP服務器的等級傳播。

 

三、 NTP的工作模式:
主/被動對稱模式(broadcast/multicast):一對一的連接,雙方均可同步對方或被對方同步,先發出申請建立連接的一方工作在主動模式下,另一方工作在被動模式下。此方式適用於配置冗余的時間服務器,可以提供更高的精確度給主機。

客戶/服務器模式(client/server):與主/被動模式基本相同。唯一區別在於,客戶方可被服務器同步,但服務器不能被客戶同步。

廣播模式:一對多的連接,服務器不論客戶工作在何種模式下,主動發出時間信息,客戶由此信息調整自己的時間,此時網絡延時d2忽略,因此在准度上有損失,但可滿足秒級應用。廣播模式而且配置非常的簡單。但是此方式的精確度並不高,對時間精確度要求不是很高的情況下可以采用。

上述三種方式,時間信息的傳輸都使用UDP協議。每一個時間包內包含最近一次的事件的時間信息、包括上次事件的發送與接收時間、傳遞現在事件的當地時間、及此包的接收時間。在收到上述包后即可計算出時間的偏差量與傳遞資料的時間延遲。時間服務器利用一個過濾演算法,及先前八個校時資料計算出時間參考值,判斷后續校時包的精確性,一個相對較高的離散程度,表示一個對時資料的可信度比較低。僅從一個時間服務器獲得校時信息,不能校正通訊過程所造成的時間偏差,而同時與許多時間服務器通信校時,就可利用過濾算法找出相對較可靠的時間來源,然后采用它的時間來校時。

四、 NTP服務器選擇
美國國家標准技術研究院(NIST)從90年代初開始,進行Internet網上時間發播服務,至今已經設置了7,8個時間服務專用網站,德國PTB也於去年開通專用授時網站,在網上發播標准時間。全世界約有100多個ntp服務器,國外主要時間服務器包括如表1:

NTP <wbr>工作原理詳解
表1國外主要時間服務器

TIME

詳細列表:http://www.eecis.udel.edu/~mills/ntp/clock1a.html

國內NTP 服務器名稱 :
time.buptnet.edu.cn 北京郵電大學
s1b.time.edu.cn 清華大學
s1c.time.edu.cn 北京大學
s1d.time.edu.cn 東南大學

注:CERNET教育網內NTP服務器列表請見:http://www.time.edu.cn/mem.htm

總結:到此為止我們理論上介紹了NTP 服務器的原理、協議和工作模式。下邊筆者會介紹如何在Linux 異構網絡中配置時間服務器、以及在Linux 、Windows 客戶端的應用。

 

我們理論上介紹了NTP 服務器的原理、協議和工作模式。下面筆者介紹如何在Linux 異構網絡中配置時間服務器、以及在Linux 、Windows 客戶端的應用。

一、 配置Linux異構網絡下的ntp時間服務器
1. 軟件下載安裝

以源代碼為例

#/tmp/wget http://ntp.buptnet.edu.cn/ntp_chinese/down/server/ntp-4.2.0.tar.gz
# tar -zxvf ntp-4.2.0.tar.gz –C /usr/local/src;cd /usr/local/src/ntp-4.2.0
 
2. 開始設定參數、編譯與安裝:

#./configure --prefix=/usr/local/ntp --enable-all-clocks --enable-parse-clocks
make clean ; make
make check
make install

安裝完成。

 

 

二、理解NTP服務的配置文件
1.NTP軟件包的結構和相關命令

NTP服務的配置文件包括四個文件如表2 。

 

NTP <wbr>工作原理詳解
表2 NTP服務的配置文件


與 NTP 及系統時間有關的執行文件包括幾個文件如表3 。

 

NTP <wbr>工作原理詳解

說明:Linux 時鍾類型在分類和設置上卻和Windows大相徑庭。和 Windows不同的是,Linux將時鍾分為系統時鍾(System Clock)和硬件(Real Time Clock,簡稱RTC)時鍾兩種。系統時間是指當前Linux Kernel中的時鍾,而硬件時鍾則是主板上由電池供電的那個主板硬件時鍾,這個時鍾可以在BIOS的“Standard BIOS Feture”項中進行設置。當Linux啟動時,硬件時鍾會去讀取系統時鍾的設置,然后系統時鍾就會獨立於硬件運作。

 

2.理解NTP服務端的設置文件/etc/ntp.conf

關於權限設定部分

權限的設定主要以 restrict 這個參數來設定,格式如下:
restrict IP地址 mask 子網掩碼 參數
其中 IP 可以是IP地址,也可以是 default ,default 就是指所有的IP
參數有以下幾個:
ignore :關閉所有的 NTP 聯機服務
nomodify:客戶端不能更改服務端的時間參數,但是客戶端可以通過服務端進行網絡校時。
notrust :客戶端除非通過認證,否則該客戶端來源將被視為不信任子網
noquery :不提供客戶端的時間查詢
注意:如果參數沒有設定,那就表示該 IP (或子網)沒有任何限制。

用server這個參數設定上級時間服務器,格式如下:
server IP地址或域名 [prefer]
IP地址或域名就是我們指定的上級時間服務器,如果 Server 參數最后加上 prefer,表示我們的 NTP 服務器主要以該部主機時間進行校准。

driftfile格式如下:
driftfile 文件名
在與上級時間服務器聯系時所花費的時間,記錄在driftfile參數后面的文件內。
注意: driftfile 后面接的文件需要使用完整的路徑文件名,不能是鏈接文件,並且文件的權限需要設定成 ntpd守護進程可以寫入。

3.ntp.conf配置文件實例:

 以互聯網的時間服務器為時間服務器的時鍾
設置要求:以time.nist.gov 為時間服務器,在ntp.conf中增加以下內容:
restrict default ignore # 關閉所有的 NTP 要求封包
restrict 192.168.1.0 mask 255.255.255.0 notrap nomodify
server time.nist.gov #設置時間服務器
server 127.127.1.1 #開啟內部遞歸網絡接口 lo
fudge 127.127.1.1 stratum 10 refid NIST # LCL 不同步
driftfile /etc/ntp.drift
logfile /var/log/ntp.log
Broadcastdelay 0.008 #廣播延遲時間#

以內部ntp服務器為數據服務器時鍾
設置要求:不對 Internet 提供服務,僅對內部子網 192.168.0.0/24 提供服務,內部子網的客戶端不能修改NTP服務器的時間參數。

在ntp.conf中增加以下內容:

restrict default ignore # 關閉所有的 NTP 要求封包
restrict 127.0.0.1   # 開啟內部遞歸網絡接口 lo
restrict 192.168.0.0 mask 255.255.255.0 nomodify #在內部子網里面的客戶端可以 進行網絡校時,但不能修改NTP服務器的時間參數。
server 198.123.30.132 #198.123.30.132作為上級時間服務器參考
restrict 198.123.30.132 #開放server 訪問我們ntp服務的權限
driftfile /var/lib/ntp/drift
broadcastdelay 0.008 #廣播延遲時間#

4.其他設置工作:

 保存退出后。啟動NTP服務service ntpd start

 如果想每次系統啟動,NTP服務自動啟動,請輸入下面命令:
chkconfig -level 35 ntpd on

 打開iptables防火牆123端口
NTP服務的端口是123,使用的是udp協議,所以NTP服務器的防火牆必須對外開放udp 123這個端口。方法如下,使用以下規則:
#/sbin/iptables -A INPUT -p UDP -i eth0 -s 192.168.0.0/24
> --dport 123 -j ACCEPT
注意:Ntpd啟動的時候通常需要一段時間進行時間同步,所以在ntpd剛剛啟動的時候還不能正常提供時鍾服務,最長大概有5分鍾吧,如果超過了這個時間請檢查一下您的配置文件。

5.查看ntp服務器工作情況

通常我們使用命令查看123端口和ntp系統進程判斷ntp服務器是否工作正常。
命令如下:
netstat -unl | grep 123 #查看123端口,操作結果如圖1

 

NTP <wbr>工作原理詳解
圖1 使用命令查看123端口


ps -ef|grep ntp #查看ntp進程是否啟動,操作結果如圖2

NTP <wbr>工作原理詳解
圖2 使用命令查看ntp系統進程


6.監控ntp服務器

ntpq用來監視ntpd操作,使用標准的NTP模式6控制消息模式,並與NTP服務器通信。
ntpq -p查詢網絡中的NTP服務器,同時顯示客戶端和每個服務器的關系,
例如: 執行命令: ntpq –p后,輸出結果為:
ntpq -p
remote refid st t when poll reach delay offset jitter
=================================
*time-A.timefreq .ACTS. 1 u 152 1024 377 43.527 -11.093 3.982
+clock.isc.org 204.123.2.5 2 u 230 1024 377 67.958 -7.729 0.071
time-a.nist.gov .ACTS. 1 u 323 1024 377 58.705 994.866 999.084
“* ”:響應的NTP服務器和最精確的服務器。 “+”:響應這個查詢請求的NTP服務器。 “blank(空格)”:沒有響應的NTP服務器。 “remote” :響應這個請求的NTP服務器的名稱。 “refid ”:NTP服務器使用的更高一級服務器的名稱。 “st”:正在響應請求的NTP服務器的級別。 “when”:上一次成功請求之后到現在的秒數。 “poll”:當前的請求的時鍾間隔的秒數。 “offset”:主機通過NTP時鍾同步與所同步時間源的時間偏移量,單位為毫秒(ms)。

 

 

 

 

三、Linux NTP客戶端的使用

1.Linux系統使用命令行配置:

在Linux 上面進行網絡校時非常簡單,執行 ntpdate 即可:
ntpdate 192.168.0.1 #192.168.0.1是NTP服務器的IP
不要忘了使用hwclock命令,把時間寫入bios
hwclock -w
如果想定時進行時間校准,可以使用crond服務來定時執行。
編輯 /etc/crontab 文件
加入下面一行:
30 8 * * * root /usr/sbin/ntpdate 192.168.0.1; /sbin/hwclock -w #192.168.0.1是NTP服務器的IP地址
然后重啟crond服務
service crond restart
這樣,每天 8:30 Linux 系統就會自動的進行網絡時間校准。

2. 桌面環境下配置方法

可以使用圖形化的時鍾設置工具,如RHEL 4.0中的日期與時間設置工具,也可以在虛擬終端中鍵“redhat-config-time”命令,或者選擇“K選單/系統設置/日期與時間”來啟動日期時間設置工具。使用該工具不必考慮系統時間和硬件時間,只需從該對話框中設置日期時間,可同時設置、修改系統時鍾和硬件時鍾。如圖3 。

 

NTP <wbr>工作原理詳解
圖3 使用圖形化的時鍾設置工具

 

 

 

 

四.Windows XP、2003、2000系統使用NTP進行時間校准:

利用操作系統提供的校時服務(Windows XP、Windows 2003適用):

1、 雙擊任務欄右下角“時間”,打開 [ 時間和日期 屬性 ] 設置對話框,如圖4。

 

NTP <wbr>工作原理詳解
圖4打開 [ 時間和日期 屬性 ] 設置對話框



2、 選擇 [ Internet時間 ] 標簽, 選中 [ 自動與Internet時間服務器同步 ] 選項,在 [ 服務器 ] 中填入時間服務器的ip地址或者域名。點擊 [ 應用 ] 並按 [ 立即更新 ] 可直接同步。如圖5 。

NTP <wbr>工作原理詳解
圖5 進行時間同步


利用操作系統提供的校時服務(Windows 2000適用):

1、 在 [ 控制面板 ] 中打開 [ 管理工具 ],再打開 [ 服務 ] ,在服務中找到 [ Windows Time ]

2、 雙擊服務名稱,在打開的“Windows Time的屬性”中設置“啟動類型”為“自動”,再按下啟動按鈕。如圖6 。

NTP <wbr>工作原理詳解
圖6 選擇Windows Time的屬性為自動啟動


3、 然后切換到命令行下在DOS命令行下讓Windows使用時間服務器:

 

 

net time /setsntp:xxx.xxx.xxx.xxx (時間服務器域名或者ip地址)
要想立刻與時間服務器同步需要重啟時間服務,相應的命令是:
net stop w32time
net start w32time

 

NTP <wbr>工作原理詳解
圖7 通過命令行實現時間同步


以后你的機器就會有一個准確的時間。說明:W32tm.exe 是用來同步本地計算機與遠程計算機或域的時間的類似命令。由於其靈活性,W32tm.exe 是時間同步的首選方法。默認情況下Windows 2000的時間服務w32time是關閉的。Windows 包含 W32Time,它是 Kerberos 身份驗證協議所需的時間服務工具。Windows 時間服務的目的是確保組織中運行 Microsoft Windows 2000 或更高版本的所有計算機都使用同一個時間。

 

 

 

 

五、windows 98/me/NT客戶端使用工具軟件Automachron實現時間同步
Windows 98/nt可以使用Automachron軟件:

1. 下載achron5,鏈接:ftp://ftp.agri.sjtu.edu.cn/pub1/Internet/time/achron5.exe
2.安裝軟件;
3.運行:程序-->Automachron-->Automachron;
4.右鍵單擊任務欄右下腳選取Automachron圖標-->Properties-->Host-->Network Host;
填入ntp.sjtu.edu.cn,Sync at startup前復選框打勾,Run at startup前復選框打勾
系統每次啟動后均會自動同步時間,如需手動同步,點擊Sync按鈕即可,如圖8 。

 

NTP <wbr>工作原理詳解
圖8 使用工具軟件Automachron實現時間同步

 

 

六、總結:

隨着網絡規模、網上應用不斷擴大,網絡設備與服務器數量不斷增加。網絡管理員在查看眾多網絡設備日志時,往往發現時間不一,即使手工設置時間,也會出現因時區或夏令時等因素造成時間誤差;有些二層交換機重啟后,時鍾會還原到初始值,需要重新設置時間。對於核心網絡設備和重要應用服務器而言,它們之間有時需要協同工作,因此時間的准確可靠性顯得尤為重要。

NTP服務的配置及使用都非常簡單,並且占用的網絡資料非常小。NTP時間服務器目前廣泛應用於網絡安全、在線教學、數據庫備份等領域。企業采取措施同步網絡和設備的時間非常重要,但確保安全設備所產生的日志能提供精確的時間更應當得到關注。本文介紹在Linux操作系統下如何建立NTP時間服務器、利用NTP時間服務器配置實例,供Linux 網管員參考建立。


免責聲明!

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



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