天天看點

NTP 服務介紹和配置時間同步

本文介紹了時間伺服器常用的二種協定:SNTP和TIME,并就區域網路環境下Linux時間服務的設定進行了說明,最終實作整個區域網路環境下所有電腦時鐘的同步與校準。

網絡時間服務Net Time Service與網絡檔案下載下傳服務FTP、網絡浏覽服務WWW等一樣,是一種網絡服務,提供網絡時間服務的電腦叫網絡時間伺服器。當然有些時間伺服器是純硬體結構的,通過GPS衛星資訊來擷取時間,其外觀與一台交換機相似,不在文本介紹之列。本文主要介紹一台電腦如何通過網絡擷取上級時間伺服器提供的标準時間,再服務于本機關的區域網路,使一個機關的所有電腦都能與标準時間保持同步,時間誤差一般小于0.5秒。

TCP/IP協定中,用于同步時間的協定為NTP協定,它是由美國德拉瓦大學的David L. Mills教授于1985年提出,除了可以估算封包在網絡上的往返延遲外,還可獨立地估算計算機時鐘偏差,進而實作在網絡上的高精準度計算機校時,它是設計用來在Internet上使不同的機器能維持相同時間的一種通訊協定。時間伺服器(timeserver)是利用NTP的一種伺服器,通過它可以使網絡中的電腦保持時間同步。

NTP是一個跨越廣域網或區域網路的複雜的同步時間協定,它通常可獲得毫秒級的精度。

SNTP(Simple Network Time Protocol)是NTP的一個子集,目的是為了那些不需要NTP實作複雜性網絡時間同步的主機。通常用于區域網路上的若幹台主機通過網際網路與其他的 NTP主機同步時鐘,接着再向區域網路内其他用戶端提供時間同步服務。SNTP一般使用UDP的123端号,Linux系統和Windows系統都支援它,是現在架設網絡時間伺服器的主流協定。

Time Protocol (RFC-868)協定是一種較簡單的協定。此協定提供了一個獨立于站點的,機器可讀的日期和時間資訊。時間服務傳回的是從1900年1月1日午夜到現在的秒數。該協定通過TCP或UDP的37端口提供服務。Linux下的TIME服務提供該服務,Windows系統中較少使用。 

現在網上的許多時間校準軟體,有些支援SNTP協定、有些支援TIME協定,有些二者都支援,我們在選擇時要特别注意。另外在Windows系統的對等網中,還有使用 “net time 機器名 /set /yes”指令使用netbios協定進行時間校準,由于這種方法不支援混合網絡和跨網段網絡,本文也不特别介紹。

2、時間伺服器有何用

也許有人認為電腦的時鐘有點誤差影響不大,其實這是非常錯誤的。電腦系統中的檔案儲存、檔案傳輸、電子郵箱中的時間戳都是以電腦時鐘為準的。如果今後我們想進行檔案查找、日志查詢,如果系統時鐘不準,或同一網絡中的電腦時間不同步,将給後續工作帶有許多麻煩。現在許多備份軟體、編譯軟體、FTP工具都是以檔案儲存時間為依據進行比較的,如果時間不統一,将使這些軟體難以正常工作。

3、需要做伺服器時間同步的各種情況:

3.1、伺服器可連接配接外網時時間同步:

一般企業中,能連接配接外網的伺服器不多,但是如果能連接配接到外網,我們那可以比較簡單的實作時間同步:

# crontab -e    

加入一行:    

*/1 * * * * ntpdate 210.72.145.44     

210.72.145.44 為中國國家授時中心伺服器位址,這樣該機每隔1分重就可以與國家授時中心進行同步了。    

注意: 在使用ntpdate 指令時, ntpd 服務必須是關閉的, 否則會報the NTP socket is in use, exiting 錯誤。

關閉 ntpd 服務指令如下:

[root@node2 init.d]# /etc/init.d/ntpd stop

Shutting down ntpd:                                        [  OK  ]

建議啟動 NTP服務後,先用date指令手工校正一下時間,以後系統會自動與網際網路上的主時間伺服器保持同步。ntp服務還有一個好處,如果目前系統的時間與标準時間有所誤差,它不是馬上把時間校正,而是逐漸縮小與标準時間的誤差,以免系統内部出現時間突變。

以下分Linux為例介紹,而且隻介紹sntp服務的架設,timeserver服務和netbios對時服務由于應用很少,不做介紹。

