21 1 月 2013

CentOS NTP Server 架設心得

作者:南風|發布日期2012/07/21

這一陣子在研究NTP Server的架設,不過一直對NTP_Server的Stratum階層架構弄不清礎,配合指令ntpstate和ntpq -p,裡頭顯示有關stratum的資訊更是弄的亂七八糟。好不容易設計幾個實驗,終於有點弄懂了,所以作個筆記,也順便與有興趣的朋友分享。

說明如下:
在安裝了ntp的套件之後,我們到NTP_Server的設定檔「/etc/ntp.conf』下作些編輯
tech-tips-centos-ntp-server-1
tech-tips-centos-ntp-server-2

A.這三行是原來設定檔的內容,我們將它先註解掉,再開始指定我們架設的本機NTP_Server的設定。自己用本機架設NTP_Server,理論上是要自己指定要與網路上的哪一個遠端NTP_Server作網路校時,如果這台遠端的NTP_Server的Stratum是5的話,那與它連線的其本機NTP_Server的Stratum應為6。所以這台遠端的NTP_Server,也被稱之為本機NTP_Server的上一層NTP_Server。

B.為了清礎釐清Stratum,所以我們只指定一台遠端的NTP_Server,而且我們知道這台遠端的NTP_Server (ntp.amnic.net)的Stratum=1。這可以從這個網址知道NTP_Server參考。

C.本機NTP_Server預設也會以假裝本機是個Stratum=10的遠端NTP_Server,這樣如果連不上遠端的NTP_Server的話,本機NTP_Server就會連線自己,以本機時間來作網路校時。為了不讓這兩行影響我們要作的實驗,所以我們將這兩行加「#」號註解掉。讓本機的NTP_Server只跟Stratum=1的遠端NTP_Server作網路校時。

D.加入這一行,方便我們從本機NTP_Server的log資料來觀察。

※接下來,重新啟動ntpd這個daemon

# service ntpd restart

※觀察ntp_daemon的log檔資料

# tail -f /tmp/ntp.log

tech-tips-centos-ntp-server-3

※觀察本機NTP_Server與Stratum=1的遠端NTP_Server連線的狀態

# ntpstat

tech-tips-centos-ntp-server-4

※列出本機NTP_Server與上一層的遠端NTP_Server是否有連線

# ntpq -p 

tech-tips-centos-ntp-server-5

我們一個一個來解釋上圖的內容: remote:表示本機NTP_Server要連線的遠端NTP_Server refid:表示左邊的遠端NTP_Server所參考的時間來源,因為遠端NTP_Server是Stratum=1,所以其參袁的時間來源就是它的上一層(Stratum=0),而Stratum=0不是Server,而是實際的時鐘,可能是原子鐘、可能是衛星。這裡指的時間來源應是GPS。 st:這裡指的是stratum,但是是指誰的Stratum,以這次的實驗來看,應是指remote的stratum。也就是本機NTP_Server連線的遠端NTP_Server的stratum,這與NTP的log訊息是一樣的。

接著再使用vi編輯器時便可正常使用方向鍵和倒退鍵(Backspace)了。

結論:
1.ntpstate看到的stratum是指本機NTP_Server如與指定的遠的NTP_Server連線作網路校時,本機此時的stratum,是遠端NTP_Server的下一層。 2.ntpq -p看到的st(stratum)是指本機NTP_Server直接連線的遠端NTP_Server(remote欄位)的stratum,而該遠端NTP_Server的時間來源是來自「refid欄位所指明的位置」,而這位置應是本機NTP_Server的上上一層。