晓张 XiaoZhang.net http://www.xiaozhang.net [分享] [RSS]

日志

(转)用Windows Server架設NTP時間伺服器

已有 1455 次阅读2016-2-20 15:03 |个人分类:IT世界| 哓张, Windows, NTP


  「時間」這個東西,在現代的網路應用格外的重要,無論是資料庫、Logs記錄檔、檔案儲存時間等,在封閉的伺服器群環境裡這些資料都要保持一致性,因此需要有一台時間伺服器來供給內部網路進行集體查詢是必要與必然的。

  在Windows Server中,NTP被以服務的型態呈現出來,也就是說你不用透過光碟或系統的勾選安裝,就可以達到這樣的能力,關鍵在於「W32TIME」這隻服務。 你可以透過操作「w32tm.exe」這隻程式來進行各式的設定,不過我想那大概是網路管理員需要寫script自動化時才會用到,一般的情況下都是透過 登錄檔registry的修改來進行設定才是,必竟改過一次之後大概也不會再針對這一塊進行動作了。

  1. 首先由Windows Server 2012的伺服器管理員中,點選工具>服務,確認Windows Time服務目前的狀態是被開啟的。如果是關閉的狀態,請點擊兩下開啟,啟動類型選「自動」>點「啟動」鈕>「套用」>「確定」。

20131219_01

  2. 利用開始>執行>regedit來呼叫出登錄編輯程式,並進行之後的操作。

  3. 確認這台伺服器允許哪一種時間同步方法,如果這台機器不是DC的話,理論上預設就是NTP,詳細的設定與資料意義如下所示。

  4. 設定這台伺服器是否為一個可信賴的時間伺服器,將其設定為「5」(Hex;16進制),其實5就是0x1+0x4的意思。

  5. 當你要成為一台時間伺服器時,你總要確定你自己機器本身的時間是正確的吧!不然人家來詢問你的時候你一直回答錯誤的時間給別人,這也是一件很糟糕的事啊! (這樣會傷害到所有來問你時間的機器,他們全部的時間都跟你一樣錯誤。)因此,指定幾台外部的NTP伺服器是必要的。(有些特別需要高精準的情況下,甚至 會自己架設GPS接收器或原子鐘,來進行基礎時間的同步,例如Google就是這樣做。)

  ※參考下面的Registry路徑後我們可以發現,NtpServer預設資料被設定為「time.windows.com,0x9」,這代表這台伺服器預設會去跟「time.windows.com」這台機器進行時間同步,同步的模式為「0x9」。

  同步模式的代表意義如下方表格所示:

  當然啦!跑到國外跟人家的時間伺服器同步實在是有點類(網路也比較慢),因此我們可以把機器指向國內的「中華電信研究所時間與頻率國家標準實驗室」,所提供的NTP伺服器。如下方列表(參考幾台即可):

  • tock.stdtime.gov.tw
  • watch.stdtime.gov.tw
  • time.stdtime.gov.tw
  • clock.stdtime.gov.tw
  • tick.stdtime.gov.tw
  • s2m.time.edu.cn
  • cn.pool.ntp.org

  6. 如果你已經設定好這台伺服器,要去外面的時間機器進行同步查詢,那麼你要多久跟那台機器進行一次查詢呢?預設是604800秒(Dec;10進制),也就是7天才同步一次。在這裡改成「180」(Dec;10進制)單位為秒,也就是三分鐘同步一次。

  7. 設定來跟這台時間伺服器詢問時間的機器,跟你的誤差時間為多少區間內是合理的,也就是說如果差距過大,你可以拒絕將正確時間傳回來跟你詢問的電腦。這就像 是現在是西元2013年,但是在路上有一個人走過來問你說,請問現在是2000年嗎?你大概會覺得這個人有病,然後根本不想回應他吧!預設是54000秒 (Dec;10進制),也就是差15個小時他就不想理你了。在這裡改成「ffffffff」(Hex;16進制)單位為秒,也就是往前或往後差136年還 是讓你同步,夠寬了吧!

  ※在這邊要特別注意的是,機碼區分為起與迄,即為「Neg ← 現在時間 → Pos」。

  8. 設定現在這台時間伺服器(Time Service)是否要成為NTP伺服器的提供者?當然啦,這就是我們最終要達成的功能嘛,所以就是給它Enabled下去啦!預設是0(,在這裡改成「1」(Hex;16進制)。

  9. 依據RFC1035的規定,NTP服務的標準通訊埠是UDP 123。因此必須到Windows防火牆內將UDP 123設定開啟,下方連續圖片將逐步記錄防火牆設定的過程。

20131219_0220131219_0320131219_0420131219_0520131219_0620131219_0720131219_08

  10. 終於到最後一步動作,這個動作很簡單,就是「重新開啟」你的伺服器(重新開機)。如果你的伺服器正在執行重要的工作而無法進行重新開機的話,那麼可以開啟命令模式進行下列指令即可。

  ※ 補充說明:

  在Windows Server 2003~Windows Server 2008時期,Windows Time Services基本上你只要設定成自動,那麼它一開機後都會自動啟動才對。但是在我實驗的過程中,好像Windows Server 2008R2之後,似乎不會自動啟動了,只要每次重開機進去觀察,都是服務都是關閉的狀態(至少我在Windows Server 2012上的實驗是如此)。經過查詢後原因為「Windows Time is stopped if the computer is not domain joined」。以下為驗證(on Windows 7):

也就是說,可能是在Windows 7或Windows Server 2008R2之後,微軟對W32Time服務增加了一個觸發事件,當這台電腦沒有加入DC網域時,服務會自動停止。因此我們對其更改服務觸發指令,讓網路 起來服務就起來,網路卸載服務就關閉,用來進行對預設觸發事件的變更,如此一來就成功的解決問題了。


收藏 分享 转发到微博 举报

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

成都宠物论坛|手机版|成都宠物网搜索|百度|谷歌|宠我网 ( 蜀ICP备07500266号 

GMT+8, 2024-4-23 20:17 , Processed in 0.127361 second(s), 16 queries .

© 2007 By www.Petovo.com Some rights reserved

回顶部