NET.PE1CHLのdate getを使う(2004年11月)



NET.PE1CHLが動作しているPCの時計を、正確な時刻を知っているLAN内のPCと同期させようという実験です。
これは、UIGファイルの中に受信時刻が保存されてしまうことから、不正確な時刻を記録に残したくない、と意識してしまったわけです。

ポイントは次の3つです。
1) NET.PE1CHL側で TIMEサーバーを動かしておくこと
2) LAN内に基準時刻サーバーを動かしておくこと
3) NET.PE1CHL側からdate getコマンドにより、基準時計サーバーから時間情報をもらってくる

3)の時間情報のやりとりは、RFC868 Time Protocol Server に従った手順で行われます。
基準時刻サーバーとしては、私のLANにはFreeBSD機が何台か動いているので、その中の1台の TIMEサービス(37番ポート)
を使えばいいはずなのですが、なぜかうまく行きませんでした。
そこで、うまく動くまでの経緯を紹介します。


最初の状態
net> date                    <---- 現在の時刻を表示させるには date コマンド
Wed Nov 03 01:08:21 2004

net> date 1102010830         <---- 日付と時刻を設定(変更)するには date MMDDhhmmss コマンド
Tue Nov 02 01:08:29 2004           MM..月、DD..日、hh..時、mm..分、ss ..秒
                                   わざとここで約1日遅れの時刻を設定しておいた

net> date get [192.168.A.B]  <---- 192.168.A.B はLAN内の基準時刻サーバーであるFreeBSD機のIPアドレスです
TIME server not running            TIMEサーバーが動いていない、と文句を言われました。
                                   なお、これは NET.PE1CHLの側の Timeサーバーが動いていない場合の症状です。

NET.PE1CHL側でのTIMEサーバーの起動

net> date get [192.168.A.B]   <----- NET.PE1CHL側でTIMEサーバーを動かしていませんから、date get コマンドを打ってもダメです
TIME server not running

net> start time               <----- そこで、TIMEサーバーを起動します。このコマンドだけでOK。

基準時刻サーバーの準備

それではNET.PE1CHLが時刻を参照する基準時刻サーバーを準備します。ここで、サーバーは RFC868 Time Protocol Server の規定に従ったTIMEサーバーでないといけないので、 とりあえず、Windows機をサーバーにすることにし、Absolute Time Serverというフリーのソフトをインターネットでダウンロードして、インストールしておきました。 (詳細は後日書き足します) Abolute Time Correcterというのはクライアント用で、こちらは有料です。必要なのはAbsolute Time Serverの方で、こちらは無料です。

NET.PE1CHL側での操作

net> date get [192.168.A.C]                                               <---  date getコマンドを打ってみます。
net> TIME 192.168.A.C: Wed Nov 03 01:10:47 2004 (diff 86421s), clock set        基準時刻サーバーと通信成功
                                                                                1日分以上の誤差が補正されました

net> tr eth 111                   <-----  LANのインターフェース(eth)を trace onにしておくと、基準時刻サーバーとの
eth: input output (ASCII dump)            UDPを使った通信が見えます
net> date get [192.168.A.C]
*** Nov 03 01:40:48.17 eth sent:
Ethernet II: len 42 00:40:26:43:1a:01->00:01:80:41:ac:89 type IP
IP: len 28 192.168.A.A->192.168.A.C ihl 20 ttl 16 prot UDP
UDP: len 8 37->37
TIME: request
net> *** Nov 03 01:40:48.17 eth recv:
Ethernet II: len 60 00:01:80:41:ac:89->00:40:26:43:1a:01 type IP
IP: len 32 192.168.A.C->192.168.A.A ihl 20 ttl 128 prot UDP
UDP: len 12 37->37 data 4
TIME: Wed Nov 03 01:40:48 2004
TIME 192.168.A.C: Wed Nov 03 01:40:48 2004 (diff 0s)

net> tr eth 0                                     <--- 普段は必要ないので、LANのインターフェース(eth)は
                                                       trace offにしておきます

ちょっと便利に&自動化(その1) NET.PE1CHLの起動時に date getを自動実行させる



ちょっと便利に&自動化(その2) atコマンドで date getを定期的に自動実行させる



PE1CHL's Web pages"
JJ1WTKのWebサイトのトップに戻る [English] [Japanese]

Email to: jj1wtk at jamsat.or.jp
last update: Dec 19, 2004
access counter (since Nov 2, 2004)