NTP

目次

NTPとは

NTP(Network Time Protocol)は、パソコンやスマホ、ルータなどの時計をネットワーク経由で正しくそろえるための仕組みです。これを使うと次のようなメリットがあります。

  • ログ(記録)の時間が正しく残る
  • 予約したサービスを正しい時間に動かせる
  • 証明書を使った認証が正しく動く

NTPのパケット

NTPではクライアントとサーバが「123番ポート」を使ってやり取りします。使うのは軽い通信方式であるUDPです。

通信方向使用するポート番号
クライアントからサーバへUDP 123
サーバからクライアントへUDP 123

NTPの階層(stratum)

NTPサーバは階層的に接続されています。上位から下位へと時刻が伝わっていく仕組みです。

階層説明
Stratum 0原子時計やGPSなどの正確な時刻源(NTP自体ではない)
Stratum 1Stratum 0を直接参照するサーバ(最も上位のNTPサーバ)
Stratum 2Stratum 1のサーバと同期するサーバ
Stratum 3以降さらに下位のサーバ。最大でStratum 15まで
Stratum 16同期できていない状態を意味する

NTPの同期モード

NTPにはいくつかの動作モードがあります。

モード説明
Server / Clientモード一般的に使われる方式。クライアントがサーバに時刻を合わせる
Symmetricモード同じ階層にいるサーバ同士が、お互いに時刻を合わせる仕組み

NTPの仕組み

NTPは単にサーバの時刻をコピーするのではなく、通信にかかる遅れ時間を計算して正確に補正します。やり取りされる時刻情報は次の4つです。

時刻情報内容
T1クライアントが問い合わせを送った時刻
T2サーバがその問い合わせを受け取った時刻
T3サーバが返事を送った時刻
T4クライアントが返事を受け取った時刻

NTPの2036年問題

NTPでは時間を「1900年1月1日からの秒数」で数えています。32ビットで数えているため上限があり、2036年2月6日で限界を迎えます。これを超えると「時計がリセットされた」と誤解してしまう可能性があり、NTPの2036年問題と呼ばれています。

SNTPとは

SNTP(Simple Network Time Protocol)はNTPの簡易版です。サーバにはならず、時刻をもらうだけの仕組みです。小さな機器や単純な環境でよく使われます。

Cisco機器の時刻設定

CiscoルータやCatalystスイッチに正しい時刻を設定しておくことは、ログ管理やセキュリティ監査のために非常に重要です。時刻設定の方法は大きく分けて 手動設定NTPSNTP の3種類があります。どの方法でもまず最初に行うのが タイムゾーンの設定 です。

デフォルトでは UTC(協定世界時) になっており、日本で使用する場合は JST(日本標準時)=UTC+9時間 を指定します。

(config)# clock timezone JST 9

+9 と指定しても同じ意味になります。show run では clock timezone JST 9 0 のように表示されます。

手動設定:システムクロック

Cisco機器には「システムクロック」と「ハードウェアクロック」の2つの時計があります。

  • システムクロック:ソフトウェア的な時計。精度は高いが再起動で初期化される。
  • ハードウェアクロック:バッテリ駆動のカレンダー機能。再起動時にシステムクロックの初期値として使われる。

システムクロックは、メモリ上で動作するソフトウェア的な時計です。現在の時刻は次のコマンドで確認できます。

# show clock

時刻を手動で設定するには clock set コマンドを使用します。

# clock set hh:mm:ss DATE MONTH YEAR

例えば、2020年7月24日15時20分に設定する場合は次の通りです。

# clock set 15:20:00 24 Jul 2020

ただし、この設定は再起動すると消えてしまう点に注意が必要です。

手動設定:ハードウェアクロック

ハードウェアクロックは以下で確認できます。

# show calendar

手動設定は次のように行います。

# calendar set hh:mm:ss DATE MONTH YEAR

また、システムクロックが正確な場合、それをハードウェアクロックへ同期させることができます。

# clock update-calendar

このようにして、システムクロックとハードウェアクロックの時刻を一致させます。

サマータイム設定(参考)

日本ではサマータイムを採用していませんが、Cisco機器にはサマータイム設定の機能があります。

(config)# clock summer-time timezone recurring week day month hh:mm week day month hh:mm offset

例えば、2020年8月1日9時から2020年9月31日9時までをサマータイムとする場合は以下の通りです。

