[Windows] w32tm 應用:簡單的 Script 讓 Windows 進行時間同步

在一般的狀況下會使用 NTPClock 進行校時,但這樣作會有幾個缺點:

需要佔用一個遠端桌面的連線才能常駐
有被害妄想症的客戶會持續轟炸並質疑
在嚴謹的環境中無法隨意下載軟體至伺服器上

 

最近遇到一個特別的案例,在 Windows AD 網域中的工作站時間都是跟 DC Server 進行同步,所以工作站的時間都是相同,這是毋庸置疑的。而這個案例特別的地方在於:DC Server 的時間不正確,導致下面工作站得時間全部都跟中原標準時間差了快 10 分鐘,有 AD 驗證的 NAS 因為時間差距太大則不允許登入。

在一般的狀況下會使用 NTPClock 進行校時,但這樣作會有幾個缺點:

  1. 需要佔用一個遠端桌面的連線才能常駐
  2. 有被害妄想症的客戶會持續轟炸並質疑
  3. 在嚴謹的環境中無法隨意下載軟體至伺服器上

第一點還好解決,可利用 w32tm 將其變更為 Service 即可,就不會佔用連線了。而第三點則是在很多資安嚴謹的環境中常遇到的現象,基於管理政策,並不是所有的 Server 都可隨意下載或放置軟體,要不就是要跑簽呈,會耗費許多時間。可以為了這個小東西特別准許嗎?一定是不行的!如果制度訂出來後卻有「例外」或是「開恩」的情況,那制度的落實就會有問題。(第二點我們後面談 ^^")

咳咳咳…扯遠了,其實 Windows 就有內建校時的功能,而且是簡單的幾行指令就可以完成。將指令放置在網域控制站或伺服器上定時(每五分鐘或十分鐘)跑排程,時間就可以輕鬆同步啦。運用 w32tm 進行時間校對只需以下指令:

:: 設定要同步的 NTP Server
w32tm /config /update /manualpeerlist:ntp.ntu.edu.tw
:: 開始進行同步
w32tm /resync

是的,就兩行指令,儲存為 bat 後設定排程即可定期校時了。
 

驗證方法
可先將該指令儲存為 bat 後放至於桌面上,然後將時間調慢 1 小時 (甚至一天或一個月) 之後,馬上執行 bat,幾秒鐘後時間就恢復正常了。
 

應用情境
這裡舉出幾個以前 TigerLin 使用的時機,讓大家以後遇到時也可以應用

  • 網域控制站自動校時
    這是最常使用的情境。網域控制站掌管整個網域的時間,因此網域的時間準確度特別重要。 

     
  • 遠端桌面連線數有限
    無法固定由一個帳戶開啟並執行 NTPClock 時,就會覺得這個指令很「感心」了。 

     
  • 獨立伺服器的校時
    該指令可取代 NTPClock 的功能,因此後面 TigerLin 都很習慣使用此方式校時。 

     
  • 客戶有被害妄想症時
    這個...是很特別的情境,相信有經驗的都會遇到這種客戶:做什麼動作都要問清楚就算了(廠商有告知的義務),放個執行檔就開始懷疑並強烈質疑「安不安全?有沒有木馬?不會有風險嗎?怎麼能保證?」之類的問題...倒楣一點 Server 出事了還會怪到自己頭上。TigerLin 就被一個客戶因為校時軟體盧了一個多小時...因此!!使用 Windows 內建的校時方法,總該沒話說了吧 Orz… 
     

補充說明
老大 Will 針對我這個方案進行了更深入的研究,並將整個 Windows Time Service Tools and Settings 給看完 (目前時間是晚上十一點半) 且分享出心得了,原本後面想補充的東西一個晚上被他補充完了  XD~ 想更深入了解的人可以到 Will 這邊進行更進階的修練唷 :P

P.S TigerLin 的兩行指令碼被改成一行了,這根本已經是極限無法再改了啊 XD~

 

 

 

 

 

相關連結
w32tm http://technet.microsoft.com/en-us/library/bb491016.aspx
Windows Time Service Tools and Settings http://technet.microsoft.com/en-us/library/cc773263(WS.10).aspx