NTP(Network Time Protocol) 網絡時間協議,工做在UDP的123端口上。是用來使計算機時間同步化的一種協議,它可使計算機對其服務器或時鐘源(如石英鐘,GPS等等)作同步化,它能夠提供高精準度的時間校訂(局域網上與標準間差小於1毫秒,互聯網上幾十毫秒),且可介由加密確認的方式來防止惡毒的協議攻擊。 |
NTP服務器linux
NTP服務器提供準確時間,首先要有準確的時間來源,這一時間應該是國際標準時間UTC。 NTP得到UTC的時間來源能夠是原子鐘、天文臺、衛星,也能夠從Internet上獲取。這樣就有了準確而可靠的時間源。時間按NTP服務器的等級傳播。按照離外部UTC 源的遠近將全部服務器納入不一樣的Stratum(層)中。Stratum-1在頂層,有外部UTC接入,而Stratum-2則從Stratum-1獲取時間,Stratum-3從Stratum-2獲取時間,以此類推,但Stratum層的總數限制在15之內。全部這些服務器在邏輯上造成階梯式的架構相互鏈接,而Stratum-1的時間服務器是整個系統的基礎。算法
計算機主機通常同多個時間服務器鏈接, 利用統計學的算法過濾來自不一樣服務器的時間,以選擇最佳的路徑和來源來校訂主機時間。即便主機在長時間沒法與某一時間服務器相聯繫的狀況下,NTP服務依然有效運轉。爲防止對時間服務器的惡意破壞,NTP使用了識別(Authentication)機制,檢查來對時的信息是不是真正來自所宣稱的服務器並檢查資料的返回路徑,以提供對抗干擾的保護機制。服務器
NTP校時方式網絡
時間服務器能夠利用如下三種方式與其餘服務器對時:broadcast/multicast,client/server和Symmetric。架構
broadcast/multicast:方式主要適用於局域網的環境,時間服務器週期性的以廣播的方式,將時間信息傳送給其餘網路中的時間服務器,其時間僅會有少量的延遲,並且配置很是的簡單。可是此方式的精確度並不高,對時間精確度要求不是很高的狀況下能夠採用。ui
Symmetric:的方式得一臺服務器能夠從遠端時間服務器獲取時鐘,若是須要也可提供時間信息給遠端的時間服務器。此一方式適用於配置冗餘的時間服務器,能夠提供更高的精確度給主機。加密
client/server:方式與symmetric方式比較類似,只是不提供給其餘時間服務器時間信息,此方式適用於一臺時間服務器接收上層時間服務器的時間信息,並提供時間信息給下層的用戶。rest
上述三種方式,時間信息的傳輸都使用UDP協議。時間服務器利用一個過濾演算法,及先前八個校時資料計算出時間參考值,判斷後續校時包的精確性,一個相對較高的離散程度,表示一個對時資料的可信度比較低。僅從一個時間服務器得到校時信息,不能校訂通信過程所形成的時間誤差,而同時與許多時間服務器通訊校時,就可利用過濾算法找出相對較可靠的時間來源,而後採用它的時間來校時server
NTP服務器配置crontab
NTP在Linux主機上默認通常都是安裝過的,只是服務沒有啓用。若是沒有安裝可直接使用yum install ntp命令便可。
NTP的主配置文件,如下是NTP服務器可選的指令:
# 容許172.16.*.*的IP使用該時間服務器; restrict 172.16.0.0 mask 255.255.0.0 nomodify #容許任何人來同步; restrict default nomodify notrap # 屏蔽其餘IP過來更新時間; restrict 0.0.0.0 mask 0.0.0.0 nomodify notrap noquery notrust #ignore:關閉全部的NTP聯機服務; #nomodify:表示Client端不能更改Server端的時間參數;不過Client端仍然能夠透過Server端來進行網絡校時; #notrust:該Client除非經過認證不然該Client來源將被視爲不信任網域; #noquery:不提供Client端的時間查詢; #notrap:容許任何人來查詢; # 同步的上層服務器(210.72.145.44國家時間服務器),NTP服務器默認也有同步的時間服務器; server 210.72.145.44 # 同步本地時間; server 127.127.1.0 prefer # 本地服務器的stratum大小不能超過16; fudge 127.127.1.0 stratum 8
啓動NTP服務器
[root@localhost ~]# chkconfig ntpd on [root@localhost ~]# service ntpd start
查看NTP信息
[root@localhost ~]# ntpq -p
NTP服務器配置完成啓動以後;NTP自身或者與其server的同步須要一個時間段這個過程多是5-10分鐘;在這個時間段內客戶端運行ntpdate命令時會產生no serversuitable for synchronization found的錯誤,上圖表示210.72.145.44的reach爲0不可用,LOCAL的reach爲17可用。
將時間同步到硬件時鐘
[root@localhost ~]# vi /etc/sysconfig/ntpd SYNC_HWCLOCK=yes
客戶端配置
[root@localhost ~]# ntpdate 172.16.16.1 [root@localhost ~]# crontab -e */1 * * * * ntpdate 172.16.16.1