社内ネットワークでのNTPによる正確な時刻同期のススメ
ネットワーク機器やサーバーの時刻がバラバラだと、ログの解析やトラブルシューティングが非常に困難になります。
そこで重要になるのが NTP(Network Time Protocol) による時刻同期です。
本記事では、
「なぜその構成が良いのか」 という設計思想に重点を置き、
社内ネットワークにおける NTP の正しい考え方と推奨構成を解説します。
NTPで時刻同期する意味
時刻同期の目的は、大きく次の2つに集約されます。
-
正確な時刻に合わせる
- ログ、トランザクション、監査証跡の整合性確保
-
システム全体の時間を統一する
- 障害解析や相関分析を容易にする
多くのケースで後者の重要性が見落とされがちですが、
「全体で揃っていること」 は精度と同じくらい重要です。
NTPに関するよくある誤解
NTPについては、次のような誤解が非常に多く見られます。
- Stratum 1 に同期すれば常に正確な時刻が得られる
- Stratum の値が小さいほど精度が高い
- Stratum 2 は Stratum 1 の時刻をそのまま配っている
- ネットワーク的に遠くても Stratum が小さい方が良い
この結果、以下のような構成が実際に存在します。
- 全ホストが外部 Stratum 1 に直接同期
- 社内にNTPサーバーを構築しているにもかかわらず、そのNTPサーバー自身の同期先が1台しか設定されていない
- 近くの Stratum 2 を使わず遠方の Stratum 1 を使用
NTPの基本的な考え方
NTPサーバーは、
上位サーバーから時刻を取得し、自分の内部時計を補正し、その「自分の時計」を配信する
という仕組みで動作します。
時刻パケットを単に中継しているわけではありません。
重要なポイントは以下です。
- Stratum は「時計源からのホップ数」に過ぎない
- ネットワーク遅延やジッターは Stratum より精度に影響する
- 近くの Stratum 2 の方が、遠方の Stratum 1 より正確な場合がある
- ntpd / chrony は複数ソースを統計的に評価して時刻を決定
- 同期先が1台では意味を持たない
- 参照:なぜ NTP サーバーの同期先は3台以上必要なのか
- RFC 8633 §3.2 にも、複数の独立した時刻源を使うことが前提であると明記されている RFC 8633, p.5
推奨構成
社内ネットワークで推奨される構成は以下の通りです。
-
Stratum 1 サーバー:1台
- GNSS / PPS 等の高精度時計源を使用
-
社内向けNTP配布サーバー(結果として Stratum 2):2台以上
- Stratum 1 + 外部信頼サーバーを同期先に設定
- 社内クライアントに時刻を配信
-
監視サーバー:1台
- NTP システム全体の状態を監視・評価
なぜ Stratum 1 をクライアントに直接使わせないのか
「社内に構築した Stratum 1 に直接同期する方が正確ではないか」という疑問は自然です。
しかし、設計上はその構成を採用すべきではありません。
理由は以下の通りです。
- Stratum 1 は精度源であり、配布点ではない
- 多数クライアントによる負荷増大とジッターの悪化
- 誤設定クライアントや攻撃の影響を受けやすい
- 障害やメンテナンスの影響が全体に波及する
そのため、
Stratum 1 → 社内向けNTP配布サーバー → クライアント
という階層構造が、
精度・安定性・運用性の観点で合理的です。
構築ステップ
STEP1:社内向けNTP配布サーバーの構築
- 社内向けに時刻を配布するNTPサーバーを構築
- 外部の信頼できる NTP サーバーを 3台以上 同期先に設定
- この時点で構築する NTP サーバーの Stratum 番号は設計上の要件ではない
- Stratum 3 や 4 となることも問題ない
- 社内クライアントはこのサーバーに同期
- クライアント側は必ず FQDN 指定で設定することが重要
- 冗長化のため、この配布用NTPサーバーは2台以上推奨
STEP2:高精度時刻源(Stratum 1 サーバー)の構築と段階的導入
- GNSS / PPS などの高精度時計源を持つ Stratum 1 サーバー を構築
- このサーバーは 社内クライアントに直接時刻を配布しない
- STEP1 で構築した 社内向けNTP配布サーバー に
この Stratum 1 サーバーを同期先として追加 - 初期段階では
-
noselectを指定し、参照品質の監視のみを実施
-
- offset・jitter・reach が十分に安定していることを確認後
-
preferを指定し、主要な同期源として採用
-
- この結果として
- 配布サーバーの Stratum は 2 となる
- Stratum 2 であること自体は目的ではなく、構成の結果である
STEP3:監視サーバー構築
- Stratum 1 / 配布サーバーの状態を定期的に監視
-
chronyc/ntpqによる状態取得 - 異常検知時に通知
監視サーバーの役割
監視サーバーは単なる死活監視用ではありません。
時刻品質を客観的に評価するための独立した観測点です。
主な役割は以下です。
- offset / RMS offset / dispersion の継続監視
- ドリフト傾向の把握
- GNSS 受信不良や参照断の検知
- サーバー間の相互比較による異常検出
重要なのは、
監視サーバー自身を時刻配布の中心に置かない
という点です。
配布系と監視系を分離することで、設計の健全性が保たれます。
大規模化する際のポイント
- 社内向けNTP配布サーバーを複数台配置し、負荷分散と冗長性を確保
- 配布サーバーは地理的に分散配置し、ネットワーク障害の影響を局所化
-
Stratum 1 サーバーを地理的に別の場所に増設
- GNSS 受信環境や電源系統を分離
- 単一地点障害(Site Failure)を回避
- 配布サーバーは複数の Stratum 1 を参照可能な構成とする
- クライアントは複数の配布サーバーに同期
- 監視サーバーで全体の時刻品質を一元的に評価
- 規模や要件に応じて Anycast の利用を検討
まとめ
- 時刻同期では「正確さ」だけでなく「統一」が重要
- Stratum の数字を目的化しない
- 階層構造・複数参照・監視が基本
- クライアントの同期先は 必ず FQDN 指定
- NTP は「設定して終わり」ではなく「運用して品質を維持する仕組み」