家庭コンピュータ環境の模索 >NTPによる時刻合わせ
最終更新 (2001/08/04)
NTPによる時刻合わせ
引っ越しの時、KAME さんはたくさん時計を持ってきました。時計が無いと不安だ
そうです。うちには、風呂場にまで時計があります。でも、KAMEさんは、ズボラな
性格なので、KAMEさんの時計はすべて時間がずれています。電池が入っていないの
さえもある。これではイカンということで、(の)が合わせに回っていますが、
KAMEさんの時計が指す時刻は信用なりません。
信用のおける時計として、purple の時計を NTP で合わせることにしました。
インストール
NTP のプログラムを拾ってきます。これまで紹介されているのは、xntp3-5.*系列
が多いですが、
本拠地(http://www.eecis.udel.edu/~ntp/)に行けば、
4.0系列が並んでいます。名前もntp と、x が取れたものになっています。
ちなみに、FAQやドキュメントなども充実。何が違うのか、英語なので読んでいませんが、新しいものの方がいいだろうってことで、4.0系列をサクサクダウンロード。
設定
- purple
-
わが家のメインサーバ Linux マシン(purple)で NTP daemon を起動して、外部のNTP サーバから時刻を導入し、purple の時刻合わせもします。また、家庭内LANの他のマシンに対しても、NTPで時刻を供給します。
- ntp のインストール
付属の INSTALL ファイルにしたがって、./configure; make; make check; make install で終了です。あっけないものです。
- /etc/ntp.conf の編集
NTP サーバの指定、drift ファイルの指定をします。簡単なもんです。
server 133.100.9.2 #clock.nc.fukuoka-u.ac.jp
server 133.100.11.8 #clock.tl.fukuoka-u.ac.jp
server 203.139.30.195 # ntp.cyber-fleet.net
server 203.255.112.4 # time.nuri.net
driftfile /etc/ntp.drift
|
ここで指定した /etc/ntp.drift を touch で作ります。
- ntpの動作確認
root になって
ROOT# ntpdate 133.100.9.2
7 Dec 22:30:00 ntpdate[21895]: no server suitable for synchronization found
|
となったら、失敗です。
ルータのNTPポート(123)を TCP と UDP ともにオープンして、外からのパケットを中に届けるようにして下さい。最近のブロードバンドルータだと、擬似サーバ機能ってのがあるので、外からルータの123番ポートに着信したパケットを、ntp を動かしているコンピュータに届けるようにスタティックに設定します。
ROOT# ntpdate 133.100.11.8
7 Dec 22:35:31 ntpdate[21972]: step time server 133.100.11.8 offset -178.284741
|
となったら成功です。ntpdate は手動で起動して、時刻合わせをするコマンドですね。
- ntpの常時起動
うまくいったら、ntp を起動する rc スクリプトを作成して、マシンの起動時に自動的に ntp daemon が起動するようにします。
ntp の配布パッケージ中にも、サンプルスクリプトが入っているのですが、パスの設定が適切でなかったりするので、少々改造します。
#!/bin/sh
killproc() { # kill named processes
pid=`/bin/ps -e |
/bin/grep $1 |
/bin/sed -e 's/^ *//' -e 's/ .*//'`
[ "$pid" != "" ] && kill $pid
}
case "$1" in
'start')
/bin/ps -e | /bin/grep ntpd > /dev/null 2>&1
if [ $? -eq 0 ]
then
echo "ntp daemon already running. ntp start aborted"
exit 0
fi
if [ -f /etc/ntp.conf -a -x /usr/local/bin/ntpd ]
then
/usr/local/bin/ntpd -c /etc/ntp.conf
fi
;;
'stop')
killproc ntpd
;;
*)
echo "Usage: /etc/rc.d/init.d/xntp { start | stop }"
;;
esac
|
このスクリプトを /etc/rc.d/init.d/ntp という名前にしておいて、さらに/etc/rc.d/rc5.d/S93ntp とかいう名前でシンボリックリンクを置いておくのはいつもの通りです。
- CMOS Clock も合わせる
NTP による時刻合わせでは、合わせることの出来るクロックは、システムクロックです。これは、起動時に BIOS から値がコピーされ、その後は、BIOSの CMOS クロックとは独立して値を刻みます。
NTPによって、合わせたシステムクロックを、cron で、CMOS クロックに定期的に書き込むことによって、より確実さを増やします。
/etc/cron.daily に 次のような内容のファイルを -x ビットを立てて置いておけばよいです。
- Vaio
- Windows 環境で定評のある、桜時計をインストールして終了です。方法は、LZHアーカイブを解凍します。
Vaio は常に LAN で使用するので、SW_NORAS.EXE をスタートアップで起動します。NTP サーバとしては、purple を指定します。
参考
NTP については、NTPによる時刻合わせのページも詳しいです(ただし、xntp3-5.* 系列の話です)。
近藤靖浩