NTP
その他UNIX系
NTP とは
NTP とは Network Time Protocol の略で、ネット上で時刻を合わせるためのプロトコルのことです。
また、この NTP に対応したアプリケーション群のことを NTP と呼びます。
ようは、NTP と言った場合にはプロトコルを差す場合とアプリケーションを差す場合とがあるわけです。
この NTP を使用してマシンの時刻を常に正しい時刻に設定しておくことができます(もちろん、若干の誤差はありますが)。
通常、PC の時計は放っておくと徐々にずれていきます。
Linux 等 OS で持っている内部時計も同様にずれていきます。
従って、24 時間稼働なマシンでは時刻を設定する仕掛けが必要になり、そのために NTP を使用します。
インストール
ntp-4.1.1a の例です。
まず、NTP の公式サイトからアーカイブを取得し、展開します。
% gzip -dc ntp-4.1.1a.tar.gz | tar xvf -
展開したディレクトリに移動し、あとはお決まりのパターンでOKです。
% ./configure % make % make check % su # make install
使用方法
NTP には大きく2つの使い方があります。
1つ目の方法は、他のサーバに問い合わせをし、そのサーバの時刻に自サーバの時刻を設定するという方法です。
% /usr/local/bin/ntpdate -b ntp.hogehoge.com
この方法では、一瞬で正しい時刻に設定できるという反面、いきなり時刻が大きく変わることもあるので、ログのタイムスタンプがおかしくなったり、時刻を見て動作するようなアプリケーション( cron とか)が誤動作するという危険性があります。
まだサービスを提供していないマシンの時刻を合わせる方法としては最適です。
もう1つの方法は、他のサーバに問い合わせをし、徐々にそのサーバの時刻に近づけていくという方法です。
% ntpd
この場合は、自サーバ上にデーモンとして常駐し、断続的に指定したサーバに問い合わせを行います。
また、このデーモンは他のサーバからの問い合わせに対して応答を返すことも行うので、自分のネットワーク内で NTP サーバを立ち上げる場合にも有効です。
自分のネットワーク内にマシンが複数台ある場合には NTP サーバを立ち上げるべきです。
上位の NTP サーバは様々な箇所から問い合わせが殺到するので、なるべく NTP 通信を分散させるようにしましょう。
ntpd を起動するには設定ファイル( /etc/ntp.conf )を作成しておく必要があります。
最低限な設定は以下のような感じになります。
server xxx.xxx.xxx.xxx server xxx.xxx.xxx.xxx server xxx.xxx.xxx.xxx server xxx.xxx.xxx.xxx driftfile /etc/ntp/ntp.drift
問い合わせをするサーバは複数指定することが出来ます。
また、driftfile は ntpd が作るファイルなので、あらかじめ作成する必要はありません。
確認方法
ntpd を使用して時刻調整をする場合、以下のようにして現在の時刻の同期状態を確認することが出来ます。
※より詳しい情報はJPRING NTPをどうぞ(/o\)
% ntpq -p
すると、以下のような結果が表示されます。
remote refid st t when poll reach delay offset jitter ============================================================================== +ntp1.jst.mfeed. fs-monntp2.mfee 2 u 1 1024 377 2.112 -0.486 0.075 *ntp2.jst.mfeed. ote-ntp1.jpnap. 2 u 919 1024 377 2.501 0.186 0.111 +ntp3.jst.mfeed. fs-monntp2.mfee 2 u 279 1024 377 1.901 -0.372 0.132
上記の表示の意味は以下のとおり。
項目 | 概要 |
---|---|
remote | 参照している時刻調整元サーバおよびそのサーバとの同期状態 同期状態は以下のとおり 距離が遠いため不使用 x falseticker 検査で捨てられたサーバ . 参照サーバが多いために不使用 - クラスタリング検査で捨てられたサーバ + 参照可能 # 同期距離は遠いが参照可能 * 同期中 o 同期中 |
refid | 参照サーバの参照先 |
st | 参照サーバの階層 |
t | 階層の種類 ( l:local u:unicast m:multicast b:broadcast ) |
when | 参照サーバから最後にパケットを受け取ってからの秒数 |
poll | 参照サーバへの接続間隔の秒数。 通常 1024 |
reach | 到達可能レジスタデータ(8進)。通常 377 |
delay | 参照サーバとの遅延見積もりのミリ秒表示 |
jitter | 参照サーバの分散のミリ秒表示 |
PCの内部時計について
これら NTP で設定するのは OS のカーネルで持っている時計です。
従って、再起動してしまうと、また PC の内部時計に設定されてしまいますので、PCの内部時計はどんどんずれが大きくなっていってしまいます。
これを回避するには以下のコマンドを実行します。
# clock -w
このコマンドを実行すると、PC の内部時計を現在の OS の時刻に設定します。
これを1日1回、または ntpdate 実行後あたりに実行しておけば、PCの内部時計もそれなりに正しい時刻に合わせることができます。
リンク
サイト名 | 概要 |
---|---|
NTP | NTP についての使用方法・設定について分かりやすく解説されています |
Experimental NTP Servers | インターネット上で日本標準時を提供しているNTPサービスについて情報を提供 |