コンピュータの時間は、とても正確に刻まれています。
皆さんも時刻を確認するのにパソコンの時計を見ることがあるのではないでしょうか。
この正確な時刻情報を実現している仕組みに関わっているのがNTPサーバーです。
今回は、NTPサーバーについて、その仕組みや役割、なぜ時刻同期が重要なのかや設定方法について解説します。
Windows VPSならWinserver!
★丁寧な電話サポートで安心★
\2週間無料トライアル実施中/
2週間無料で試す
目次
NTPサーバーとは
NTPサーバーは、あらゆる機器に正しい時刻を提供します。
まずは、NTPの概要や仕組みについて見ておきましょう。
NTPとは
NTPとは「Network Time Protocol」の略で、ネットワークで接続されたあらゆる機器の時刻情報を合わせ、同期させるためのプロトコルです。
NTPで時刻合わせを行える機器には、パソコンやサーバーといったコンピュータの他にもスマートフォンや、ルーターなどのさまざまな情報機器、家電製品など多種多様なものがあります。
NTPの役割
NTPの役割は、一言で言うと「さまざまな機器に正確な時刻情報を提供すること」です。
仕組みのところで解説しますが、NTPサーバーは、参照してくるさまざまな機器に対して正確な時刻情報を提供しています。
加えて、定期的に繰り返すなどの仕組みでずれを修正していく機能も持っています。
現在の情報機器は、とくにサーバーなどで厳密な時刻同期や正確な時刻情報を持っている必要があるものも増えています。
こうした機器にも正確な時刻情報を提供することで、円滑なシステム連携等が行えるようにしていくのもNTPの役割です。
NTPの仕組み(サーバーとクライアント)
具体的にNTPは、どのような仕組みで構成されているのでしょうか。
ここでは、NTPにおけるサーバーとクライアントの仕組み、どのようにして正確な時刻情報を取得し、伝えているのかを解説します。
NTPサーバーとNTPクライアント
NTPには大きく分けて2つの役割があります。
- NTPサーバー:時刻情報を提供する仕組み
- NTPクライアント:時刻情報をNTPサーバーから受け取る(一般の端末)
以下では、これを踏まえて改めてNTPサーバーの仕組みについて解説していきます。
NTPサーバーの仕組み
NTPサーバーは、クライアントに対して正確な時刻情報を提供する仕組みを持っています。
では、どのようにして正確な情報を提供しているのでしょうか。
NTPサーバーは、「Stratum」と呼ばれる階層で構成されています。
最も上位に位置するNTPサーバーは「Stratum0」と定義されており、GPSや原子時計から正確な時間を取得しています。
そして、Stratum0より下層にあるStratum1やStratum2は、上位のStratumにあるサーバから時刻情報を受け取っています。
このように、NTPサーバーは、最上位のStratum0から順次時刻情報を階層的に受け取っていく仕組みとなっています。
NTPサーバーはなぜ重要?
NTPサーバーは、参照される機器に正確な時刻情報を提供しています。
しかし、正確な時刻情報はなぜそこまで重要なのでしょうか。
ここでは、NTPサーバーが提供している時刻情報が重要である理由を説明します。
NTPサーバーを使った時刻同期を行うことが重要とされる理由は、以下の3点です。
- 複数のシステムやサーバーを連携させる時に、正確な時刻を持っていることが前提となるケースが多い。
Active Directoryのように複数サーバーで常にデータ同期をおこなっている仕組みでは、正確な時刻同期をしていることが必須条件となっています。 - ネットワーク機器やサーバーで時間が違う場合、認証などでうまくいかないケースがある
現代では、さまざまな機器が複雑に組み合わさってネットワーク認証などを行うため、各機器のタイムスタンプが揃っていることが不可欠です。 - 障害時の調査などに正確な時刻が欠かせない
NTPを活用した時刻同期と正確な時刻を刻むことがいかに重要であるかというのは、このような理由があります。
代表的なNTPサーバー
NTPサーバーには、幅広く使われている代表的なものがあります。
実際に利用する場合は、これらの中から選択することになります。
この章では、さまざまな組織によって提供される代表的なNTPサーバー、そしてNTPサーバーを構築する場合の代表的なソフトウェアといった2つの観点から解説します。
時刻同期で参照対象となるNTPサーバー
まずは、よく使われる公開NTPサーバーをいくつか紹介します。企業や公的機関などが運用しているもので、自由に参照先として活用できるようになっています。
幅広く使われているものには、以下のようなものがあります。
- 独立行政法人情報通信研究機構(NICT) の公開NTPサーバー
- NTP POOL PROJECTの公開NTPサーバー
- インターネットマルチフィード(MFEED)の公開NTPサーバー
など
また、公開NTPサーバーには、Windows OSで使われている「time.windows.com」や、Macで使われている「time.apple.com」のように各社が自社のOS用に提供しているといったものもあります。
よく使われるNTPサーバーソフトウェア
社内で利用するNTPサーバーを構築する場合などは、自分でNTPサーバーのソフトウェアを選択してNTPサーバーを構築する必要があります。
具体的に、どのようなものが使われることが多いのでしょうか。
まず、NTPサーバーソフトウェアには、OSに機能として組み込まれている場合があります。
たとえば、Windows Serverでは、いくつか設定が必要ですがOSの機能でNTPサーバーを利用することができます。
そして、より手軽なのがNTPサーバーソフトウェアの利用です。
一般的に使われるNTPサーバーソフトウェアには、以下のようなものがあります。
なお、Linuxについてはいずれも標準パッケージとして含まれているか、もしくは追加が可能なものです。
- ntpd: Linux
- Chrony: Linux(CentOS)
- 桜時計:Windows
サーバーをNTPサーバーとして利用する場合は、LinuxやWindows Serverなど、サーバー用途に使えるOSで、加えて標準的にNTPサーバー機能を持つものがおすすめです。
NTPサーバーを参照するには
さまざまな機器でNTPサーバーを参照して時刻同期を行うには、どのようにすれば良いのでしょうか。
この章では実際にNTPサーバーを参照して時刻同期を行うための方法を解説します。
Windowsの時刻同期方法
標準で、Microsoftが提供しているNTPサーバーを参照する設定になっているので、通常は変更の必要はありません。
ですが、自社のサーバーを参照したいといった場合には、以下のように変更を行います。
① 「コントロールパネル」を開く
② 「時計と地域」を開く
③ 「日付と時刻」-「日付と時刻の設定」を開く
④ 「インターネット時刻」タブを開き、「設定の変更」を押す
⑤ サーバーの欄に参照したいNTPサーバーを入力して「OK」を押す
Macの時刻同期
Windowsと同じように標準で、Appleが提供しているNTPサーバーを参照する設定になっているので、通常は変更の必要はありません。
ですが、自社のサーバーを参照したいといった場合には、以下のように変更を行います。
① 「システム環境設定」を開く
② 「日付と時刻」を開く
③ ロックを解除する
④ 「日付と時刻を自動的に設定」の横のウインドウに使用したいNTPサーバーを入力する
Linuxの時刻同期
ここでは、ntpdを使う方法を解説します。
Linuxで時刻同期を行うためには、ntpdなどのクライアントソフトウェアのインストールが必要となります。
なお、余談ですがLinuxでNTPサーバーを構築する場合も設定内容は若干違いますが、同様にntpdを使います。
① ntpdのインストール
<Redhatの場合>
<Debian(Ubuntu)の場合>
② NTPサーバの参照設定を行う:/etc/ntp.confを以下のように編集する
#server ntp.your-provider.example
server <参照したいサーバーを入力>
③ Ntpdの再起動
また、その他のOSやネットワーク製品等では、それぞれの手順書等にやり方が記載されているので、そちらを参照するようにしましょう。
NTPサーバーの構築方法
今度は、NTPサーバーの構築方法について、見ておきましょう。
社内のさまざまな機器が参照するNTPサーバーを構築する方法を解説します。
ここでは、Windows ServerとLinuxについて解説します。
なお、Macについては標準でNTPサーバーの機能は持たないので割愛します。
Windows Server NTPサーバー構築
Windows ServerをNTPサーバーにするには、以下のような手順を実施します。
① レジストリエディタを開き、以下のように編集する。
「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters」
→Typeを修正、値のデータに「NTP」と入れる
② 「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config」
→AnnounceFlagsを修正、DWORD値の編集で「5」と入れる。
③ 「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer」
→「Enabled」を編集、「DWORD値の編集」、「値のデータ」に「1」と入れる。
④NTPサーバーを有効にします。
「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters」
→「NtpServer」を修正、「値のデータ」に「Peers」と入れる
⑤ 時刻の修正設定を行います。
「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config」
→[MaxNegPhaseCorrection]を修正、「DWORD値の編集」、10進で「値のデータ」に「TimeInSeconds」と入れる。
⑥ Windows Timeサービスを再起動します。
2020.04.02
Windows Serverとは。他OSとの違いや強み、将来性を解説
Windows Serverは、Microsoftからリリースされているサーバー系OSです。Windowsといえば、多くの人...
Linux NTPサーバー構築
先ほどの参照と同じようにntpdを使います。
① NTPサーバーの設定を行います。:/etc/ntp.confを以下のように編集する
#server ntp.your-provider.example
server <上位のNTPサーバー> *上位のNTPサーバーを設定
〜〜〜〜
# Clients from this (example!) subnet have unlimited access, but only if
# cryptographically authenticated.
#restrict 192.168.123.0 mask 255.255.255.0 notrust
restrict 192.168.10.1 mask 255.255.255.0 notrust
*クライアントからのアクセス許可(許可を与える範囲を記載)
② Ntpdを再起動します。
また、その他のOSやネットワーク製品等では、それぞれの手順書等にやり方が記載されているので、そちらを参照するようにしましょう。
まとめ
NTPサーバーは、正確な時刻を参照されたコンピュータやネットワーク機器、スマートデバイスなどに提供するための仕組みです。
現代は、さまざまな機器やサービスが複雑に連携している中で、正確な時刻情報(タイプスタンプ)が連携に必須となっていたり、アクセスログの解析などセキュリティ上も不可欠になっていたりするケースもあります。
今回解説したように、NTPは時刻同期を行うために外部サーバーを参照することも、自社に構築することも比較的容易にできます。
設置を行う場合は、ぜひ参考にしてみてはいかがでしょうか。