(config)# clock summer-time JST date 1 Aug 2020 9:00 31 Sep 2020 9:00

offset はサマータイムで追加される時間(通常60分)を指定します。

試験対策:「Cisco機器の時刻設定はまずタイムゾーンから」「システムクロックとハードウェアクロックの違い」「clock set は再起動で消える」という点を押さえておくことが重要です。

NTPの基本設定

CiscoルータやCatalystスイッチは、NTP(Network Time Protocol)を使って外部のNTPサーバと時刻同期を行うことができます。正しい時刻を保つことで、ログの整合性やセキュリティ管理に役立ちます。

NTPクライアントの設定

外部のNTPサーバと同期するには ntp server コマンドを使います。複数のサーバを指定することもでき、その場合は prefer を付けて優先サーバを決められます。

(config)# ntp server [ ip-address | hostname ] [ prefer ]

例:

(config)# ntp server 192.168.1.254
(config)# ntp server ntp.nict.jp prefer

ホスト名を指定する場合は、DNSによる名前解決が必要です。

送信元インターフェースの指定

複数のインターフェースを持つ機器では、NTPパケットを送信するインターフェースを明示的に指定しておくとトラブルシューティングが容易になります。

(config)# ntp source interface

例:

(config)# ntp source GigabitEthernet0/0

NTPサーバとして動作させる(マスタークロック)

クローズド環境で外部にNTPサーバが存在しない場合、Cisco機器自身をNTPサーバとして利用することができます。この場合、内部のハードウェアクロックを基準にします。

(config)# ntp master [ stratum ]
  • stratum は1~15で指定可能(省略時は8)
  • 値が小さいほど精度の高いサーバを意味する

例:

(config)# ntp master 5

ハードウェアクロックの同期

デフォルトではNTP同期対象はシステムクロックのみです。ハードウェアクロックも同期させたい場合は以下を設定します。

(config)# ntp update-calendar

NTPのステータス確認

NTPサーバと同期できているかどうかは show ntp associations コマンドで確認します。

  • サーバIPアドレスの左に * が付いていれば同期中

確認項目の意味は次の通りです。

項目意味
addressNTPサーバのIPアドレス
ref clockNTPサーバが参照している上位サーバ
stストラタム値
when最後にNTPパケットを受信してからの経過秒数
poll次の問い合わせまでの間隔(秒)
reach到達可能性(8進数)
delay往復遅延時間(ms)
offsetサーバとの差(ms)
dispゆらぎ(ms)

さらに show ntp status でも同期状況を確認可能です。

  • 正常同期中: Clock is synchronized, stratum 3, reference is 192.168.1.254
  • 同期していない場合: Clock is unsynchronized, stratum 16, no reference clock.

試験対策:「同期できているかどうかは * マークを見る」「同期していない場合は stratum 16」といった点がよく出題されます。

シスコデバイス:NTPのデフォルト設定

CiscoルータやCatalystスイッチは、特別な設定をしなければ以下のようなNTPのデフォルト状態で動作します。

機能デフォルト値
NTP認証無効(認証鍵は未設定)
NTPピア/アソシエーション未設定
NTPブロードキャスト無効(どのI/Fも送信しない)
NTPアクセス制限ACL未指定
NTP送信元IPアドレス発信インターフェースのアドレスを使用

このため、初期状態では外部と時刻同期できるようにはなっていません。基本設定(ntp server など)を行って初めて動作します。

NTPの3つの同期モード

NTPでは、機器同士の時刻同期を行う方法として以下の3つのモードがあります。実際によく利用されるのは Server / Clientモード です。

NTPモード説明設定コマンド例
Server / Clientクライアントがサーバに同期を取る。最も一般的。(config)# ntp server 192.168.1.10
Symmetric Active / Passive(対称モード / ピアモード)同じ階層に属するNTPサーバ同士で時刻を同期する。(config)# ntp peer 192.168.1.20
Broadcastサーバがブロードキャストで時刻を配信し、クライアントが受信する。(config-if)# ntp broadcast(config-if)# ntp broadcast client

試験対策:「Server/Clientが基本」「Symmetricはサーバ間」「BroadcastはLAN向け」という整理が重要です。

NTPクライアントの設定

NTPサーバと同期するクライアント設定は以下の通りです。

