NTP詳解-轉

來源:互聯網
上載者:User

標籤:style   blog   http   color   使用   os   strong   io   

網管實戰: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層,依次如此。

圖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:

表1國外主要時間伺服器



詳細列表: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 。

 

表2 NTP服務的設定檔


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

 

說明: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

 

圖1 使用命令查看123連接埠


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

圖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 。

 

圖3 使用圖形化的時鐘設定工具

 

 

 

 

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

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

1、 雙擊工作列右下角“時間”,開啟 [ 時間和日期 屬性 ] 設定對話方塊,4。

 

圖4開啟 [ 時間和日期 屬性 ] 設定對話方塊



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

圖5 進行時間同步


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

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

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

圖6 選擇Windows Time的屬性為自動啟動


3、 然後切換到命令列下在DOS命令列下讓Windows使用時間伺服器:

 

 

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

 

圖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 。

 

圖8 使用工具軟體Automachron實現時間同步

 

 

六、總結:

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

NTP服務的配置及使用都非常簡單,並且佔用的網路資料非常小。NTP時間伺服器目前廣泛應用於網路安全、線上教學、Database Backup等領域。企業採取措施同步網路和裝置的時間非常重要,但確保安全裝置所產生的日誌能提供精確的時間更應當得到關注。本文介紹在Linux作業系統下如何建立NTP時間伺服器、利用NTP時間伺服器配置執行個體,供Linux 網管員參考建立。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.