Cisco の NTP の仕様と設定 〜serverとpeerの違い等〜

スポンサーリンク
スポンサーリンク

基本. NTPサーバを3台以上指定できるとき

NTPプロトコルでは RFC5905で書かれている通り、時刻を取得している複数のサーバのうち、外れ値を除いた上で最大3台のNTPサーバの時刻情報を使って時刻を推定し、自身のシステムクロックに反映します。(このあたりのもう少し詳しく述べたものをここで記事にしています。

なので、3台以上設定するのが望ましいです。(RedHatでは4台を推奨しています)

---NTPクライアントの設定---
(config)# ntp server 10.1.2.3
(config)# ntp server 172.16.1.23
(config)# ntp server 192.168.12.3

このコマンドにより、NTPクライアントはmode=3(NTP Client)のNTPパケットを送信し、NTPサーバはmode=4(NTP Server)のパケットを返信します。

ntpで更新したシステムクロックを、以下のコマンドでハードウェアクロックに同期できます。ハードウェアクロックは電源が落ちているときも動き続ける、機器内部の物理的な時計です。つまり、以下コマンドにより、次回システム起動時に、時刻ズレを極力抑えることができます。

---NTPクライアントの設定---
(config)# ntp update-calender

calenderとは、cisco用語でハードウェアクロックを意味します。そして、clock がシステムクロック(Cisco IOSが起動時にハードウェアクロックから情報をもらい、以降はCisco IOSで管理する時刻情報。NTPによって更新されるのもこのシステムクロック。)を意味します。

スポンサーリンク

ケース1. NTPサーバが2台しか無いとき

NTPサーバが2台しか無いときは、もしどちらかの時刻が大きく狂ってしまったとき、どちらが外れ値なのかが区別できないため、同期をやめてしまいます。それに備えるためには、あまり望ましくはありませんが、 prefer オプションを使えば、2台が同じような時刻を示すときは2台の情報を使い、どちらかの時刻が狂ったときは prefer オプションがついたほうのNTPサーバの情報を使います

---NTPクライアントの設定---
(config)# ntp server 10.1.2.3 prefer
(config)# ntp server 172.16.1.23

ケース2. NTPサーバが1台も無いとき

インターネット接続をしないクローズNWにおいても時刻同期をする場合は、Cisco ルータのハードウェアクロックを NTP サーバとして動作させることができます。この場合、Stratum を指定します。本来、Stratum 1の NTP サーバと同期しないと Stratum 2にはなれませんが、以下コマンドにより、Stratum 2の NTP サーバとして動作させることができます。

---NTPサーバの設定---
(config)# ntp master 2

スポンサーリンク

ただし注意点として、Ciscoのデフォルトではハードウェアクロックは正しくないと見なされ、NTPで時刻配信することができません。以下コマンドで、自身のハードウェアクロックが正規なものと見なし、NTPで時刻配信することができるようになります。

---NTPサーバの設定---
(config)# clock calendar-valid

また、上記コマンドの前提として、ハードウェアクロックを手動で設定する必要があります。

---NTPサーバの設定---
# calendar set hh:mm:ss day month year

そして、ハードウェアクロックをシステムクロックに反映します。

---NTPサーバの設定---
# clock read-calendar

ケース3. 同じStratumのNTPサーバと同期するとき

ntp serverntp peer は似ていますが根本的に違います。server コマンドでは主従関係がはっきりしていますが、peer では同じ Stratum の NTP サーバ同士で互いに互いの時刻情報を使って時刻同期することが可能です。また、Stratumが低いほうが自動的にサーバとして機能するので、バックアップ用途でよく使われます。例えば以下の構成が取れます。

もし、R1からNTP Server 1.2.3.4 への疎通が取れなくなった場合は以下のように動作します。

スポンサーリンク

R1のStratumは5に下がりますので、R3はStratum6になります。すると、R4はStratum3なので、R3の情報は無視しますが、R3はR4の時刻情報を引き続き使い続けることができます。

コマンドは、図にある通り以下のようになります。

(config)# ntp peer 4.4.4.4
これにより、mode=1(Symmetric Active)のNTPパケットを送信するようになります。相手にpeerの設定がなければmode=2(Symmetric Passive)のNTPパケットを返信します。

ケース4. NTPクライアントがNTPサーバと同一セグメントに多数ある場合

NTPクライアントがNTPサーバと同一セグメントに多数ある場合、ntp boradcastサーバが使えます。以下コマンドによりNTPサーバはmode=5(Broadcast Server)のNTPパケットをブロードキャストするようになります。

---NTPサーバの設定---
(config-if)# ntp broadcast
---NTPクライアントの設定---
(config-if)# ntp broadcast client

ただし、NTP Client/ServerモードやPeerモードでは、互いに時刻情報を送り、互いにそれらの情報を元にRTT(Round Trip Time)等を算出し、より精密な時刻を算出している(詳細はこちら)のに対し、Broadcast モードではNTPサーバがNTPクライアントに対して一方的にBroadcastするのみです。そのため、Broadcast モードの時刻同期の精度は、他のモードに比べて劣ります

そこで、その精度を少しでも向上させるためには、NTPクライアント側で以下のコマンドにより、想定のRTT値を設定します。(設定しない場合はデフォルト値3000 (msec)が使われます)

(config)# ntp broadcastdelay [1-999999 (msec)]

RTT値はping等の応答時間を想定しても良いでしょう。

スポンサーリンク

ケース5. 認証による防御をする場合

NTPは簡易でオープンであるがゆえに、今までに脆弱性も多く報告されています。そこで認証やアクセス制御を行い、対策をしていくことが重要です。

NTPバージョン3以降は認証を行うことができます。これはNTPサーバがNTPクライアントに対し、時刻情報と共に認証情報を送り、NTPクライアントが、『NTPサーバが正規のものか』を認証します。NTPサーバはNTPクライアントの時刻は同期しないので、NTPサーバはNTPクライアントの認証は行いません

---NTPサーバの設定(認証される側)---
(config)# ntp authentication-key 5 md5 C1sc0
(config)# ntp trusted-key 5
---NTPクライアントの設定(認証する側)---
(config)# ntp authenticate
(config)# ntp authentication-key 5 md5 C1sc0
(config)# ntp trusted-key 5
(config)# ntp server 10.1.1.1 key 5

ntp authenticate コマンドは、『NTPクライアントがNTPサーバを認証してから時刻同期する』という設定になります。

ntp trusted-key コマンドは、NTPクライアントの場合は『NTPパケットの"Key Identifier"フィールドにそのキー番号を付け加える』、NTPサーバの場合は『NTPクライアントからのキー番号に対する認証情報を"dgst"フィールドに付け加える』という動作をさせる設定になります。

NTPのパケットフォーマットはこちらを参照下さい

スポンサーリンク

ケース6. アクセス制御による防御をする場合

Ciscoでは以下の4種類のアクセス制御ができます。

(config)# ntp access-group peer 1

access-list 1で許可されたIPについて、互いに時刻情報の提供が可能です。peerモード(mode=1 or 2のNTPパケット)に限らず、全てのモードでの接続が可能です。NTP control messageモード(mode=6のNTPパケット)に対しても応答します。

(config)# ntp access-group serve 2

access-list 2で許可されたIPについて、時刻情報の提供のみが可能です。相手からの時刻情報は無視します。これはpeerモードで互いに々stratumであっても無視します。また、NTP control messageモード(mode=6のNTPパケット)に対しては応答します

(config)# ntp access-group serve-only 3

access-list 3で許可されたIPについて、時刻情報の提供のみが可能です。相手からの時刻情報は無視します。これはpeerモードで互いに同stratumであっても無視します。また、NTP control messageモード(mode=6のNTPパケット)に対しては応答しません

スポンサーリンク

(config)# ntp access-group query-only 4

access-list 4で許可されたIPからのみ、NTP Control Messageモード(mode=6のNTPパケット)での接続が可能です。

NTP Control Messageは主にネットワークシステム監視で使うモードです。ネットワークシステム監視装置がControl Messageのクエリ(制御クエリと呼びます)を送信し、NTPサーバはControl Messageの応答(制御応答)を返します。ネットワークシステム監視装置は、NTPサーバから応答があるかどうかを確認しますが、時刻同期は一切行いません。

ケース7. 送信元IPの変更が必要な場合

アクセス制御を行う際に気を付けなければならないのが、送信元IPです。デフォルトでは、宛先IPに対するルーティングテーブルのNextHopインタフェースのIPが使われますが、同期先によってコロコロ変わると管理がしづらいです

なのでLoopbackインタフェースのアドレスをそのルータの代表アドレスとして使い、以下コマンドでそのLoopbackインタフェースのアドレスを送信元IPとするのが良いでしょう

(config)# interface loopback 1
(config-if)# ip address 1.1.1.1 255.255.255.255
(config)# ntp source loopback 1

これにより、NTPパケットを送信するときは常にIP=1.1.1.1になります。

スポンサーリンク
スポンサーリンク
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
スポンサーリンク