sleepingbird.net Home since May.11 2003
Copyright sleepingbird, 1993- All rights reserved.
Linux Server

TOP > Linux Server > 自動時刻合わせ

ntpdate

 Internet server たるもの内部時計ぐらいは正確でありたいもの。しかし、PC の時計は結構狂いが大きいのでこまめに時刻あわせする必要がある。通常はコマンドラインから date コマンドで時刻あわせをするが、Internet には ntp(network time protocol) server というものがあって、時刻の問い合わせをすると正確な時刻を答えてくれるサービスがある。server はいくつか存在するが、 ここでは総務省の設置した ntp server に問い合わせを行う。root で ntpdate コマンドを発行する。

# ntpdate ntp1.jst.mfeed.ad.jp
# hwclock --systohc
 hwclock --systohc は、システムクロックとハードウェアクロックの同期をとるためのコマンド。ntpdate だけだと OS を再起動させると ntp server との同期が初期化されてしまうので、定期的に実行しておく必要がある。
 定期的に時刻あわせをする場合、cron を使う方法がある。はじめにスクリプトファイルを作成しておく。
# vi /usr/etc/adjust-date
#!/sbin/sh
/usr/sbin/ntpdate ntp1.jst.mfeed.ad.jp > null
/sbin/hwclock --systohc
 > null のリダイレクトは正常動作が確認できてから付加した方が分かりやすい。
 chmod +x で実行属性を付けるのを忘れないこと。
# chmod +x /usr/etc/adjust-date
 毎時15分に時刻あわせを行うように cron をセットする例。
# crontab -e
15 * * * * /usr/etc/adjust-date

ntpd

 定期的に時刻あわせを行うもう一つの方法が ntpd をdaemon として起動しておく方法。この場合、時刻あわせの server としても利用可能になる。なお、ntpd が稼働していると ntpdate は使えなくなるので注意が必要。
 ntpd を利用するには /etc/ntp.conf の設定が必要になる。
 server には ntp server のurl を列記し、最後に local host のアドレスを指定しておく。
 driftfile は誤差調整用ファイル名の指定。

# vi /etc/ntp.conf
server ntp1.jst.mfeed.ad.jp
server ntp2.jst.mfeed.ad.jp
server ntp3.jst.mfeed.ad.jp
# server 127.127.1.0
driftfile /etc/ntp/drift
 誤差調整用ファイルを作成しておく。
# touch /etc/ntp/drift
 daemon として起動する。
# /etc/rc.d/init.d/ntpd start
 同期の確認は、ntptrace コマンドと、ntpq -p コマンドで行う。
 ntp server は、stratum と呼ばれる階層構造になっており、原子時計などに直結している最上位の server を stratum 1、そこに同期しいる server を stratum2、以下 stratum3,4,...と続く。総務省で公開している server は stratum2 だが、 ntptrace は自分自身の階層と上位階層を trace してくれる。
# ntptrace
localhost.localdomain: stratum 3, offset 0.000055, synch distance 0.04765
ntp2.jst.mfeed.ad.jp: stratum 2, offset 0.016553, synch distance 0.02281
utc3.crl.go.jp: *Timeout*
 次に、ntpq -p で同期状況を見てみる。
# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 LOCAL(0)        LOCAL(0)         5 l   19   64  377    0.000    0.000   0.008
+ntp1.jst.mfeed. utc3.crl.go.jp   2 u   62   64  177   30.362   16.473   5.084
*ntp2.jst.mfeed. utc3.crl.go.jp   2 u   56   64  377   28.360   14.813   0.702
+ntp3.jst.mfeed. utc2.crl.go.jp   2 u   49   64  377   28.491   13.179   1.232
 同期している server 名の前には * が表示される。正常動作が確認できたので、再起同時にもサービスが起動するように、webmin あるいは setup で設定をしておく。
 /sbin/hwclock --systohc を cron に設定しておく。
# crontab -e
15 0 * * * /sbin/hwclock --systohc
 これで一日一回、午前0時15分にハードウェアクロックが同期される。
 総務省 ntp server についての情報は、Experimental NTP Servers (Public Stratum 2) で確認できる。
 また、世界中での stratum1 および stratum2 の server 一覧はPublic NTP Time Servers で確認できる。
Jun.12 2006
 独立行政法人情報通信研究機構(NICT)は、NICTが独自に開発した世界最高性能のインターネット用時刻同期サーバを用いて、平成18年6月12日からインターネットを介した日本標準時配信サービスを開始しました。
独立行政法人情報通信研究機構
 概要、設定方法はこちら
 個人ユーザでも、stratum 1 にアクセス出来ます。
  ntpd の場合
/etc/ntp.conf に次の3行を加えればOK。
server -4 ntp.nict.jp
server -4 ntp.nict.jp
server -4 ntp.nict.jp
(同じ内容を3行書くのが重要)
"-4" は強制的に IPv4 を使用するためのオプション。もし、IPv6 で接続可能でしたら無くても構わない(その場合、IPv6 が優先される場合が多いと思われる)。