1、前言
NTP (Network Time Protocol) 是由美國德拉瓦大學的 D.L. Mills 教授於 1985 年提出,而 NTP 倒底有什麼功用呢? 當您的區網內有許多伺服器,而每一台伺服器各自去和 stratum 1/2 public ntp servers 對時是浪費網路資源且不智的做法。比較好的作法是在區網裡有一台伺服器和外面 stratum 1/2 ntp servers 對時,並將對時訊息廣播到區網裡。而認證方式為使用 Symmetric-Key 即兩邊 (NTP Server 及 NTP Client) 存放同樣的 Key Files 好有個依據來確認 Broadcast NTP Client 所收到的 Broadcast NTP 封包是由 NTP Server所發出來的。這個 Key Files 可以利用 ntp-genkeys 產生,然後存放至您想要存放的地方,例如 /etc/ntp.keys (記得設定權限 chmod 600)。
文章目錄
1、前言2、實作環境
3、NTP Server 設定
步驟1.設定 ntp.conf
步驟2.產生 ntp.keys
步驟3.修改 /etc/rc.conf
步驟4.啟動 ntp 服務
4、NTP Client 設定 (FreeBSD)
步驟1.設定 ntp.conf
步驟2.修改 /etc/rc.conf
步驟3.複製 ntp.keys
步驟4.啟動 ntp 服務
5、NTP Client 設定 (Windows)
使用 Windows 架設 NTP Server
6、參考
7、Me FAQ
Q1.一直出現類似 ntpd[3628]: kernel time sync enabled 2001 訊息?
Q2.啟動 ntpd 服務出現 ntpd[9554]: no IPv6 interfaces found 訊息?
Q3.安裝 NTPClock 中文版為何介面裡中文字變成問號?
2、實作環境
- FreeBSD 5.x、6.x
- ntpd 4.x.x
- NTPClock.exe (Windows NTP Client Software)
3、NTP Server 設定
步驟 1、設定 ntp.conf
設定 NTP 設定檔 ntp.conf 將離您地區較近的時間校對伺服器加入 (此例為填入台灣及亞洲時間校對伺服器)。# vi /etc/ntp.conf //修改 ntp.conf 內容如下
server tick.stdtime.gov.tw //設定 Time Server
server tock.stdtime.gov.tw
server clock.stdtime.gov.tw
server watch.stdtime.gov.tw
server time.stdtime.gov.tw
server ntp.ntu.edu.tw
server time.chttl.com.tw
server 0.asia.pool.ntp.org
server 1.asia.pool.ntp.org
server 2.asia.pool.ntp.org
broadcast 192.168.10.255 key 1 //設定區網內的 Broadcast 資訊
driftfile /var/db/ntp.drift //記載 NTP Server 的 System Clock 性能
keys /etc/ntp.keys //指定存放 Broadcast Key Files 路徑
trustedkey 1 2
requestkey 2
controlkey 2
步驟 2、產生 ntp.keys
ntpd 4.0.x 跟 ntpd 4.2.x 用來產生 Broadcast Key Files 指令是不同的,詳細原因請參考 FreeBSD src repository。ntpd 4.0.x 使用指令 ntp-genkeys 來產生 Broadcast Key Files。
# cd /tmp
# ntp-genkeys -hlf //產生 ntp MD5 key 內容如下
1 M 1&{|h|Fd8eQYX|Z< # MD5 key
2 M x>Dn%RxxLi@'~h0t # MD5 key
3 M fWi(/rcr},Q=vG|4 # MD5 key
# cp `ls -1t ntp.keys* | head -1` /etc/ntp.keys //複製到 /etc 下
ntpd 4.2.x 使用指令 ntp-keygen 來產生 Broadcast Key Files (Support IPv6)。
# cd /tmp
# dd if=/dev/urandom of=/root/.rnd bs=1024 count=1 //需先產生一個亂數檔
# ntp-keygen -M //產生 ntp MD5 key 內容如下
1 M 1&{|h|Fd8eQYX|Z< # MD5 key
2 M x>Dn%RxxLi@'~h0t # MD5 key
3 M fWi(/rcr},Q=vG|4 # MD5 key
# cp `ls -1t ntpkey_* | head -1` /etc/ntp.keys //複製到 /etc 下
若您使用 ntpd 4.2.x 在沒有產生亂數檔以前就直接執行 ntp-keygen -M 指令時系統會告知沒有亂數檔所以無法產生 Broadcast Key Files 訊息如下:
Using OpenSSL version 90705f
RAND_load_file /home/user/weithenn/.rnd not found or empty
步驟 3、修改 /etc/rc.conf
修改 rc.conf 內容以便系統重新開機時能自動啟動 NTP 服務。# vi /etc/rc.conf //修改 rc.conf 內容如下
ntpd_enable="YES"
ntpd_flags="-p /var/run/ntpd.pid -f /var/db/ntpd.drift"
步驟 4、啟動 ntp 服務
依下列方式啟動 ntp 服務 (擇一即可)。# /usr/src/etc/rc.d/ntpd start //啟動 ntp 服務 (方法一)
# /etc/rc.d/ntpd start //啟動 ntp 服務 (方法二)
啟動完成後確定 ntpd 執行序是否正在執行中。
# ps ax | grep ntpd
54100 ?? Ss 0:00.01 /usr/sbin/ntpd -p /var/run/ntpd.pid -f /var/db/ntpd.drift
檢查 ntpd 服務是否聆聽該服務 Port 123。
# sockstat |grep ntpd
root ntpd 54100 4 udp4 *:123 *:*
root ntpd 54100 5 udp4 192.168.10.254:123 *:*
root ntpd 54100 7 udp4 127.0.0.1:123 *:*
4、NTP Client 設定 (FreeBSD)
步驟 1、設定 ntp.conf
設定 NTP 設定檔 ntp.conf 設定此台機器為 Broadcast Client 及指定存放 Broadcast Key Files 路徑即可。# vi /etc/ntp.conf //修改 ntp.conf 內容如下
broadcastclient yes //指定為 Broadcast Client
driftfile /var/db/ntp.drift //記錄此台機器的 System Clock 性能
keys /etc/ntp.keys //指定存放 Broadcast Key Files 路徑
trustedkey 1 2
requestkey 2
controlkey 2
步驟 2、修改 /etc/rc.conf
修改 rc.conf 內容以便系統重新開機時能自動啟動 NTP 服務。# vi /etc/rc.conf //以便重開機時能自動載入
ntpd_enable="YES"
ntpd_flags="-p /var/run/ntpd.pid -f /var/db/ntpd.drift"
步驟 3、複製 ntp.keys
記得將剛才 NTP Server 產生的 Broadcast Key Files (ntp.keys) 複製到您指定存放 Broadcast Key Files 路徑 (/etc/ntp.keys),否則此 NTP Client 將無法跟 NTP Server 進行對時。步驟 4、啟動 ntp 服務
依下列方式啟動 ntp 服務 (擇一即可)。# /usr/src/etc/rc.d/ntpd start //啟動 ntp 服務 (方法一)
# /etc/rc.d/ntpd start //啟動 ntp 服務 (方法二)
啟動完成後確定 ntpd 執行序是否正在執行中。
# ps ax | grep ntpd
54100 ?? Ss 0:00.01 /usr/sbin/ntpd -p /var/run/ntpd.pid -f /var/db/ntpd.drift
5、NTP Client 設定 (Windows)
我們可使用 國家時間與頻率標準實驗室 的 NTP 校時軟體 (目前最新版本為 V2.1) 來讓 Windows 機器也能跟 FreeBSD 所架設的 NTP Server 對時。- 下載 http://www.stdtime.gov.tw/chinese/EXE/NTPClock.exe 後安裝它。
- 在【時間伺服器】欄位上填上 FreeBSD NTP Server IP Address >> 按下【增加】。
- 勾選【信任未同步伺服器時間】。
- 預設為 1 個小時跟指定的 NTP Server 對時若想馬上對時可按下【立即查尋主機時間】。
有關於 NTPClock 軟體的操作可參考 標準時間網路校時客戶端程式 (NTPClock) 操作說明。
使用 Windows 架設 NTP Server
若您想使用 Windows 來架設 NTP Server 也很簡單只要安裝 Meinberg NTP Download 依照指示設定即可,詳細安裝內容可參考 NTP Installer for Windows Systems : Readme。- 下載 http://www.meinberg.de/download/ntp/windows/ntp-4.2.0a@mbg-fluxcap-o-win32-setup.exe。
- 開始依照指示安裝 (使用系統帳號來啟動 NTP Service 會有問題?)。
- 系統服務多了 Network Time Protocol Daemon。
6、參考
- NTU計算機暨資訊網路中心
- 時間與頻率國家標準實驗室
- Stray Penguin - Linux Memo (ntpd-2)
- 如何在 Windows Server 2003 中設定授權時間伺服器
- 設定 Windows Time 服務,以防止大規模的時間起始位移
- ntp.conf 範例及解說
7、Me FAQ
Q1.一直出現類似 ntpd[3628]: kernel time sync enabled 2001 訊息?
Error Message:當我啟動 ntpd 服務後一直出現類似下列訊息?
ntpd[679]: kernel time sync disabled 2041
ntpd[3628]: kernel time sync enabled 6001
ntpd[3628]: kernel time sync enabled 2001
Ans:
答案是這樣的訊息是正常的,以下為在 IRC bsdchat 中尋問到的解答。
14:22 < weithenn_> 請教一下
14:22 < weithenn_> ntpd 4.2.0-a 一直跳 ntpd3628: kernel time sync enabled 2001
14:23 <@llwang> 正常吧
14:25 <@llwang> 就只是 ntpd 告訴你它在調時間罷了
以下為網路上針對這樣訊息的解釋:
- ntpd problem freebsd 5.3 and Re: I found your question about NTPd on Sep 27
- ntpd problem freebsd 5.3
- NTP issues with 5.4 (SOLVED) (fwd)
Q2.啟動 ntpd 服務出現 ntpd[9554]: no IPv6 interfaces found 訊息?
Error Message:當我啟動 ntpd 服務後出現類似下列訊息?
ntpd[9554]: no IPv6 interfaces found
Ans:
原因在於把核心 (kernel) 中內 INET6 選項給註解掉 (mark) 所導致的。
- bin/78728: ntpd -- noisy when IPv4 or IPv6 interfaces are undefined
- misc/95550: NTPD/ntpdate complain about IPv6 interface not found
Q3.安裝 NTPClock 中文版為何介面裡中文字變成問號?
Error Message:當我安裝 NTPClock 中文版後為何所有的中文字都變成問號 ?
Ans:
請檢查您的 Windows 主機其【地區及語言選項】是否為【中文(台灣)】。
【開始】 >> 【控制台】 >> 【地區及語言選項】 >> 地區選項中標準及格式內是否為【中文(台灣)】