本日はNTPについて話していきます。
NTPとはNW内の時刻合わせに使用されるものです。
PCの時刻設定はCMOSにクロックが内蔵されています。
この時計は容易に狂います。
OSが起動するとき、一度だけこのCMOSの時計を参照しています。
起動したあとはその時刻を使用します。
このようにハードウェアで保存されている時刻と、ソフトウェアで管理している時刻の2つがありますが、どちらも正確さに欠けるものです。
またCMOSの電池が消耗したりすると時刻は簡単に狂ってしまいますね。
これを解消するためにNTPサーバが存在します。
WindowsOSでは起動後はデフォルトでMicrosoftのNTPサーバを参照しています。
なんだ、それなら大丈夫じゃん
と思った方も多いかと思いますが、MicrosoftはじめさまざまなOSの時刻合わせ割と大切なものでNW内では確実に合わせておく必要があります。
たかが時刻じゃん
という感想を持っている方もいるかも知れませんが案外重要です(なのでここで取り上げました。)
時刻があっていないとなにが起こるかというと、
まずは障害調査の際、ログを確認した折に時刻がバラバラだと調査に余計な手間がかかります。
PCの時刻とサーバの時刻がずれていると、ログの見方がとても難しくなります。
・PC-Aからhhssにメールが送出された(PC-Aのログ)
・メールサーバ上でhhssにPC-Aからのメールが届いた(サーバのログ)
ここに通信にかかる時間以上に差が発生したり、PC-Aがメールを送出する前にメールサーバにメールが届いていることになってたりすると、非常に読みにくいものになりますよね。
それどころか、もっと重大な問題があります。
認証サーバ(ドメインコントローラ)というものは、時刻があっていないクライアントを信用しません。
つまりドメイン参加も認めない、認証もしない、ログインを許さないということです。
これは重大ですね。
ではどうするのか、と言いますと、マイクロソフトのActiveDirectoy環境ではドメイン参加した際にドメインコントローラに時刻を合わせるように自動的に構成されます。
ですのでWindowsだけの環境でADを使用している場合はドメインコントローラがNTPサーバとして振る舞います。
Linuxなどのその他のクライアントがいる場合、例えばDHCPオプションでNTPサーバの構成を強制するとか、ローカルで設定するなどの方法でドメインコントローラを参照させます。
プリンタや、その他の機器もNTPが設定できるものがあるのですべてドメインコントローラを向かせれば問題ありません。
それでは、そのドメインコントローラはどこを参照するのでしょうか。
おおくの場合、Microsoft製品のみでシステムが構成されることはありません。
ドメインコントローラ以下のマイクロソフト製品群は、さらにエンタープライズな環境の一部となっていることが多くあります。
他の業務アプリが動作しているLinuxで構成されたWebサーバや、さらに上位にはFW機器、負荷分散装置、SSLアクセラレータなどもいるでしょう。
また、複数システムが共有しているディスク装置もあるかも知れません。
エンタープライズを考えた場合、NTPはどう構成されるべきなのでしょう。
それは、システム全体でトップレベルに1つのNTPサーバを設置するということです。
もちろん冗長されるべきなのですが、1つとはそういう意味ではなくて1単位のNTPサーバということです。
NTPサーバのアプライアンス製品も存在します。
SEIKO社製品など、よく見かけます。
https://www.seiko-sol.co.jp/products/time_server/
もちろん代表となるLinuxサーバでも大丈夫です。
システム内のすべてのサーバ/クライアントをこのNTPサーバを参照するようにしても良いかも知れませんがエンタープライズの規模によっては負荷が心配です。
各システムの中で代表となるサーバのみをこのNTPサーバを参照するよう構成します。
そして、次に代表でないサーバ群をこの代表サーバを参照するよう構成すればよいでしょう。
このあたりは思想が絡んでくるため設計者の意図によってこのとおりでないことがあります。
ドメインコントローラも代表サーバの一員としてこのNTPサーバを参照します。
ドメイン配下のすべてのノードはドメインコントローラを参照することでOKですね。
ここはそうあるべき(Microsoftの見解)です。
これでエンタープライズにおけるNTPのツリーが完成しました。
それではこのNTPサーバはどこを参照するのかといいますと、昔は福岡大学に合わせることが日本では通例でした。
いまではほかにももっといろいろありますが、
・福岡大学(近い内に停止するって書いてあってびっくり!)
https://www.itc.fukuoka-u.ac.jp/i/service/special/public_ntp
・NICT(国立研究開発法人情報通信研究機構)
https://jjy.nict.go.jp/tsp/PubNtp/index.html
その他、国内1次NTPサーバなどで調べると出てきますが、地理的に最も近いものを選ぶのが良いと思われます。
さて、この設定したNTPですが注意点があります。
LinuxのchronyにしてもMSのOSにしても「時刻のズレは徐々に少しずつ修正されていく」ことに留意してください。
「設定したはずなのに、なかなか時刻が合わない」ということもしばしばあるかと思いますが、使用しているOSのコマンドのmanなどを参照してログを確認しましょう。
また、NTPサーバは複数設定出来ますのでプライマリ、セカンダリの2つくらいは設定しておきたいですね。
もし冗長構成を取っていないのでしたらセカンダリはエンタープライズのトップのNTPあるいはそれが冗長していなければ更に上位の1次NTPサーバを参照させておけば良いと思います。(このあたりも設計者の思想により左右されます。)
と、このようにそんなに重要そうに思えない地味なプロトコルNTPの重要さを説明してみました。
このシリーズ全般に言えることなのですけど具体的なオペレーションの方法は製品やバージョンにより異なるので、概念だけでも知っておけば良いかなと思っています。