NTP網絡時間協定簡介
NTP協定全稱網絡時間協定(Network Time Procotol)。它的目的是在國際網際網路上傳遞統一、标準的時間。具體的實作方案是在網絡上指定若幹時鐘源網站,為使用者提供授時服務,并且這些網站間應該能夠互相比對,提高準确度。
NTP最早是由美國Delaware大學的Mills教授設計實作的,從1982件最初提出到現在已發展了将近20年,2001年最新的NTPv4精确度已經達到了200毫秒。對于實際應用,又有確定秒級精度的SNTP(簡單的網絡時間協定)。
NTP是一個跨越廣域網或區域網路的複雜的同步時間協定,它通常可獲得毫秒級的精度。RFC2030[Mills 1996]描述了SNTP(Simple Network Time Protocol),目的是為了那些不需要完整NTP實作複雜性的主機,它是NTP的一個子集。通常讓區域網路上的若幹台主機通過網際網路與其他的NTP主機同步時鐘,接着再向區域網路内其他用戶端提供時間同步服務。
NTP協 議是OSI參考模型的高層協定,符合UDP傳輸協定格式,擁有專用端口123。
随着時間的推移, 計算機的時鐘會傾向于漂移。 網絡時間協定 (NTP) 是一種確定您的時鐘保持準确的方法。
FreeBSD 附帶了 ntpd(8) NTP 伺服器, 它可以用于查詢其它的 NTP 伺服器, 并配置本地計算機的時鐘,或者為其它機器提供服務。
一般配置:NTP 是通過 /etc/ntp.conf 檔案來進行配置的, 其格式在 ntp.conf(5) 中進行了描述。 下面是一個例子:
這裡, server 選項指定了使用哪一個伺服器,每一個伺服器都獨立一行。 如果某一台伺服器上指定了 prefer (偏好) 參數, 如上面的 ntplocal.example.com, 則會優先選擇這個伺服器。如果偏好的伺服器和其他伺服器的響應存在顯著的差别, 則丢棄它的響應,否則将使用來自它的響應, 而不理會其他伺服器。 一般來說, prefer 參數應該标注在非常精确的 NTP 時源, 例如那些包含特殊的時間監控硬體的伺服器上。
而 driftfile 選項,則指定了用來儲存系統時鐘頻率偏差的檔案。 ntpd(8) 程式使用它來自動地補償時鐘的自然漂移, 進而使時鐘即使在切斷了外來時源的情況下,仍能保持相當的準确度。
另外, driftfile 選項也儲存上一次響應所使用的 NTP 伺服器的資訊。 這個檔案包含了 NTP 的内部資訊, 它不應被任何其他程序修改。
預設情況下, NTP 伺服器可以被整個 Internet 上的主機通路。 如果在 /etc/ntp.conf 中指定 restrict 參數,則可以控制允許哪些機器通路您的伺服器。
如果希望拒絕所有的機器通路您的 NTP 伺服器, 隻需在 /etc/ntp.conf 中加入:
如果隻希望子網内的機器通過您的伺服器同步時鐘, 而不允許它們配置為伺服器,或作為同步時鐘的節點來時用, 則加入
這裡, 需要把 192.168.1.0 改為您網絡上的 IP 位址, 并把 255.255.255.0 改為您的子網路遮罩。
/etc/ntp.conf 可能包含多個 restrict 選項。 要了解進一步的細節, 請參見 ntp.conf(5) 的 Access Control Support(通路控制支援) 小節。
要讓 NTP 伺服器在系統啟動時随之開啟, 需要把 ntpd_enable="YES" 加入到 /etc/rc.conf 中。如果希望向 ntpd(8) 傳遞更多參數,需要編輯 /etc/rc.conf 中的 <code>ntpd_flags</code>。
要在不重新啟動機器的前提下啟動伺服器, 需要手工運作 ntpd, 并帶上 /etc/rc.conf 中的 <code>ntpd_flags</code> 所指定的參數。 例如:
rc.conf: 37 lines, 894 characters.
1.ntptrace xxx.xxx.xxx.xxx
查找要對時的伺服器狀态,可以trace到一級時鐘伺服器,
2.ntpq -p
顯示目前時鐘伺服器狀态
3.ntpdata xxx.xxx.xxx.xxx
與時鐘伺服器對時,着先時鐘伺服器要先對時,才能用來提鐘時鐘服務
4.ntpd
既可以自動對時,又可對外提供時鐘服務,先要配置/etc/ntp.conf
restrict 0.0.0.0 mask 0.0.0.0 notrust nomodify notrap //控制通路
server xxx.xxx.xxx.xxx //對時的外部伺服器
server 127.127.1.0
fudge 127.127.1.0 stratum 10
driftfile /etc/ntpd.drift
5.開機對時,/etc/rc.conf中添加
ntpdate_enable="YES"
ntpdate_program="/usr/sbin/ntpdate"
ntpdate_flags="-b"
6.每天(好像是每天)對時且對外提供時鐘服務, 在/etc/rc.conf中添加
xntpd_enable="YES"
xntpd_program="/usr/sbin/ntpd"
xntpd_flags="-p /var/run/ntpd.pid"
7.端口
時鐘伺服器端口為123,udp , netstat -an
執行個體:教育網上做的時鐘伺服器:
vi /etc/ntp.conf
---------------------
server s1e.time.edu.cn prefer
server s2c.time.edu.cn
server s1c.time.edu.cn
server 210.72.145.44
driftfile /var/db/ntp.drift
--------------------------------
vi /etc/rc.conf
----------------------
ntpd_enable="YES"
ntpd_program="/usr/sbin/ntpd"
ntpd_config="/etc/ntp.conf"
ntpd_sync_on_start="YES"
ntpd_flags="-p /var/run/ntpd.pid -f /var/db/ntpd.drift"
------------------------------------------------------------
在MS windows中使用,直接在“更改時間和日期設定”中的“Internet時間”中将自己設好的本地時鐘伺服器位址寫入即可,注意你的本地防火牆必須放行NTP才可以。
在UNIX/linux下使用這個時鐘伺服器:
# vi /etc/ntp.conf
server 219.216.*.* prefer #這裡指向你自己建好的内網時鐘伺服器
或者追加下面内容到crontab,這樣,每過一個小時0分的時候就自動更新。
vi /etc/crontab
0 * * * * root ntpdate [ntp server IP] >/dev/null 2>&1