天天看點

freebsd的NTP(時間)服務

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] &gt;/dev/null 2&gt;&amp;1

繼續閱讀