NTP
読み:えぬてぃーぴー
外語:NTP: Network Time Protocol
ネットワーク
を利用して時刻情報を受け渡す
通信プロトコル
で、代表的なもの。ポートは123/udpを使用する。
目次
概要
特徴
旧プロトコルとの差異
仕様
西暦2036年問題
問題
対策
セキュリティ
補足
代表的なNTPサーバー
福岡大学
情報通信研究機構
設定すべきNTPサーバー
概要
コンピューター内蔵の時計は、精度はさほど高くない。このため使用しているうちに必ず時刻がずれてくる。従って定期的に時刻合わせを行なう必要があるが、人手で行なうと手間が掛かり、また誤差も出る。
そこでネットワークを利用し、自動的に時刻合わせを行なう仕組みを提供するプロトコルが様々に作られた。そのうちの一つであり、かつ現在の主流となっているものがNTPである。
NTPバージョン4が
RFC 5905
で規定される。NTPには4種のバージョンがあるが、最新のNTPv4は、NTPv1を除くすべてと
後方互換
がある。
特徴
旧プロトコルとの差異
単にネットワーク上のシステムから時刻情報を取得するプロトコルとしては、
TIME
プロトコル(
RFC 868
)などがある。
TIMEプロトコルは、1900年1月1日 00:00:00(UTC)からの経過秒数を返す。
NTPは更に工夫が施されており、リクエストや応答の送受信時の
タイムスタンプ
などを加えることで、ネットワークの遅延を計算し、より正確な時刻の補正が行なえるようになっている。
仕様
NTPも、TIMEプロトコルなどと同様に1900年1月1日 00:00:00(UTC)からの経過秒数を無符号の32ビット値で返す。加えて、小数点以下の秒情報を無符号の32ビット値で返す。
その他に、そのNTPサーバーが時刻を得た源が何であるかといった情報や、誤差情報などのソースの性能情報、サーバー・クライアント間のネットワーク時間を吸収するための機構なども備わっている。
NTPは必要と思われるあらゆる機能を含んでいる関係から、大変複雑怪奇な仕様と化している。そこで、機能を普段必要なものだけに制限した簡易版の
SNTP
が作られた。当初は簡易版として別のRFCが存在したが、NTPv4からはSNTPを吸収している。
西暦2036年問題
問題
NTPは、基点である1900年1月1日 00:00:00(UTC)からの経過秒数を32ビットで返す。これはつまり、2
32
−1秒、すなわち4,294,967,295秒までしか数えることができない。これを超えた場合、経過秒数は0に戻ってしまう。
この起点から無符号32ビット値で表現可能な日時は、2036年2月7日 06:28:15(UTC)、つまり2036(令和18)年2月7日15:28:15
(JST)
(@311)であり、これより後を表現できない。これが、いわゆる
2036年問題
である。
対策
対策方法は大きく二種類が考えられる。日時部分の値を64ビット長に伸ばすか、または32ビットのまま維持しその扱いを変更するか、である。SNTPv4(
RFC 4330
)およびそれを取り込んだNTPv4では対応案が提案されており、後者が選ばれた。
秒数は32ビット無符号の数値だが、この最上位ビットを見て動作を変更する。これを著している2018(平成30)年現在、日時を表わす情報は最上位ビットが立った状態である。また、最上位ビットが0つまり立っていない最後の年は1968(昭和43)年だった。
さて、NTPが送信するのは「現在日時」であるので、過去が表現できなくても何の問題もない。そこで、次のようにする。
0x80000000〜0xffffffff: 1968年〜2036年 (2036(令和18)年2月7日15:28:15
(JST)
(@311)まで)
0x00000000〜0x7fffffff: 2036年〜2104年 (2036(令和18)年2月7日15:28:16
(JST)
(@311)から)
今のうちから、このように実装を改めれば、特段大きな問題にはならないと考えられる。
この解決方法は同時に2104年問題を含むことになるが、この年が近付いた頃に同様の対応をすることで、問題なく対応できるものと考えられている。
セキュリティ
NTPは便利なものだが、外部から123/udpに侵入され不正な時刻が設定されるというセキュリティ上の問題もある。
例えば
Kerberos
等の時刻を基準とした
チャレンジ&レスポンス
型のパスワードを利用する機構の場合、時刻を変更されることで同じチャレンジが再び使われる可能性がある。
補足
代表的なNTPサーバー
福岡大学
福岡大学は日本初のNTPサーバー(clock.nc.fukuoka-u.ac.jp)を1993(平成5)年から公開している。
このサーバーのアドレスが各種時計合わせアプリのデフォルトとして設定されたり、ブロードバンドルーターのファームウェアに設定されたりしたため、2005(平成17)年頃にはアクセスが毎秒900件を超えるようになり管理者を悩ませることとなった。
2017(平成29)年10月のENOG47 MeetingではNTPだけで180Mbpsの帯域を消費しており、毎秒21万の時刻要求があることが紹介された。
そしてついに2018(平成30)年1月のJANOG41 Meetingで「福岡大学のNTPは停止します!」と発表された。
ただし、単純にNTPサーバーを停止させるとリクエストパケットが極端に増大することから、停止に向けた技術検証が行なわれる。
情報通信研究機構
日本の独立行政法人情報通信研究機構は2006(平成18)年6月から一般向けに日本標準時と直結されたNTPサーバー(ntp.nict.jp)を提供している。
公開された時点で毎秒100万リクエストを処理可能であるとしている。
設定すべきNTPサーバー
NTPはその仕組み上、ネットワーク的な距離や物理的な距離が近いほど正確な時刻を取得できる。
そのため、自分が直接接続しているネットワークのISPが提供するNTPサーバーへアクセスするのが最善の設定である。
使用しているISPがNTPを提供していない場合には、NICTのNTPサーバーを使用するのが次善の策だろう。
再検索