当記事はNTPについてご紹介します。
NTPとはネットワーク機器の時刻を同期するためのプロトコルです。なぜNTPを使用するのかといいますと、PCやルーターなどのネットワーク機器を管理する際に、それぞれの機器が正確な時刻を刻んでいることが非常に重要なことだからです。
例えば、ネットワークの障害発生時には管理者はシステムログやデバッグなどのメッセージを解析し、原因を探すことになります。メッセージには障害発生時刻などが出力されますが、それぞれの機器の時刻がずれていると、どの機器が最初にエラーを出して、何が原因なのか分からなくなり問題解決難しくなるという問題が発生します。
そのためネットワーク機器は時刻を同期しておく必要があるのです。
時刻を同期する方法ですが、もちろん管理者が手動でそれぞれの機器に対して正しい時刻を設定することもできますが、ネットワークが大規模になると膨大な手間や時間がかかってしまいます。
そこで使用するのが本記事で紹介するNTPというプロトコルです。
NTPを使用することで、TCP/IPネットワークを通じてネットワーク機器のシステムクロックを正確な時刻に同期させることができます。
どのような仕組みでNTPは機能しているのか?
そんな便利なNTPですが、どのような仕組みで機能しているかといいますと、
NTPクライアント(時刻を受け取る側)が、定期的に正確な時刻情報を維持するNTPサーバ(時刻を渡す側)に問い合わせを行うことで、NTPクライアントのシステムクロックを正確な時刻に補正するようになっています。
NTPのネットワークは図のようにStratumと呼ばれる階層構造になっています。
最上位に位置するNTPサーバが原子時計などから直接正しい時刻を得て、最上位のNTPサーバから時刻を同期する下位の新しいNTPサーバを構築し、またそのサーバからまた新しい下位のNTPサーバを構築するといったような構造を取っています。
このような階層構造をとることによって1つのNTPサーバにアクセスが集中し、サーバに負荷がかかりすぎてしまいNTPサーバがダウンしてしまうことを防いでいます。
原子時計などと直接同期しているNTPサーバをStratum1とし、下の階層に降りるにしたがってStratumの数値が1ずつ増加していき、最大でStratum15までのNTPサーバを構築することができます。(Stratum16にはNTPクライアントが存在するので、最下位のNTPサーバはStratum15として構成されます。)
NTP設定のコマンドについて
では実際にNTPを設定するコマンドの紹介です。
ルーターやスイッチに対して、クライアントとして同期を行うNTPサーバを指定するには、「ntp server」コマンドを実行します。複数のNTPサーバを指定した場合、preferオプションを設定することで、優先NTPサーバとして指定することができます。
この場合「prefer」を指定したメインのNTPサーバがダウンした際に、バックアップ用NTPサーバを指定して時刻同期をとります。
NTPクライアントの設定のため、「ntp client」コマンドではないのかと感じる方もいるかもしれませんが、どのサーバと同期するかを指定するため、「ntp server」コマンドでNTPクライアントの設定を行います。
また、ルーターやスイッチをNTPサーバ(つまり時刻を渡す側)として設定する場合は、「ntp master」コマンドを使用します。この時、自身のStratumを1~15の範囲で指定できますが、省略した場合は同期を取る参照先NTPサーバの下位としてStratumが設定されます。
NTPサーバの設定ですが、こちらもコマンドは「ntp master」なので注意をしましょう。
masterは日本語で師匠,親方などの意味があります。NTPサーバはクライアント(弟子)に対して時刻を伝える存在。つまり師匠や親方のような存在なのだとイメージしていただくと良いかもしれません。
今回はネットワーク機器の時刻を同期するためのプロトコルであるNTPについて解説せていただきました。お勉強の一助になれば幸いです。