NTP とは Network Time Protocol の略で、ネットワーク上でクライアントがサーバーに対して時刻を問い合わせるためのプロトコルです。
NTP サーバーは、クライアントとの間で起こる可能性がある通信の遅れも考慮し、ネットワークの遅れに関する情報も内蔵しているため、正確な時刻同期が可能です。
NTP を使うとサーバーの時刻が正確に保たれるので、ログの時刻が正確に記録され、サーバーの運用管理にも役立ちます。
NTP のインストール
NTP は apt-get を使ってインストールします。
以下のように root 権限でインストールを行います。
Building dependency tree
Reading state information… Done
Suggested packages:
ntp-doc
The following NEW packages will be installed:
ntp
0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
Need to get 327kB of archives.
After unpacking 877kB of additional disk space will be used.
Get:1 http://jp.archive.ubuntu.com feisty/main ntp 1:4.2.2.p4+dfsg-1ubuntu3 [327kB]
Fetched 327kB in 1s (182kB/s)
Selecting previously deselected package ntp.
(Reading database … 22002 files and directories currently installed.)
Unpacking ntp (from …/ntp_1%3a4.2.2.p4+dfsg-1ubuntu3_i386.deb) …
Setting up ntp (4.2.2.p4+dfsg-1ubuntu3) …
* Starting NTP server ntpd [ OK ]
NTP の設定
ここでは NTP サーバーの設定を行います。
NTP の設定ファイルは NTP をインストールしたときに作成されますが、時刻を同期するサーバーを近いサーバーに変更します。
driftfile /var/lib/ntp/ntp.drift
statsdir /var/log/ntpstats/
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable
# You do need to talk to an NTP server or two (or three).
#server ntp.ubuntu.com
server ntp.nict.jp
server ntp.nict.jp
server ntp.nict.jp
# By default, exchange time with everybody, but don’t allow configuration.
# See /usr/share/doc/ntp-doc/html/accopt.html for details.
restrict default kod notrap nomodify nopeer noquery
# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1 nomodify
# Clients from this (example!) subnet have unlimited access,
# but only if cryptographically authenticated
#restrict 192.168.123.0 mask 255.255.255.0 notrust
# If you want to provide time to your local subnet, change the next line.
# (Again, the address is an example only.)
#broadcast 192.168.123.255
# If you want to listen to time broadcasts on your local subnet,
# de-comment the next lines. Please do this only if you trust everybody
# on the network!
#disable auth
#broadcastclient
設定ファイル 3 行目の driftfile は ntpd が時刻の調整を行う際に NTP サーバーから入手した時刻と ntpd が動作しているマシンとの時刻のずれを記録するファイルです。
12 行目の server で時刻を同期する NTP サーバーを指定します。
ここでデフォルトの設定をコメントアウトして、新たに 3 行追加します。
NTP サーバーを 3 つ指定していますが、制度をあげるためには複数指定することが推奨されています。
また ntp.nict.jp を 3 行指定していますがこれは NICT 公開 NTP サービス が提供しているもので、DNS ラウンドロビンによる負荷分散という仕組みを利用して別々の NTP サーバへ誘導してくれます。
NTP の再起動と動作確認
NTP を再起動して設定の変更を有効にします。
* Starting NTP server ntpd [ OK ]
以下のように実行することで NTP サーバーの動作確認を行うことができます。
ntpq コマンドに -p オプションをつけて実行すると NTP サーバーの同期状態が表示されます。
==============================================================================
ntp-b3.nict.go. .PPS. 1 u 6 64 1 30.498 -1496.5 0.001
ntp-b2.nict.go. .PPS. 1 u 5 64 1 30.445 -1495.7 0.001
ntp-a3.nict.go. .PPS. 1 u 4 64 1 30.544 -1498.0 0.001
NTP サーバーを起動した直後は上記ような結果になりますが、10 分ほど経過して同期が始まると以下のように表示されます。
==============================================================================
+ntp-b3.nict.go. .PPS. 1 u 43 64 77 30.146 -511.91 182.891
*ntp-b2.nict.go. .PPS. 1 u 56 64 77 30.226 -506.15 191.408
+ntp-a3.nict.go. .PPS. 1 u 26 64 77 29.345 -549.89 168.772
左端の * の記号は現在同期を行っているサーバー、+ の記号は次に同期行う候補のサーバーを表示しています。