動画と記事で学ぶ / IP・通信プロトコル
NTPの基礎を設計構築の実務目線で解説。SNTPとの違い、時刻がずれるとログが追えない理由、ストラタムの階層、時刻の計算方法、2036年問題、公開NTPと自前NTPサーバーの使い分けをまとめます。
ここからは、記事でゆっくり確かめましょう。図や操作の例を見ながら、気になるところから読み進めてください。
NTPは、ネットワーク経由で機器の時刻を合わせるためのプロトコルです。UDPの123番ポートを使います。ルーター、スイッチ、サーバーといったインフラの機器は、基本的にすべてNTPで時刻を同期させます。
設計構築の案件では、「この機器はどこと時刻を同期するのか」「NTPサーバーのIPアドレスは何か」を必ず決めます。この記事では、NTPがなぜ必要か、ストラタムという階層の考え方、時刻を計算する仕組み、2036年問題、そして実際の案件でのNTPサーバーの選び方を説明します。設定コマンドには触れず、仕組みに絞っています。
NTPとは?SNTPとの違い
NTPは Network Time Protocol の略です。もう1つ、SNTP(Simple Network Time Protocol)という簡易版があります。
| NTP | SNTP | |
|---|---|---|
| 正式名称 | Network Time Protocol | Simple Network Time Protocol |
| 位置づけ | 標準 | NTPの簡易版 |
| できること | サーバーにも、クライアントにもなれる | クライアントとして時刻をもらうだけ |
| ポート番号 | UDP 123 | UDP 123 |
L2スイッチなどでは、SNTPにしか対応していない機器があります。案件でSNTPという言葉が出てきたら、「NTPの簡易版で、時刻をもらう側専用」と思い出せれば、話についていけます。
NTPが必要な理由:時刻がずれるとログが追えない
ネットワーク機器の中には、エラーなどを記録するログ(syslog)があります。ログは、その機器の時計の時刻で記録されます。
障害が起きたとき、最初にやるのはログの確認です。「たしか14時ごろに通信が切れた」と考えて、14時前後のログを探します。ここで機器の時計がずれていると、本当は記録されているエラーログが、別の時刻のところに埋もれていて見つかりません。原因の調査が一気に難しくなります。
複数の機器のログを突き合わせるときも同じです。機器ごとに時計がずれていたら、どのログが同じ出来事なのか分からなくなります。
サーバーでは、もっと深刻です。たとえば通販サイトで商品を買うと、「何月何日の何時何分何秒に注文した」という記録がデータベースに残ります。サーバーの時計がずれていれば、実際に買った時刻と記録の時刻がずれます。これは致命的な不具合の原因になります。
そのため、ネットワーク機器とサーバーは、NTPで時刻を同期させるのが当たり前になっています。ログの見方はCiscoのshowコマンド12選の show logging の項目でも説明しています。
ストラタムとは?NTPの階層構造
NTPのいちばんの特徴が、ストラタム(stratum)という階層の考え方です。
| 階層 | 役割 |
|---|---|
| 時刻源 | 原子時計やGPS。もっとも正確な時刻の基準 |
| ストラタム1 | 時刻源に直接つながっているNTPサーバー |
| ストラタム2 | ストラタム1から時刻をもらい、下の階層へ配る |
| ストラタム3 | ストラタム2から時刻をもらう |
最上位のNTPサーバーが、原子時計やGPSから正確な時刻を受け取ります。下の階層のNTPサーバーは、上の階層を参照して時刻を合わせます。
ストラタム2のサーバーを見てください。上から時刻をもらっているので、NTPクライアントです。同時に、下に時刻を配っているので、NTPサーバーでもあります。途中の階層にいる機器は、両方の役割を持っています。
設計するうえで覚えておきたいのは、上の階層が正しく同期できていなければ、下の階層も同期できないという点です。ネットワークの中にNTPサーバーを立てても、そのサーバー自身が時刻を同期できていなければ、そこから時刻をもらう機器は同期できません。
NTPは通信の遅れを計算して時刻を合わせる
ここは、すぐに必要になる知識ではありません。知っておくと仕組みが分かる、という位置づけです。
NTPクライアントは、サーバーから受け取った時刻をそのまま自分の時計にするわけではありません。パケットがネットワークを通るのにかかる時間と、サーバーが処理にかかる時間を考慮して計算します。使うのは、次の4つの時刻です。
- クライアントが問い合わせを送信した時刻
- サーバーが問い合わせを受信した時刻
- サーバーが応答を送信した時刻
- クライアントが応答を受信した時刻
やり取りされるパケットは、行きと帰りの2つです。この2つのパケットの、4つの送受信時刻から通信の遅れを割り出し、合わせるべき時刻を計算しています。
NTPの2036年問題
実務ですぐに困る話ではありませんが、知識として紹介します。
NTPは、1900年1月1日0時を起点として、そこから何秒たったかで時刻を表します。この秒数を32ビットで持っているため、数えられるのは 4,294,967,295秒までです。
起点からこの秒数がたつのが、2036年2月7日6時28分15秒(協定世界時)です。その1秒後に桁があふれ、秒数が0に戻ります。このときにNTPで何らかの不具合が起きるのではないか、と言われているのが2036年問題です。
まだ時間があるので、それまでに各機器で対応が進むと考えられます。長く使う機器を選ぶ場面では、頭の片隅に置いておいてください。
身近なNTP:PCも時刻を同期している
NTPは、ふだん使っているPCでも動いています。Windowsは、インターネット経由で time.windows.com というNTPサーバーと時刻を同期しています。Windowsの「日付と時刻」の設定を開くと、同期先のサーバーを確認でき、変更もできます。MacやiPhoneも同じように、NTPサーバーと同期しています。
ストラタムで言えば、僕たちのPCは末端のクライアントです。同期先のNTPサーバーがあり、その上にさらに上位のサーバーがあり、最後は原子時計にたどり着きます。PCの時計は、間接的に原子時計の時刻をもらっているわけです。
案件でのNTPサーバーの選び方
ネットワークを構築するとき、「どこと時刻を同期するか」には2つのやり方があります。
| インターネット上の公開NTPサーバー | 自前のNTPサーバー | |
|---|---|---|
| 例 | NICT(情報通信研究機構)の公開NTPサーバー | NTPサーバーの専用機器を社内ネットワークに設置 |
| 良い点 | すでにあるサーバーを指定するだけで使える | インターネットの障害や遅延の影響を受けない。セキュリティ面で有利 |
| 注意点 | インターネット回線の障害や遅延の影響を受ける。セキュリティ上、使えない環境がある | 機器の購入と構築にコストがかかる |
| 使われる場面 | インターネットに出られる一般的なネットワーク | 銀行など金融機関のネットワーク |
NICTは、日本の標準時を決めている研究機関です。原子時計に直接つながったストラタム1のNTPサーバーを、インターネット上で無料公開しています。信頼性の高い同期先として、よく使われます。
銀行や金融機関のネットワークでは、インターネットを経由させるのはセキュリティ上好ましくないため、専用のネットワークの中にNTPサーバーを立てて同期させるのが一般的です。時計メーカーなどが、NTPサーバーの専用機器を販売しています。
どちらにするかは、要件を決める段階で確認します。要件定義で聞くことはネットワーク要件定義とは?にまとめています。
よくある質問
NTPのポート番号は何番ですか?
UDPの123番です。ACLやファイアウォールでNTPの通信を許可するときに使います。
NTPとSNTPの違いは何ですか?
SNTPはNTPの簡易版で、クライアントとして時刻をもらう機能だけを持ちます。NTPは、サーバーにもクライアントにもなれます。
ストラタムとは何ですか?
NTPサーバーの階層を表す番号です。原子時計などの時刻源に直接つながるサーバーがストラタム1で、そこから1段下がるごとに番号が1つ増えます。
NTPを設定しないと、何が困りますか?
機器の時刻がずれ、ログの時刻が信用できなくなります。障害が起きたときに、該当するログを見つけられず、原因の調査が難しくなります。
NTPの2036年問題とは何ですか?
NTPが時刻を表すのに使っている32ビットの秒数が、2036年2月7日にあふれて0に戻る問題です。
