よくある質問・用語集

  • もっと調べる

NTPとは

NTPとは、Network Time Protocolの略称で、ネットワークに接続された機器の時刻同期を行うためのプロトコルである。インターネット上には、時刻が正確なNTPサーバが公開されている。これらのサーバに接続して時間情報を取得することで、サーバやPCの時刻を正しい時刻に調整することができる。取得した時刻の情報は、さらに他のサーバやPCから参照可能にすることができる。

NTPはUDPの123番ポートを利用する。

NTPの仕組み

従来、時刻同期の仕組みにTime Protocolがあり、代表的なアプリケーションとしてrdateがある。rdateでは、実行した時にサーバより時刻を取得し、強制的にその時刻を設定する。これは、OS起動時などには有効に機能するが、長時間稼動するサーバの場合、rdate実行後はコンピュータのシステムクロックの精度に依存するため、徐々に時刻がずれていく場合がある。 これに対して、NTPは、システム内デーモンとして起動され、常に時刻同期の処理を行う。この時、ネットワーク通信における遅延などを考慮するように設計されている。常に起動しているシステムであるため、サーバでも時刻がずれることなく運用ができる。

NTPの実装

NTPを扱うオープンソースソフトウェアとして、ntpdがある。ntpdはデーモンプロセスとして実装されており、複数のNTPサーバから時刻情報を受け取って常に調整する。このため、長時間動作するサーバでも、時刻がずれることなく動作する。 また、サーバから時刻情報を受け取るだけではなく、システムクロックとの誤差を検知して調整したり、急激な時刻合わせではなく、徐々に正確な時刻に合うように少しずつ時間を進めたり、遅くしたりすることができる。

時刻同期の必要性

NTPによって、PCの時刻同期が行われることで、世の中のコンピュータがほぼ同じ時刻を持つことができる。こうすることで、コンピュータ間の通信の信頼性を向上させることができる。例えば、明らかに時間がずれているコンピュータとの通信を遮断したりすることもプロトコルによっては可能である。時間が大幅にずれていると、SSLの証明書の整合性が取れずに、正式のものであっても、期限切れになってしまったり不正と誤って判定してしまうこともありえる。また、システムの管理者として、サーバの時刻が完全に同期されていることは、障害解析にも役立つ。クライアント側とサーバ側で時刻がずれていると、どの通信で異常が発生したかすぐに把握できない可能性があるためである。

こういった理由により、NTPの設定をすることが望ましいが、有名な上位NTPサーバを指定することは推奨されない。プロバイダやデータセンターでシステムを構築する場合は、サービス提供者がNTPサーバをもっているので、これを指定するべきである。社内や学内の場合も同様にNTPサーバを持っていることが多いので確認するといいだろう。無いと言われたら、NTPサーバを立てましょうと提案するのが良いと思われる。

閏秒

NTPは、閏秒に対応しており、閏秒に関する通知に対して、1秒の追加削除を行うようになっている。ただ、OS側には様々なタイマー処理があるため、これによる動作に敏感である。結果としてLinux kernelの不具合が見つかり、アップデートがリリースされる結果になっている。

2036年問題

現在のNTPで取り扱う時間は、1900年1月1日からの秒で表現されているため、2036年に桁あふれして、経過時間が0に戻ってしまうことがわかっている。

RFCについて

一番最初のRFCは1989年のRFC1128である。最新のRFCは、2010年のRFC5907で、NTPバージョン4として提案されている。

【カテゴリ】:プロトコル  システム管理  

  • もっと調べる

【Webセミナー】Rocket.Chatだけじゃない!OSSビジネスチャットの最新情報

日程: 12月19日(木)Webセミナー「BigBlueButton」を使用します。
内容: Rocket.Chatの機能制限でお困りの方も必見!ライセンスフリーで利用できるOSSのビジネスチャットを紹介します。
ご興味のあるかたはぜひご参加ください。

セミナー申込

関連用語

NTPに関連するページ(事例など)

NTPとは先頭へ