NTP

サーバにおける様々なサービスの基本は、正確な時刻合わせ。ということでntpdをインストール。

インストール

通常の手段でさくっとインストール。

$ sudo apt-get install ntp
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
提案パッケージ:
  ntp-doc
以下のパッケージが新たにインストールされます:
  ntp
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
530kB のアーカイブを取得する必要があります。
この操作後に追加で 1,364kB のディスク容量が消費されます。
取得:1 http://jp.archive.ubuntu.com karmic/main ntp 1:4.2.4p6+dfsg-1ubuntu5 [530kB]
530kB を 0s で取得しました (859kB/s)
未選択パッケージ ntp を選択しています。
(データベースを読み込んでいます ... 現在 31485 個のファイルとディレクトリがインストールさ れています。)
(.../ntp_1%3a4.2.4p6+dfsg-1ubuntu5_amd64.deb から) ntp を展開しています...
man-db のトリガを処理しています ...
ntp (1:4.2.4p6+dfsg-1ubuntu5) を設定しています ...
 * Starting NTP server ntpd

設定

設定ファイルは/etc/ntp.conf。

デフォルトではntp.ubuntu.comしか同期対象のサーバが設定されていないので、一般公開されているNTPサーバを追加する。国内サーバの中でも最上位のstrutum1(対日本標準時)に位置する独立行政法人情報通信研究機構(NICT)のサーバを登録。ntp.nict.jp名で4台のサーバをラウンドロビンしているそうなので、同名で三つエントリを加える。

さらに予備として、インターネットマルチフィード(MFEED)のサーバも登録。

アクセス制御の設定では、ローカルネットからの時刻問い合わせと、上位NTPサーバとの同期だけを許可する。

# 時刻変動情報記録用ファイル
driftfile /var/lib/ntp/ntp.drift

# 上位の時刻同期サーバ
server -4 ntp.nict.jp # 独立行政法人情報通信研究機構(NICT)その1
server -4 ntp.nict.jp # 独立行政法人情報通信研究機構(NICT)その2
server -4 ntp.nict.jp # 独立行政法人情報通信研究機構(NICT)その3
server -4 ntp.jst.mfeed.ad.jp # インターネットマルチフィード(MFEED)
#server ntp.ubuntu.com

# アクセス制御
# ignore        : すべてのNTPパケットを無視
# nomodify      : 設定の変更要求を無視
# notrust       : 自身の時刻合わせに使用しない
# nopeer        : 相互に同期しない
# noquery       : 設定変更パケットを無視。時間問い合わせはOK
# notrap        : トラップサービスのパケット拒否。

# デフォルトでは全てのアクセスを不許可
restrict default ignore

# ローカルホストは全てのアクセスを許可
restrict 127.0.0.1

# ローカルネットワークからは、時刻問い合わせのみ許可
restrict 192.168.1.0 mask 255.255.255.0 nomodify nopeer notrap

# 外部の上位公開NTPサーバへの問い合わせを許可
restrict 133.243.238.163 noquery nomodify notrap # ntp.nict.jp
restrict 133.243.238.164 noquery nomodify notrap # ntp.nict.jp
restrict 133.243.238.243 noquery nomodify notrap # ntp.nict.jp
restrict 133.243.238.244 noquery nomodify notrap # ntp.nict.jp
restrict 210.173.160.27 noquery nomodify notrap # ntp.jst.mfeed.ad.jp
restrict 210.173.160.57 noquery nomodify notrap # ntp.jst.mfeed.ad.jp
restrict 210.173.160.87 noquery nomodify notrap # ntp.jst.mfeed.ad.jp

ntpd起動と動作確認。

インストール時点ですでに起動しているので、再起動して設定を読み込ませる。

$ sudo /etc/init.d/ntp restart
 * Stopping NTP server ntpd                                                        [ OK ]
 * Starting NTP server ntpd                                                        [ OK ]

きちんと機能しているか、NTP照会コマンドのntpqで確認。-p (peers)オプションをつけることで、既知の同期サーバのリストとその状態を教えてくれる。

$ sudo ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================

 *ntp-a3.nict.go. .NICT.           1 u   39   64  177    8.185    0.250   0.452
 +ntp2.jst.mfeed. 210.173.160.86   2 u   37   64  177    8.272    0.736   0.615

問題なさげ。ということで当面これで運用する。

課題

……とか思っていたら、ローカルネットワークからこのサーバの時刻を参照できないっぽい。

$ sudo ntpdate 192.168.1.xx
22 Nov 08:39:51 ntpdate[5089]: no server suitable for synchronization found

と怒られてしまう。同様の設定できちんと動いているCentOSのntp.confとにらめっこしてみたがわからず。keyファイルを作らないといけないのかな? サーバの時刻あわせは出来ているようなので、しばらく保留ということで。