Cisco IOS の NTP 機能

Cisco IOS の NTP 関連の情報をまとめます。 といっても自分が気になったところだけですが。

最低限の設定

実環境では通常 NTP サーバが用意されていると思います。 そのサーバを参照して同期を取るためには ntp server コマンドを設定します。

ntp server 10.10.10.1

ntp server コマンドで複数のサーバを設定する程度で十分な環境も多いと思います。

ntp server コマンドを入れるとその Cisco 機器自身も NTP サーバとして動作し始めます。 従って他の NTP クライアントがその機器を NTP サーバとして参照することが可能となります。 敢えてこれを防ぐ場合は ntp access-group コマンドでアクセス制御を行う必要があります。

ntp master コマンドが必要な時

ntp master コマンドはタイムソースとして自身のハードウェアクロックを参照するためのコマンドです。 このコマンドを正しく使うためには、機器はハードウェアクロック (いわゆる内部時計) とソフトウェアクロックの2つを持っているということをまず理解しなければなりません。 これら2つは別物で時刻に差が生じることもあり得ます。

通常ハードウェアクロックが参照されるのは OS の起動時のみで、あとはソフトウェアクロックによって時間が刻まれます (clock read-calendar とか calendar set のようなハードウェアクロック関連コマンドもありますが)。 ログなどの時刻表示には全てソフトウェアクロックの値が使われます。 ntp 関連コマンドはソフトウェアクロックを指定したタイムソースに同期させるためのものです。

ntp master コマンドが設定されるとハードウェアクロックをタイムソースとして参照して、ソフトウェアクロックを調整するようになります。 先に書いた通り、ntp server コマンドを入れれば上位サーバの次の階層の NTP サーバとして動作するので、タイムソースが上位サーバのみで良い場合は ntp master コマンドを追加する必要はありません。 ntp master コマンドが必要なのは以下の2つの場合だと思います。

  1. 閉じられたネットワーク等他に NTP サーバがいない環境で、この Cisco 機器を NTP サーバにしたい時
  2. 障害等の原因で上位の NTP サーバを参照することができないときにこの機器の内部時計をタイムソースとしたい時

ただし、2. の目的で ntp master を用いるときは、参照する上位の NTP サーバより下の階層となるよう適切な stratum を設定する必要があります。 最低でも (上位サーバの stratum) + 2 を設定しておけば、ハードウェアクロックの方を下位に位置づけることができます。

例えば上位の NTP サーバが stratum 3 で動作しているとき、ntp master コマンドの stratum は 5 以上に設定します。 以下は ntp master 5 を投入した機器での表示例です。

router#show ntp associations
Load for five secs: 0%/0%; one minute: 3%; five minutes: 2%
Time source is NTP, 20:29:53.946 JST Wed Aug 4 2010
address         ref clock     st  when  poll reach  delay  offset    disp
*~10.10.10.1       11.22.33.44       3    45    64  377     0.8   -4.60     2.1
+~127.127.7.1      127.127.7.1       4     3    64  377     0.0    0.00     0.0
* master (synced), # master (unsynced), + selected, - candidate, ~ configured
router#

127.127.7.1 が内部時計で、(ntp master で設定した stratum) – 1 となっていることに注意が必要です。

ネットワークに複数の機器がある場合はどの機器に ntp master を設定するか決めておき、他はそれを参照するようにした方が管理しやすいと思います。 不適切な stratum で ntp master コマンドを設定するのは NTP 環境を不安定にしてしまうので気をつけましょう。

また、ntp master を設定する場合は以下の2つも必要になると思います。

clock update-calendar
clock calendar-valid

前者は NTP でハードウェアクロックも更新するための設定です。 後者は「ハードウェアクロックを authoritative なタイムソースとする」のだそうですが、正直なところ今ひとつ効果がよくわかりません (試すことができていません)。 それでも Cisco が紹介しているベストプラクティスの設定例に含まれていて推奨されているように読めるので、少なくとも害はないと思います。

昔は機器をリブートする度に時刻はリセットされていた気がしますが、最近の機器はきちんと覚えてるようなので、ntp master を設定する/しないに関わらず NTP 環境では clock update-calendar を入れておくのが良いと思います。

次回も NTP 関連について書く予定です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*