自動で時計をあわせる

98年2月8日


家庭内 LAN もほぼ完成に近付きつつある。ネタ切れになりつつある, ともいう。 しかーし, しょうもないがまたもネタを見つけてしまった。

ntp という, ネットワーク上で時間を合わせるというプロトコロルがある。 これを使うと, ネットワーク上の原子時計とか, GPS 受信器とかといった高精度の時計からのデータを受けとって, 自分のマシンの時計をあわせることができる。

そんなに高い精度が必要なの ? と言われたら, 返事に困るのであるが, まぁ, やっぱり時間がぴったりあっているのは嬉しいし, やっぱり, せっかく「高性能計算機」をつかっているのだから, 時計ぐらいいつでも正確な時刻を刻んで欲しいものである。

で, 時間あわせであるが, 常時接続であれば xntpd というデーモンを使って時刻をあわせるのがもっとも簡単である。 このデーモンは, 「正しい」と思われる時計の時刻と自分のマシンの時刻を比較し, そのずれを計測してより正しい時刻へと時刻を 「すこしずつ」調整するというものである。

これに対して ntpdate というコマンドを使う方法もある。 これは ntp を用いて, 自分のマシンの時刻を基準時計の時刻に「ぴったり」あわせるコマンドである。

テレホ接続な私は ntpdate を使うことにした。 つまり一定時間毎に ntpdate を立ち上げて, FreeBSD マシンの時刻を校正するように設定した。 もちろん, 一定時間毎の命令の実行には cron を使う。 root で crontab -e を実行し,

* 0,1,2,3,4,5,6,7,23 * * * /usr/sbin/ntpdate time.server.some.where
などといった行を書いておく。 時刻のサーバを見つけるのが問題であるが, それは各自 ISP 内のローカルなニュースグループなどで質問するなどして, できるだけネットワーク的に近いところにある奴を見つけて欲しい (実は適当なコマンドを入力すると, ブロードキャストして自力でサーバを見つけてくれるらしいが, 僕は良くわからなかったので友達に聞きました)。

でもって, LAN 内の他のマシンに関しては FreeBSD マシンの時計を見て時刻をあわせるように設定した。 FreeBSD 側で timed というデーモンを動かす。/etc/sysconfig の

timed="NO"
の "NO" を "-M" に書き換えるだけである。これで, timed が「マスターモード」 で立ち上がり, 他のマシンに対して「基準時刻」を教えるマシン (サーバ) となる。 そして, 他のマシン (クライアント) には, 98note が伝えてくる時刻に自分のマシンの時刻をあわせるよう設定する。 うちの場合, クライアントは Linux と win95 であるが, linux の場合は, /etc/rc.d/rc.local あたりに
timed
という感じで timed を起動すれば良い。Win95 ではいろいろな方法があるが, まだやっていない。一応, フリーウェアの「桜時計」というツールを使うのが良さそうであるが, まだやってないのでできるかは不明である。
IIJ-PPP のハック