在 Windows 系統上架設 NTP 伺服器
需求背景
此例中,我們要替電影院架設 TMS 系統,所以我們會有一台作為中控的 Windows 電腦,跟數台放在各個影廳的投影機伺服器。
一般來說,設備只要能上網,時間就能透過網際網路定時進行校準,一片蛋糕。但電影院的投影機伺服器為了做到內容保護,在 DCI 認證的規範之下,通常就只用封閉的內網來進行控制、傳輸與播放,於是我們就得迂迴地提供正確的時間給它們。
如果我們的中控電腦有兩張網卡,一張上網去讀時間,一張內網作為 NTP 伺服器,把時間資訊傳給投影機們如何?
挺不賴的,我們開搞。
安裝 NetTime
雖然 Windows 系統本身就自帶 NTP 的功能,但使用方式有點不直觀,本文選用簡單快速的第三方小工具 NetTime。
安裝開啟後,程式就可以開始從網路上抓取時間進行校準。此時我們進入設定:
把 Allow other computers to sync to this computer
的選項打開,化身為 server:
噠啦,就是那麼簡單。
防火牆設定
至此,Windows 電腦已經可以作為 client 從外網讀取正確時間,並同時作為 server 提供該時間給內網中的其他設備。
說是這樣說,但我們此處需要的 port 在防火牆設置中並沒有預設開啟。為了讓投影機伺服器們可以傳 request 進來,我們要去手動打通這條路。
設定位置以 Win11 為例,在控制台 > 系統及安全性 > Windows Defender 防火牆 > 進階設定 > 輸入規則 > 新增規則。
NTP 走的是 UDP 的 123 port,透過新增規則的精靈即可簡單地設置完成。
但我們選擇裝逼一波,用命令提示字元來搞定:
1 | netsh advfirewall firewall add rule name="Allow NTP Server" dir=in action=allow protocol=UDP localport=123 |
此時我們就可以在規則中看到我們開通的 port 了:
client 端設定
最後,我們到各個投影機伺服器的後台,把中控電腦的 IP 位置設為 NTP Server 即告完成。
你問為何不用特別設定走 UDP 或是特別指定埠號?因為 NTP 幾乎都走 UDP 123,就不費心讓你設定了。
以上!