時間伺服器
不管你的電腦有多昂貴,總無法放下內置時鐘不怎麼準確的感覺。工作數天後,它可能會與實際時間相差數秒...
永遠不用再設定你的時鐘了
作為網絡上的一台電腦,準確的時鐘是必須的。假如文件有多於一個複本,你怎麼確定哪一個是最新的版本?再者,很多保安日誌都會寫入時間印記,以確保資料封包不會被中途截取或更改。
但由於生產商使用較差的硬體,令時鐘在一段時間後變得過快或過慢,經常相隔數天便要重設時鐘,十分費時。
如果出色的編程員還未為這問題找到解決方法,可以在網絡上找一些特別的時間伺服器。那些伺服器時鐘大致以原子能時鐘直接調較,而且能夠透過一種特別的協定,將時間告知其他電腦。
不過實際上是更複雜的事情,你可能還未忘記,由伺服器往用戶端的資訊訊號,只能在有限的時間內傳送
(那是自愛因斯坦發表相對論開始已知的)。更加複雜的是,你要考慮互聯網永不會有同樣的速度...
時間的準確度很大程度在於所用的時間伺服器,可以準確至百萬分之一秒。
通常只有講求非常準確的時間印記的研究機構才需要這種精確度。
對「標準」的桌面電腦而言,十分之一秒的準確度已足夠。因此,高度精確的時間伺服器
(稱為 Stratum-1-Server) 是受密碼保護的,不是所有人也可以向伺服器提出請求,以免伺服器負荷過重。
向一台 stratum-1-server 而非原子時鐘或
GPS 訊號 (稱為 Stratum-2-Server)
取得訊號的時間伺服器大多供所有人使用
(沒有密碼保護),而且可以用作時間伺服器。
以下有一些時間伺服器可供選擇:
安裝
所需的軟件可以在
www.ntp.org
找到,同時,傳輸協定的新版本亦已面世。如
xntp3-x.xx
的封包使用舊的協定版本,而新版本則稱為
ntp-4.0.*.tar.gz。由於新版本 4
兼容「舊」版本,你可以
(而且應該)
使用較新的版本。
很多發行本都會跟來版本 3 ntp,但由於有保安漏洞,編譯原始碼的工夫是值得的。
下載原始碼套件及卸載至
/tmp
目錄後:
>> tar zxvf ntp-4.0.*.tar.gz -C /tmp/
只需執行 configure-script:
>> cd /tmp/ntp-4.0.99k23/
完成這 script
後,系統會透過以下指令檢查編譯原始碼:
>> ./configure>> make
並透過以下指令將它們複製 (不需要的)
至預設的目錄:
>> make install
設定檔案 -
可以在 /etc/ntp.conf
找到 -
至少有以下數行:
/etc/ntp.conf |
server timeserver1.uni-sonstwo.de
|
建議你輸入多於一個時間伺服器,讓軟件自行決定哪一個較準確。使用哪一個伺服器是它自己的原則,使用最近的一個應該是最好的。以下是一些供免費使用的德國時間伺服器:
server ntp0.fau.de
設定檔案將程式設定妥當後可立刻使用,只需利用以下選項,在
ntpd
子目錄執行 (以 root
身份)
程式:
server ntps1-0.uni-erlangen.de
server ntps1-1.uni-erlangen.de
server ntps1-1.rz.Uni-Osnabrueck.de>> cd ntpd
你會看到類似如下的東西:
>> ./ntpd -d -l/var/log/ntp.log
Messages |
create_sockets(123) |
日誌檔案 (/var/log/ntp.log)
應會有類似如下的記錄:
ntpd[1733]: logging to file /var/log/ntp.log
等候一會後, ntp
將系統時間設定至準確的值。過程都在細小的步驟進行,以免遺漏數秒或時間重覆而產生問題。
ntpd[1733]: ntpd 4.0.99k23 Sam Apr 14 22:06:04 CEST 2001 (1)
ntpd[1733]: signal_no_reset: signal 13 had flags 4000000
ntpd[1733]: precision = 35 usec
ntpd[1733]: kernel time discipline status 0040
ntpd[1733]: frequency initialized -26.854 from /etc/ntp.drift
假如準確的時間與系統時鐘相差大於 1000
秒,npd
會假設是硬件時鐘出錯以外的更大問題,而不會設定時間,並自動關閉。縱然差別那麼大,仍要強行令
ntpd
設定時間,你可以使用 -g
選項啟動它。
要在電腦啟動時自動設定時鐘,只需將以下數行加到你的
/sbin/init.d/boot.local
檔案中 (當然還要按你的系統更改路徑):
/usr/local/ntp-4.0.99k23/ntpd/ntpd -g -l/var/log/ntp.log
或編寫一段 init-script。使用
SuSE 7.0
的 script 如下:
/sbini/init.d/ntpd |
. /etc/rc.status
|
網路中的 NTP
在大型的網絡中,令每一台工作站向官方的 Stratus-2-Server 取得正確的時間是沒有意義的。伺服器很容易會負荷過重,建議你在本地網絡上選取一台伺服器作為時間伺服器 (就稱它為Stratus-3-)。
運行 ntpd
的電腦就可以成為時間伺服器。
在更大型的網絡上,建立超過一台時間伺服器,向不同的 Stratus-2- (甚至是 Stratus-1-) 伺服器取得時間,對伺服器的可靠性會有幫助。
假如本地網絡中擁有 IP 192.168.0.1 的電腦用作時間伺服器,用戶端的 /etc/ntpd.conf 只需包含這台電腦作伺服器:
/etc/ntpd.conf |
server 192.168.0.1 |
因此即使官方的 Stratus-2-Server 刪除後,用戶端仍然能取得準確的時間。
留言列表