ntpqでリモートのntpdサーバの情報を取得

NTPに関連するコマンド『ntpq』において、リモートで稼働しているNTPサーバの情報を取得することが出来ると知ったので試してみた。 テスト用のNTPサーバは、CentOSで稼働させ、IPアドレスは「192.168.0.222/24」とする。

まずはNTPサーバの「/etc/ntp.conf」に、以下の内容を追加する。

restrict 192.168.0.0 mask 255.255.255.0

これは、「192.168.0.0/24のネットワークからのアクセスを受け付ける」という意味になる。 また、リモートから操作出来るようにiptablesの停止を行う。

service iptables stop

さて、これでクライアント機からntpqコマンドを用いてNTPサーバの情報が取得できる。 NTPクライアント機で、以下のコマンドを実行し対象のNTPサーバで対話モードを使用し、Peersの情報を参照する。

blacknon@X201:~$ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*ntp-a2.nict.go. .NICT.           1 u    1   64  377    7.568   69.194  20.079
blacknon@X201:~$ ntpq 192.168.0.222
ntpq> peers
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 gw1.kohaaloha.c .INIT.          16 -    - 1024    0    0.000    0.000   0.000
 laika.paina.jp  .INIT.          16 -    - 1024    0    0.000    0.000   0.000
*ntp-v6.chobi.pa 245.93.165.128   2 u    8   64  377    4.804    0.270   9.542
 felixx.tsn.or.j .INIT.          16 -    - 1024    0    0.000    0.000   0.000

さて、このアクセスを停止させるにはどうすればいいのか。 先程「/etc/ntp.conf」に追記した一文を、以下に書き換えればいい。

restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap nopeer noquery

末尾に「nomodify」「notrap」「nopeer」「noquery」というオプションが追加されているのがわかると思う。 これらはフラグと呼ばれており、こちらのページを参照するとわかりやすい。

以下に、このフラグの内容についてだけ抜粋する。

  • ignore : 全てのパケットを拒否する。
  • noquery : ntpq のクエリー(照会)を無視する
  • nomodify : サーバーの状態を変更しようとする ntpq のクエリー(照会)を無視する
  • noserve : 時刻同期要求は拒否するが、ntpq のクエリー(照会)は許可する
  • notrust : 指定したホストを参照先サーバーとして使用しない
  • notrap : trap サービスのためのパケットを拒否する。

構築したいサーバに併せて、上のフラグを組み合わせてあげるといい。