(config)# ntp server [ ip-address | hostname ] [ prefer ]
  • ip-address:NTPサーバのIPアドレス
  • hostname:NTPサーバのホスト名(DNS解決が必要)
  • prefer:複数サーバを指定した場合、優先するサーバを明示

例:

(config)# ntp server 192.168.1.254 prefer

NTPピア(対称モード)の設定

同じ階層のNTPサーバ同士を同期させたい場合は、以下のコマンドを使用します。

(config)# ntp peer ip-address [ version number ] [ key id ] [ source interface ] [ prefer ]
  • ip-address:同期対象のピアのアドレス
  • version number:NTPのバージョン(1~4、デフォルトは3)
  • key id:認証設定がある場合に指定
  • source interface:送信元IPアドレスに使うI/F
  • prefer:複数ピアを指定した場合の優先ピア指定

NTPブロードキャストの設定

LAN内でサーバが一斉に時刻を配信し、クライアントが受信する方式です。

サーバ側(送信):

(config)# interface GigabitEthernet0/0
(config-if)# ntp broadcast [ version number ] [ key id ] [ destination-address ]

クライアント側(受信):

(config)# interface GigabitEthernet0/0
(config-if)# ntp broadcast client

なお、NTPv3ではブロードキャストを使用しますが、NTPv4ではマルチキャストを利用します。その場合、以下のコマンドに置き換えます。

  • サーバ側:ntp multicast
  • クライアント側:ntp multicast client

試験対策:「NTPの3つのモードと用途」「NTPv3はブロードキャスト、NTPv4はマルチキャスト」「デフォルトではNTPは無効」という点をしっかり整理して覚えることが重要です。

NTP:認証とセキュリティ設定

Ciscoデバイスでは、NTPを単純に時刻同期の仕組みとして利用するだけでなく、認証やアクセス制御を組み合わせることで、信頼できるデバイスとのみ通信させることができます。これはセキュリティ対策として重要であり、特に外部のNTPサーバと同期する場合には必須の知識です。

NTP認証の設定手順

NTP認証を導入すると、正しいキーを持つ相手とのみNTP通信を許可できます。設定の流れは以下の通りです。

  1. 認証機能を有効化 (config)# ntp authenticate
  2. 認証キーの定義 (config)# ntp authentication-key number md5 value
    • number:キー番号
    • value:任意の文字列
    例: (config)# ntp authentication-key 1 md5 Cisco123
  3. 信頼するキーを指定 (config)# ntp trusted-key key-number
  4. クライアント側でサーバ指定時にキーを使用 (config)# ntp server ip-address key key-number

→ この4ステップで、NTPサーバとクライアント間の認証付き同期が実現します。

NTPアクセス制御(ACL)

ACLを組み合わせることで、どの機器がNTPサービスを利用できるかを制御可能です。特に外部サーバと通信する場合には有効です。

(config)# ntp access-group [ query-only | serve-only | serve | peer ] acl-number
  • query-only:制御クエリのみ許可
  • serve-only:時刻要求のみ許可
  • serve:時刻要求と制御クエリは許可するが、同期化は不可
  • peer:全て許可(もっとも広い権限)

よく使われるのは serve-onlypeer です。
例えば「社内LANからの時刻要求は許可するが、外部からの同期要求は拒否する」といった制御が可能です。

特定インターフェースでのNTPサービス無効化

デフォルトでは、すべてのインターフェースでNTPが有効になっています。不要なインターフェースでNTPを止める場合は以下のように設定します。

(config)# interface GigabitEthernet0/1
(config-if)# ntp disable

アソシエーションの最大数制限

接続できるNTPクライアントやピアの数を制限することで、不正利用やリソースの浪費を防げます。

(config)# ntp max-associations number

NTPバージョン

  • NTPv3(デフォルト)
    • IPv4対応
    • ブロードキャストを利用
  • NTPv4(最新IOSで利用可能)
    • IPv4とIPv6をサポート
    • 公開鍵暗号化やX.509認証に基づく強化セキュリティ
    • マルチキャスト対応
    • NTPv3との下位互換あり

バージョンを指定する場合は以下のようにします。

(config)# ntp server 192.168.1.254 version 4

試験対策:「認証=ntp authenticate → authentication-key → trusted-key → server key の流れ」「アクセス制御は access-group」「NTPv3はブロードキャスト、NTPv4はマルチキャスト+IPv6対応」という観点で問われやすいため、整理して覚えることが重要です。

◆まとめスライド

目次