NTP(Network Time Protocol) えぬてぃーぴー
簡単に言うとこんな感じ!
NTPは「ネットワーク上のすべての機器の時計を合わせる仕組み」だよ! 腕時計をテレビの時報に合わせるイメージで、パソコンやサーバーがインターネット上の「超正確な時計」に自動で時刻を合わせてくれるプロトコルなんだ。これがないと、ログの時刻がバラバラになって障害調査が大混乱になるってこと!
NTPとは
NTP(Network Time Protocol)は、ネットワークに接続された機器の時刻を正確に同期させるためのプロトコルです。1985年にデイビッド・L・ミルズ(David L. Mills)によって設計され、現在はバージョン4(NTPv4)が広く使われています。ポート番号はUDP 123番を使用します。
コンピューターの内部時計は、放置しておくと少しずつズレていく「クロックドリフト」という現象が起こります。このズレはわずかでも、ログの記録・認証トークンの有効期限・データベースのトランザクション順序など、あらゆるシステムの信頼性に影響します。NTPはこのズレを自動で検知・補正し、ミリ秒以下の精度で時刻を揃え続ける役割を担っています。
企業システムでは「全サーバーの時刻が揃っていること」はセキュリティ要件にも含まれることがあり、特にKerberos認証(Windows Active Directoryで使われる)は時刻が5分以上ズレると認証が失敗するという厳しい仕様になっています。NTPはインフラの「縁の下の力持ち」として、多くのシステムが正常に動くための前提条件になっています。
NTPの仕組みと構造
NTPは「Stratum(ストラタム)」と呼ばれる階層構造で時刻を伝播させます。Stratumは「正確な時計源からの距離」を表す数値で、0に近いほど精度が高い時刻源です。
Stratumの階層構造
| Stratumレベル | 内容 | 具体例 |
|---|---|---|
| Stratum 0 | 一次時刻源(参照時計)。ネットワークには接続しない | 原子時計・GPS・電波時計 |
| Stratum 1 | Stratum 0に直接接続されたNTPサーバー | ntp.nict.jp(情報通信研究機構) |
| Stratum 2 | Stratum 1から時刻を受け取るサーバー | 企業の内部NTPサーバーなど |
| Stratum 3〜15 | 下流のクライアントやサーバー | 社内PC・ルーター・スイッチなど |
| Stratum 16 | 未同期(エラー状態) | 時刻源と接続できていない機器 |
時刻同期の仕組み(4つのタイムスタンプ)
NTPは通信の往復時間(ラウンドトリップタイム)を計算して、ネットワーク遅延を差し引いた正確な時刻を割り出します。
クライアント NTPサーバー
│ │
│──①送信時刻 T1 ────►│
│ │ ←②受信時刻 T2
│ │ ←③送信時刻 T3
│◄─────────────────── │
│ 受信時刻 T4 │
オフセット = ((T2-T1) + (T3-T4)) / 2
遅延 = (T4-T1) - (T3-T2)
この計算によってネットワーク遅延の影響を除去し、正確な時刻差(オフセット)を求めます。
覚え方:Stratumは「電話ゲームの段数」
原子時計(Stratum 0)→ 公開サーバー(Stratum 1)→ 社内サーバー(Stratum 2)→ 自分のPC(Stratum 3)
伝言ゲームと同じで、段数が増えるほど誤差が蓄積します。重要なシステムはできるだけStratumの浅い時刻源に同期させるのがベストプラクティスです。
歴史と背景
- 1981年 — ARPANETでの時刻同期の問題意識が高まり、初期の時刻同期プロトコルが研究される
- 1985年 — デイビッド・L・ミルズが NTP v1 を RFC 958 として発表。インターネット黎明期から設計された息の長いプロトコル
- 1989年 — NTP v2(RFC 1119)で信頼性と精度が向上
- 1992年 — NTP v3(RFC 1305)が策定。現在も一部環境で使用
- 2010年 — NTP v4(RFC 5905)が正式化。IPv6対応・セキュリティ改善を含む現在の主流バージョン
- 2016年 — NTPのセキュリティ脆弱性(増幅DDoS攻撃)が問題視され、認証機能の重要性が再認識される
- 近年 — クラウド環境での利用拡大にともない、AWS・Azure・GCPがそれぞれマネージドNTPサービスを提供。Amazon Time Sync Serviceなどが登場
NTP・SNTP・PTP の比較
NTPに似たプロトコルが複数あります。用途に応じた使い分けが重要です。
NTSとは(最新のセキュリティ強化版)
従来のNTPには認証が弱いという問題がありました。NTS(Network Time Security)はNTPv4に対してTLSベースの認証を追加した拡張仕様(RFC 8915、2020年)です。改ざんやなりすまし攻撃を防ぐために、セキュリティ意識の高い環境では採用が進んでいます。
パブリックNTPサーバー(無料で使える代表例)
| 提供者 | アドレス | 備考 |
|---|---|---|
| 情報通信研究機構(NICT) | ntp.nict.jp | 国内の公式時刻源 |
| NTPプール(世界規模) | pool.ntp.org | ボランティアサーバー群 |
| time.google.com | Googleインフラ利用 | |
| Cloudflare | time.cloudflare.com | NTS対応 |
| Amazon | 169.254.169.123 | EC2インスタンス向け |
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| RFC 5905 | NTPv4の現行標準仕様 |
| RFC 4330 | SNTP(簡易版NTP)の仕様 |
| RFC 8915 | NTS(Network Time Security)。NTPの認証拡張 |
| RFC 1305 | NTPv3(レガシー環境で参照されることがある) |
| IEEE 1588-2019 | PTP(Precision Time Protocol)。ナノ秒精度の時刻同期 |
関連用語
- UDP — NTPが使用するトランスポートプロトコル。ポート123番を使用する
- DNS — NTPサーバーのホスト名解決に使われる。NTPより先に動作している必要がある
- Kerberos — 時刻同期に強く依存する認証プロトコル。5分以上のズレで認証失敗になる
- Active Directory — Kerberosを使うWindows認証基盤。NTPとの連携が必須
- ファイアウォール — UDPポート123番の通信を許可する設定が必要