NTP 簡要筆記、台灣常用的校時服務

NTP 全名為 Network Time Protocol,可用來同步不同電腦系統之間的時間,現在的智慧型手機幾乎也都會使用到這個服務來校準、設定裝置上的日期時間,而校時服務需要靠 NTP 伺服器來提供,雖然說校時伺服器全球都會有,但距離越遠也會有網路延遲造成的誤差問題,所以建議使用靠自己較近的伺服器進行校時。台灣常用的 NTP 服務來源為 國家時間與頻率標準實驗室 ,國家時間與頻率標準實驗室的伺服器放在中華電信,是在台灣非常常用到的校時服務來源。

另外有個來自全球志願者提供的 NTP Pool 專案,由全世界的志願者鎖維護,透過 GeoIP / DNS round-robin 等機制提供全世界的使用者簡單、易用的 NTP 服務,只要使用 ntp.pool.org 的網域存取服務就會被自動導向鄰近的校時伺服器,也可以透過指定 zone 的方式手動指向特定的伺服器群,自行透過網域來選擇不同的洲、國家伺服器機群,例如 tw.ntp.pool.org 或 asia.ntp.pool.org (PS: zone 的頁面上也可以看到各區域的伺服器數量資訊)。也許大家平常不常聽到,但像 Debian / Ubuntu / Arch / RedHat / CentOS 等大型 Linux 發行版或一些商業公司也會透過此專案提供其用戶的預設校時服務,也算是很重要的基礎服務,例如 0.{debian, ubuntu, arch, rhel, centos}.pool.ntp.org  (數字的部份通常為 0~3),甚至 Ubiquiti 、 AWS 、 Android 也都有 0.ubnt.pool.ntp.org 、 0.amazon.pool.ntp.org 和 0.android.pool.ntp.org 呢。(不過 AWS 官方現在已經改建議使用 169.254.169.123 囉,參考 Setting the Time for Your Linux Instance)

除此之外,Google 在 2016 年 11 月底也公開了自家的 Public NTP 服務,消息來源可以參考 Google Cloud Platform Blog 的這篇文章:Making every (leap) second count with our new public NTP servers,算是跟著 2016 年會遇到的閏秒議題趁勢推出的服務?服務的名稱就叫作 Google Public NTP,官方的說明為 “A free, global time service that you can use to synchronize to Google’s atomic clocks.“,伺服器名稱為: time.google.com ,只有一組對外網域,雖然多年前就有許多坊間消息指出 Google 有五組校時伺服器可以使用 (分別是 time.google.com 以及 time1.google.com ~ time4.google.com),雖然是真的可以用 … 不過當時並不是一個正式公開的服務,要在正式的環境上使用總覺得不太安心 ,現在 Google 大方的公告,我們也就可以大方的使用了!

對了,Ubuntu 也有自己的 ntp.ubuntu.com 、 Windows 也有自己的 time.windows.com 哦~

依照範圍及距離遠近排序應該會是 國家時間與頻率標準實驗室 / 台灣 -> 日本 -> 亞洲 -> 全球,Google 和 NTP Pool 都是會自動導向距離使用者鄰近的伺服器,如果不想弄的太複雜也可以直接使用 NTP Pool 或 Google 的就好(實測出來台灣各家電信 ping 值大概都在 20ms 內),也可以多設幾組不同來源作為備援。

關於設定的部份,unix-like 系統的校時工具如 ntpdate, ntpd 或 systemd 的 timesyncd 都可以設定一串 NTP server 清單,遇到服務有障礙時可依序向不同的伺服器進行對時,所以就稍微筆記一下自己常用的優先順序,不時會用到一下。其實很多作業系統、路由器、無線基地台裡面預設的 NTP server 不是太遠就是不穩或是服務滅掉了 … 還是手動設一個距離近服務又穩的比較好,時間的準確性對於除錯、系統日誌來說是很重要的,國家時間與頻率標準實驗室說法是 {time, tock, clock}.stdtime.gov.tw 的負載太重,所以我會把前面 tw.pool.ntp.org 和 watch.stdtime.gov.tw / tick.stdtime.gov.tw 設為優先值較高的伺服器,部分系統只能設定一組伺服器,那就隨興挑選吧!

Windows 的時間設定:

這邊雖然列了一串 NTP 伺服器列表,不過在台灣應該是 國家時間與頻率標準實驗室 + 台灣 NTP pool 或 Google Public NTP 就很夠用了,其他的主要是在亞洲開 VPS 的時候可以當作參考或是備用(雲端廠商如 AWS 也有可能已經預設了合適的設定,沒遇到問題也許就不必動了)

  • tw.pool.ntp.org
  • watch.stdtime.gov.tw
  • tick.stdtime.gov.tw
  • time.stdtime.gov.tw
  • tock.stdtime.gov.tw
  • clock.stdtime.gov.tw
  • jp.pool.ntp.org
  • asia.pool.ntp.org

將 Windows 時間設定由 tw.pool.ntp.org 同步:

其實台灣部份大專院學早期也有提供 NTP 校時服務,不過近年來都缺乏維護,和大部分的 FTP / BBS 站台一樣都倒站了,有興趣的可以再找找看,如果覺得 NTP Pool 好用的話也可以考慮加入專案貢獻己力~

其他資訊可以參考:
國家時間與頻率標準實驗室NTP pool project