3.2.1、安裝ntp對應rpm

檢查是否已經安裝有ntp軟體包。輸入“rpm -qa|grep ntp”,如果已經安裝應該顯示“ntp-4.1.2-0.rc1”。

[root@rac1 ~]# rpm -qa|grep ntp

ntp-4.2.2p1-9.el5_4.1

安如果沒有裝ntp軟體,從linux安裝盤的Server檔案夾中找rpm包,輸入“rpm -ivh ntp-xxx.rpm”執行安裝。

或者通過yum直接安裝,更友善。

3.2.2、配置ntp.conf檔案 搭建内網時間伺服器

配置ntp服務。備份原/etc/ntp.conf檔案,vi /etc/ntp.conf:

①、第一種配置:允許任何IP的客戶機都可以進行時間同步

#restrict default kod nomodify notrap nopeer noquery

restrict default modify notrap

②、第二種配置:隻允許192.168.2.0網段的客戶機進行時間同步

在restrict default nomodify notrap noquery(表示預設拒絕所有IP的時間同步)之後增加一行:

restrict 192.168.2.0 mask 255.255.255.0 nomodify notrap

在最後添加如下内容

server  127.127.1.0     # local clock

server  192.168.0.100    #這是本機的ip位址,所有本機房内的伺服器都可以ping通這個機器,來做時間同步。

3.2.3、啟動ntp服務:

輸入“service ntpd restart”。

為了保證以後Linux機啟動後ntp服務能自動啟動,還要輸入“chkconfig ntpd on”。

ntpd啟動後,客戶機要等幾分鐘再與其進行時間同步,否則會提示“no server suitable forsynchronization found”錯誤。

3.2.4、客戶機與時間伺服器同步:

其實在上面介紹Linux系統中的ntp服務時,已經提到ntp時間服務時同時也是一個時間服務的用戶端,隻要把/etc/ntp.conf檔案中的 “server pool.ntp.org”改為“server 内部時間伺服器IP位址”即可。如不想使用ntp服務,也可使用ntp軟體包中帶來的ntpdate指令,隻要手工執行“ntpdate 時間伺服器IP位址”即可。如想每天自動對時,可以把這條指令放在cron中,注意在同一台電腦上ntp服務與ntpdate指令不能同時使用。

# ntpdate -u 192.168.0.100 

直接執行此指令做同步,可以通過crontab 設定定時計劃,每分鐘同步一次:

*/1 * * * * ntpdate -u  192.168.0.100

附:

啟動/關閉/重新開機NTP的指令:    

# /etc/init.d/ntpd start    

# /etc/init.d/ntpd stop    

# /etc/init.d/ntpd restart    

#service ntpd restart

将同步好的時間寫到CMOS裡    

vi /etc/sysconfig/ntpd    

SYNC_HWCLOCK=yes    

每次修改了配置檔案後都需要重新啟動服務來使配置生效。

可以使用下面的指令來檢查NTP服務是否啟動,你應該可以得到一個程序ID号:    

# pgrep ntpd    

使用下面的指令檢查時間伺服器同步的狀态:    

# ntpq -p    

用ntpstat 也可以檢視一些同步狀态,用netstat -ntlup檢視端口使用情況!  

安裝完畢用戶端需過5-10分鐘才能從伺服器端更新時間!   

相關配置參數說明:

#  restrict權限控制文法為:

#  restrict IP mask netmask_IP parameter

#  其中 IP 可以是軟體位址,也可以是 default ,default 就類似 0.0.0.0 咯!

#  至于 paramter 則有:

#   ignore :關閉所有的 NTP 聯機服務

#   nomodify:表示 Client 端不能更改 Server 端的時間參數,不過,

#        Client 端仍然可以透過 Server 端來進行網絡校時。

#   notrust :該 Client 除非通過認證,否則該 Client 來源将被視為不信任網域

#   noquery :不提供 Client 端的時間查詢

#  如果 paramter 完全沒有設定,那就表示該 IP (或網域) 『沒有任何限制!』

#  設定上層主機主要以 server這個參數來設定,文法為:

#  server [IP|FQDN] [prefer]

#  Server 後面接的就是我們上層 Time Server 啰!而如果 Server 參數

#  後面加上 perfer 的話,那表示我們的 NTP 主機主要以該部主機來作為

#  時間校正的對應。另外,為了解決更新時間封包的傳送延遲動作,

繼續閱讀