NTP(Network Time Protocol)は、コンピュータやネットワーク機器が正確な時刻を維持するために用いられる通信プロトコルです。
参考 通信プロトコルとは?
複数のコンピュータやサーバーが密に関連するシステムでは、データの整合性を保つために正確な時刻が必要です。例えば、バックアップ作業やデータベースのトランザクションでは、秒単位で正確なタイミングを特定することが重要になってきます。
このページでは、NTP(Network Time Protocol)とは何か?NTPの必要性や、NTPサーバの仕組みについて1からわかりやすく初心者向けに解説します。
ネットワークエンジニアを目指す方であれば知らないと恥ずかしい基本知識の1つ。是非最後までご覧ください。
NTPとは?
NTP(Network Time Protocol)はコンピューターやネットワーク機器がインターネットを通じて正確な時刻情報を共有するための仕組みです。
簡単に言えば、NTPは「正確な時間を持っている信頼できる時計」から「正確な時間が必要な機器」へ、時間情報を送るシステムだと言えます。
NTPでは「時計」役のコンピュータ(NTPサーバ)と、「時間を知りたい」コンピュータ(NTPクライアント)との間で、時間情報を定期的に交換。このような仕組みを設けることで、システム全体で正確な時刻を共有することが可能になるというわけです。
NTP:時刻同期の必要性
そもそも、時刻同期ってそんなに大事?という疑問をお持ちの方もいるかもしれません。
ここでは、システム・ネットワークにおける時刻同期の必要性や重要性について網羅的に整理しておきましょう!
ポイント データの整合性
複数のコンピュータやサーバーが関わるシステムでは、データの整合性を保つために正確な時刻が必要です。バックアップ作業やトランザクション管理において、秒単位での正確なタイミング・時刻同期が重要です。
ポイント ログ解析
サーバーが発行するログファイルも、時刻がバラバラだと後から何がいつ起こったのか分析が難しくなります。
いつどこで何が起こったのか?を把握することはセキュリティの観点から、また障害発生時の調査という観点からも非常に重要。
数秒程度のズレは仕方ないのでは?と思う方もいるかもしれませんが、現実は数秒の間にたくさんの処理が行わており、その1つ1つの処理が正確な時刻で記録されていることは大変重要です。
ポイント スケジュールタスク
定期的に行われるタスク(Cronジョブなど)も、正確な時刻に依存します。時刻がずれると、予定された動作が正確に行われない可能性があります。
リアルタイムで更新されるダッシュボードやチャットアプリでも、時刻が重要です。時刻が正確でないと、ユーザーが混乱する可能性があります。
このように、システムやネットワークにおいては秒単位・ミリ秒単位での時刻同期が非常に重要であると言えます。
NTPの仕組み
NTPはクライアントサーバモデルを採用しています。
クライアントサーバモデルとは、システムの構築方法の分類の1つであり、サービス(実際の処理)を提供する「サーバ」と、サービスをリクエストする「クライアント」とで役割を分担したシステムのことです。
NTPでは、クライアントとサーバーが連携して、高精度で一貫した時刻情報を維持します。
- NTPサーバー
- 正確な時刻を持っていて、それを他の機器(クライアント)に提供する役割を果たします。
- NTPクライアント
- 正確な時刻を知りたい機器であり、NTPサーバーに時刻情報を要求します。
ポイント NTPにおける通信の流れ
- 時刻情報の要求
- NTPクライアントはNTPサーバーに対してリクエストを送る。
- →今、何時ですか?
- 時刻情報の受信
- NTPサーバーはリクエストに応じてレスポンスを送る
- →今はこの時間です。
- 時刻調整
- NTPクライアントは受け取った時刻情報をもとに、自身の時計を調整。
- 複数の参照
- NTPクライアントは通常、複数のサーバーから時刻情報を得て、それらを比較・分析。
- →最も信頼できる時刻に自身を合わせます。
上記の通信は一度だけではなく、周期的に行われます。そのため、常に正確な時刻が維持されます。また、ネットワークを通じて情報が移動する際の遅延も考慮に入れて、非常に高精度な時刻調整が可能な仕組みになっています。
NTPの階層構造:ストラタム(Stratum)
先ほど「NTPクライアントは複数のサーバーから時刻情報を得る」と説明しました。この点について深堀しておきあmす。
NTPは階層的な構造を持ちます。
この階層は「ストラタム」と呼ばれるレベルで表され、ストラタムの数値が小さいほど、その時計の信頼性や精度が高くなります。
ポイント ストラタム 0
これは最も高い階層で、原子時計やGPSクロックなど、非常に高精度な時計です。これらは直接NTPサーバーとは接続されませんが、ストラタム 1 のサーバーが参照します。
ポイント ストラタム1~N
ストラタム 0に直接接続されているNTPサーバーを「ストラタム 1」と呼びます。これが最も信頼性があり精度も高いNTPサーバーで、高精度な時刻同期が必要なシステムが参照します。
ストラタム 1のサーバーに接続されているサーバーがストラタム 2です。
同様に、各ストラタムはその上のストラタムのサーバーに接続します。ストラタムの数値が大きくなるにつれ、通常は精度が若干低下します。
ポイント フォールバック機能
多くのNTPクライアントは、複数のNTPサーバーを設定することができます。
例えば1つのNTPサーバしか設定していないと、そのサーバがダウンした際に、時刻同期が行えなくなってしまいます。そのような事態を避けるために、1つのクライアントが複数のNTPサーバを参照することを可能にしています。
NTPの設定
ここまでで何となくNTPとは何か?がご理解いただけたかと思います。
最後にNTPの設定と利用方法について簡単にご紹介して、説明を終えます。
NTPの設定:ステップ① 事前準備
- OSとパッケージの更新
- 使用しているOSとパッケージを最新の状態に更新します。
- 必要なソフトウェアのインストール
- NTPまたはNTPのクライアントソフトウェア(例:
ntpd
,chronyd
など)をインストールします。
- NTPまたはNTPのクライアントソフトウェア(例:
LinuxにはNTPを扱うためのソフトウェア(ntpd
やchronyd
など)がデフォルトでプリインストールされている場合が多いです。ただし、ディストリビューションやそのバージョン、そしてインストール時の設定オプションによっては、手動でインストールする必要がある場合もあります。
Windowsには独自の時間同期サービスがプリインストールされており、通常は手動でNTPソフトウェアをインストールする必要はありません。
NTPの設定:ステップ②
- 公開サーバー
- pool.ntp.org などの公開サーバーを選びます。
- 企業内サーバー
- 企業内に設置されたストラタム1または2のNTPサーバーを選びます。
- 地理的に近いサーバー
- 応答速度が速い、地理的に近いサーバーを選びます。
どれを設定しても問題ありません。先ほど解説した通り、ストラタムや公式サーバかどうかなどを基準に選択します。
3. 設定ファイルの編集
- 設定ファイルオープン
ntp.conf
またはchrony.conf
などの設定ファイルをテキストエディタで開きます。
- サーバー情報の追加
- 選定したNTPサーバーの情報を追加します。
# ntp.confの例 server [サーバーのURLまたはIPアドレス]
サーバをインストールする際にNTPの設定も同時に行うのが一般的です。
4. サービスの有効化と起動
- サービス有効化
- システムが起動したときにNTPサービスが自動的に起動するように設定します。
- サービス起動
- NTPサービスを起動します。
# サービス有効化 systemctl enable ntpd # サービス起動 systemctl start ntpd
以上が、NTPの設定と利用に関する基本的なステップです。基本的な設定はこれだけ。
ネットワーク学習の決定版(ネットワークエンジニアを目指すなら必見!)
↑ページ数が多く誰でも手軽に読める内容ではありませんが、ネットワークエンジニアであれば、ほぼ全員が一度は読んだことがある超・有料書籍。是非一度読破しておきたい1冊のご紹介です。
読者特典> 0から学ぶネットワーク入門