站長新書 站長開講 首頁 最新文章 站長著作及審校 FreeBSD 筆記 Linux 筆記 Windows 筆記 虛擬化筆記 網管人雜誌 遊山玩水 關於本站
站長新書 VMware vSphere ICM 團購開跑了!!

NTP-架設網路對時伺服器

前言

[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)。

實作環境

安裝及設定

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 *:*

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

NTP Client 設定 (Windows)

我們可使用 [國家時間與頻率標準實驗室][NTP 校時軟體 (目前最新版本為 V2.1)] 來讓 Windows 機器也能跟 FreeBSD 所架設的 NTP Server 對時。

  1. 下載 [http://www.stdtime.gov.tw/chinese/EXE/NTPClock.exe] 後安裝它
  2. 在【時間伺服器】欄位上填上 FreeBSD NTP Server IP Address >> 按下【增加】
  3. 勾選【信任未同步伺服器時間】
  4. 預設為 1 個小時跟指定的 NTP Server 對時若想馬上對時可按下【立即查尋主機時間】

有關於 NTPClock 軟體的操作可參考 [標準時間網路校時客戶端程式 (NTPClock) 操作說明]

使用 Windows 架設 NTP Server

若您想使用 Windows 來架設 NTP Server 也很簡單只要安裝 [Meinberg NTP Download] 依照指示設定即可,詳細安裝內容可參考 [NTP Installer for Windows Systems : Readme]

  1. 下載 [http://www.meinberg.de/download/ntp/windows/ntp-4.2.0a@mbg-fluxcap-o-win32-setup.exe]
  2. 開始依照指示安裝 (使用系統帳號來啟動 NTP Service 會有問題?)
  3. 系統服務多了 Network Time Protocol Daemon

參考

[ wiki for #bsdchat Xntpd]

[ NTU計算機暨資訊網路中心]

[ 鳥哥的 Linux 私房菜 -- NTP server]

[ 中華網路學院 Chung-Hua Network College]

[ 時間與頻率國家標準實驗室]

[Stray Penguin - Linux Memo (ntpd-2)]

[ 如何在 Windows Server 2003 中設定授權時間伺服器]

[ 設定 Windows Time 服務,以防止大規模的時間起始位移]

[ Windows as NTP client / server]

[ ntp.conf 範例及解說]

[Meinberg NTP Download]

[NTP的網路資源]

[標準時間網路校時客戶端程式 (NTPClock) 操作說明]

[Windows視窗作業系統時間同步設定]

[NTP on Windows NT]

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 一直跳 ntpd[3628]: 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 主機其【地區及語言選項】是否為【中文(台灣)】

 【開始】 >> 【控制台】 >> 【地區及語言選項】 >> 地區選項中標準及格式內是否為【中文(台灣)】
Go To Oddmuse OrgGo To FreeBSD OrgCreative Commons 2.5 Taiwansitestates.com