NTP(Network Time Protocol)は、NTPサーバと呼ばれる専用のサーバとやり取りすることで、現在の正確な日時を教えてくれる時刻同期の仕組みです。
例えばパソコンやスマートフォンは電源を切ると本体の時間を記録できなくなるため、本来シャットダウンをする度にローカルの時間がズレてしまいます。ただ、この時刻同期の仕組みを使用することで、電源を点けた後にNTPサーバから現在日時を取得して時間のズレを修正してくれます。
このようにあらゆるデバイスで時間を正確に管理するために必須のNTPですが、現在公開されているNTPサーバは数百種類以上存在しており、どのNTPサーバを使用するのが良いか分からない方も多いと思います。
この記事では「NTPサーバの選び方のポイント」および「おすすめのNTPサーバ」について解説を行っていきます。NTPサーバの選び方で悩んでいる方はぜひ参考にしてください。
見出し
NTPサーバとは?
それでは、おすすめのNTPサーバを紹介する前にまずは「NTPサーバとは何なのか?」について解説を行っていきます。
NTPは正式名称で「Network Time Protocol」と言い、名前の通り「ネットワークを使ってコンピューターの時刻を同期するためのプロトコル」で、NTPサーバはそうしたNTPの機能を持つサーバとなります。
このNTPサーバの役割は「自身に通信を送ってきたクライアントに正確な時刻情報を伝えること」です。
例えば身近で良く使うスマートフォンやパソコンなどには既定のNTPサーバが設定されていることがあり、定期的にNTPサーバへ通信を行って正確な時刻に合わせる仕組みがあります。
実際に「ローカルの時間がおかしかったスマホやパソコンをインターネットに繋いだら正しい時間に勝手に変わった」などという経験がある方もいると思いますが、これはインターネットでNTPサーバとやり取りして正しい時刻を受け取っているからこそできることです。
NTPサーバの選び方
インターネット上で利用できるNTPサーバはたくさんありますが、実際に「どのNTPサーバを使うのが良いのか?」ということについて分かる方は殆どいないと思います。
ここからは「どのような点に着目してNTPサーバを選ぶのが良いのか?」についてお話しさせていただきます。
選び方① 日本国内にサーバがあるかどうか
NTPサーバを選ぶ時にまず重要なのが「日本国内に設置されているNTPサーバかどうか」です。もしアメリカやヨーロッパにあるNTPサーバを使用してもそこまで問題がある訳ではないですが、物理的な距離が遠いとそれだけ通信時間も長くなりタイムアウトが発生する確率も上昇します。
なお、NTPで時刻を取得する際に「サーバから返された現在時刻をそのまま使用するなら、クライアントが受け取った日時は既に過去のものなのでは?」と思われるかもしれませんが、こちらについては問題ありません。
NTPでは上記の問題の解決のため、往復に掛かった通信時間から「遅延(Delay)」を導出して、クライアント側は「NTPサーバから受け取った時間+遅延」を計算することで、通信コスト込みでの時間に補正しています。
ただ、上記のように補正が行われても、遠距離にあるNTPの場合は経由する機器などが多くなるため、正確なDelay値を求めるのが難しいです。Delay値が不正確だとクライアント側が受け取る日時にもズレが生じるため、可能な限りNTPサーバは物理的な距離が近い方が望ましいです。
NTPサーバは大手IT企業などが運営しているケースも多いのでアメリカにサーバがあることも多いですが、可能なら日本国内にあるNTPサーバを選ぶのが無難です。
選び方② 負荷分散や冗長構成になっているかどうか
NTPサーバの選定においてもう一つ重要なのが、「負荷分散や冗長構成になっているかどうか?」ということです。
負荷分散については、NTPサーバは多数のクライアントからアクセスがあることが多いので、利用者が増えると通信が混雑して正常に時刻が取得できなくなることもあります。そうした障害を防ぐために、NTPサーバ側に「複数のサーバを使用してラウンドロビンで通信を均等に振り分ける」などの通信を分散する仕組みがあれば安心です。
また、冗長構成については、ネットワーク・サーバ・電源など障害が発生したらサービスが停止してしまう部分を多重化して、どこか1か所で問題が出てもサービスを継続稼働できる仕組みがあると良いでしょう。
負荷分散・冗長構成については特に大切です。単一のサーバやネットワークで運用しているNTPサーバはそもそもコスト自体があまり掛けられていないので、すぐにリソースが足りなくなったり障害が起きて停止したりする可能性があります。
選び方③ Stratumは1~3程度がおすすめ
NTPには負荷軽減を行うために「Stratum」と呼ばれる階層構造の仕組みがあります。Stratumは0~15までの階層があり、Stratum0は原子時計やGPSなどのハードウェアクロックで、Stratum1~15が実際のNTPサーバです。
このStratumは「下位階層の機器は上位階層の機器と通信を行い時間を取得する」という仕組みになっており、例えばStratum3のNTPサーバは、Stratum2のNTPサーバが持つ時刻を受け取ってクライアントやStratum4のNTPサーバに渡します。
ただし、この時上位のNTPサーバから下位のNTPサーバに渡される時刻については、どうしてもミリ秒単位等でズレが生じてしまいます。上記で説明した通りNTPでは「Delay」を計算して通信時間を補正した値をクライアント側が使用しますが、通信時間を完璧に計算することは出来ないからです。
そのため、NTPではStratumの数値が大きいNTPサーバほど保持している時刻情報に誤差がある可能性が高くなります。
よって、NTPサーバを選ぶ時は時刻情報が正確なStratum1~Stratum3くらいのものを選ぶのがおすすめです。
Stratum4以降が非推奨という訳ではありませんが、わざわざStratum4以降のNTPサーバを使用するメリットは正直あまりないです。仮にStratum1のNTPサーバが負荷で重くて使えないなどの理由があったとしても、その直下のStratum2のNTPサーバを使えばいいだけです。
おすすめのNTPサーバ一覧
では、ここからは実際におすすめのNTPサーバについて紹介を行っていきます。
NTPサーバの名前のほかに、Stratumや冗長構成や設置場所など、上記のNTPサーバの選び方で紹介したポイントについても解説を行います。
① nict.ntp.jp
nict.ntp.jpは、国立研究開発法人情報通信研究機構(NICT)が運営する、恐らく国内でも最も利用者の多いNTPサーバです。個人や企業ネットワークでの使用はもちろん、製品のデフォルトのNTPサーバの利用についても許可されているため、 NICTがデフォルトのNTPサーバになっているサーバやネットワーク機器も多いです。
こちらはStratum1のNTPサーバかつ公的機関が運営しているということもあり、NTPサーバの中でも信頼性・安全性については非常に高いと考えられます。
運用環境についても、サーバやネットワークや電源については全て冗長化されており、障害が起きてNTPサーバが正常に動作しなくなる可能性についても低いと考えられます。
ただし、当然ですが有名であるがゆえに利用者も多いです。利用者が多くてもNTPサーバの時刻がズレたりすることはありませんが、負荷が増えればサーバとの通信でタイムアウトが起こったりする可能性も出てきます。
また、 NICTでは負荷が増えすぎないようにボーリング回数の制限なども存在しています。公式サイトでは「ボーリングの間隔は1時間平均で20回(1日の合計が480回)を超えないようにしてください」との記載があり、あまり高頻度の通信は行うことが出来ません。
信頼性で言うと間違いなくNICTがトップですが、上記のようにアクセス集中による負荷の問題もあるので、遅延の少なさなどの観点では他のNTPサーバのほうが優れていると思います。
実際にサーバやネットワーク機器での設定で良く使われるNTPサーバですが、利用者も多いだけに負荷が高い場合もあります。遅延が気になるようなら他のNTPサーバを使うのが良いと思います。
②ntp.jst.mfeed.ad.jp
ntp.jst.mfeed.ad.jpは、インターネットマルチフィード株式会社が提供するStratum2のNTPサーバです。
上記のNICTと同様に国内にNTPサーバがあるため通信の遅延も少なく、企業が運営しているため信頼性も高いです。
また、こちらのNTPサーバでは負荷分散・冗長化の仕組みも導入しており、ntp.jst.mfeed.ad.jpを指定して通信を行うと「ntp1.v6.mfeed.ad.jp~ntp3.v6.mfeed.ad.jp」の3つのNTPサーバの中からラウンドロビン方式で接続するサーバが選ばれます。そのため、単一のサーバのみで稼働を行っているNTPサーバに比べると、負荷で重くなったり障害でダウンする可能性は低いと考えられます。
なお、ntp.jst.mfeed.ad.jpはStratum2のNTPサーバで、時刻についてはStratum1であるNICTのNTPサーバから取得しています。そのため時刻情報についてはNICTのNTPサーバと変わらないので、NICTが繋がりにくいと感じた場合はこちらのNTPサーバを選択するのが良いでしょう。
このNTPサーバはNICTから時刻情報を取得しており、かつNICTほど使用者も多くないため、負荷も少なくおすすめのNTPサーバです。
③pool.ntp.org
pool.ntp.orgは正確には一つのNTPサーバではなく、世界中のNTP(Network Time Protocol)サーバを集めて、複数のNTPサーバで負荷分散を行う仕組みです。
この記事執筆時の現在では、日本国内では50程度、全世界では4,000程度のNTPサーバが登録されており、それぞれでStratumの値はまちまちです。
NTPサーバとしてpool.ntp.orgを選択した場合、上記のように登録されているNTPサーバ群の中から、接続元のクライアントと地理的に近い位置にあるNTPサーバが自動的に選ばれます。
例えば日本から接続すると日本国内にあるNTPサーバが選ばれる可能性が高く、この仕組みによって地理的に近いNTPサーバを使用することでの通信品質の確保と、特定のNTPサーバだけに負荷が偏らないように負荷分散を行っています。
ただ、仕組み上の欠点として定期的に接続先のNTPサーバが変わってしまうので注意が必要です。例えばフィルタリングなどで予め指定されたサーバとしか通信が出来ないような設定がネットワークに施されている場合、pool.ntp.orgを使用するのは難しいです。
pool.ntp.orgの最大のメリットとして「他のNTPサーバと比べて非常に膨大な量のサーバで負荷分散を行っているので、アクセス集中による混雑のリスクがかなり低い」ということです。ただ、定期的にNTPサーバが変わってしまうので、ネットワークの設定によって使えないです。
④time.windows.com
time.windows.comは、Microsoftが運営するNTPサーバです。WindowsのPCでの標準のNTPサーバとしても設定されており、WindowsのPCならデフォルトの状態でこのtime.windows.comと通信をして時刻情報を取得しています。
こちらのNTPサーバについては、これまで様々なクラウドサービスを提供した実績があるMicrosoftが運用しているということもあり、信頼性や耐障害性については非常に優れていると言えます。
また、上述した通りこちらはWindwosのデフォルトNTPサーバとして使用されています。そのため、もしWindowsのPCやサーバと時刻情報を合わせたい場合はこちらのNTPサーバを使用するのも良いでしょう。
ただ、WindowsPCの標準NTPサーバに設定されている仕様上「時間帯によっては繋がりにくい時がある」や「短期間で利用者が増大してトラフィック過多になる可能性がある」などの欠点もあるため、重要なデバイスで使用するには非推奨です。
僕もPCのNTPサーバにはWindowsのNTPサーバを設定していますが、時間帯や曜日によってはアクセスが集中して時刻が正常に取得できなくなることがあります。普段使いのPCなどでは特に困らないと思いますが、重要なシステムで使用するには少し注意が必要です。
⑤time.apple.com
time.apple.comは名前の通りApple社が運営するNTPサーバです。iPhoneやMac等のApple製品のデバイスで標準のNTPサーバとして使用されており、原子時計などから直接時刻を取得しているstratum1のNTPサーバです。
このNTPサーバについては公式ドキュメント等もないためネットにもあまり情報が無いですが、DNS情報から判断すると「地理的に離れた複数の場所にNTPサーバを設置して、各地域ごとに複数のNTPサーバを利用できるよう設定して負荷分散&障害対策を行っている」ようです。
例えば日本でtime.apple.comのDNS情報を調べると「17.253.114.43, 17.253.68.123, 17.253.68.253」という3つのIPアドレスが出てきました。また、IPアドレスの地域を調べたところ、それぞれ「韓国、日本、日本」の3つの国で使われているアドレスで、たとえ何らかの原因で日本のNTPサーバがダウンしても他の国のサーバで繋がるように冗長構成が施されていることが分かります。
このように負荷分散・冗長構成については申し分ないですが、一つ前に紹介したtime.windows.comと同様にスマートフォンやPCのデフォルトのNTPサーバとして使用されているため、アクセスの急増による遅延やタイムアウトが起こる可能性はそれなりにあるので注意が必要です。
冗長構成の面ではtime.windows.comより優れていそうです(windowsはDNSラウンドロビンではなかったです)が、iPhoneやMacは使っている人も多いデバイスなので安定性には欠けていると思います。
まとめ:使いやすいNTPサーバを見つけよう!
今回の記事では「NTPサーバの選び方」および「おすすめのNTPサーバ」について紹介させて頂きました。
記事の内容の振り返りですが、今回紹介したおすすめのNTPサーバは下記の通りです。
①nict.ntp.jp
②ntp.jst.mfeed.ad.jp
③pool.ntp.org
④time.windows.com
⑤time.apple.com
詳しい特徴やおすすめポイントについては記事内で詳しく解説していますが、使用するNTPサーバを間違えるとアクセスが集中して繋がりにくかったり、正確な日時情報が取得できなかったりすることもあります。
NTPサーバを選ぶ時は、ぜひ今回の記事で紹介した「選び方」および「おすすめのNTPサーバ」を参考にして選んでいただければ失敗する確率は低くなるはずです。