sntpd - SNTP daemon

これは、Simple Network Time Protocol (SNTP) により時刻合わせをするデモンプログラムです。 指定のサーバに接続して自マシンの時刻を調整するクライアント機能と、 他のマシンに対して時刻情報を配布するサーバ機能を持ちます。

時刻合わせのプログラムとしては David L. Mills さんによる ntp が有名ですが、必要以上に高機能で大規模なプログラムなので、 ソースを入手したものの、導入を見送りました。 SNTP レベルの機能で十分なので、簡易なツールが無いか探したのですが、 Windows 用には沢山あっても、UNIX の世界には適当なものが見つかりませんでした。 それならば、ということで作成したのが、このプログラムです。

現在の最新版は、1.00 (2002/02/10 リリース) です。

仕様と制限事項

  1. 【クライアント機能】 指定された NTP/SNTP サーバとの間で、 Simple Network Time Protocol (SNTP) で規定された48byteのメッセージをやりとりすることにより時刻を取得し、 自マシンのシステム時刻を adjtime() で調整します。 通信は、UDP/IP で、上り下りとも、source/destination に 123 番のポートを使います。
  2. 【サーバ機能】 指定されたクライアントに対して、SNTP で時刻情報を配布します。 通信は、UDP/IP で、サーバ(自マシン)側は 123 番のポートを使います。 利用を許可するクライアントは、ホストアドレスまたはサブネットアドレスで指定します。
  3. その他、細かい説明は、 README ファイルを参照してください。
  4. 開発と動作確認は、OpenBSD 3.0 で行なっています。 環境依存になりそうなところは、条件コンパイルするようにしてあるので、 NetBSD, FreeBSD や Linux であれば動作すると思います。 確認はできていませんが... なお、このプログラムでは、64bit 幅の整数である long long 型を使用しています。 コンパイラと実行環境が、これに対応している必要があります。
  5. このプログラムのライセンスは、 BSD流のライセンス とします。

ダウンロード

  1. 最新の tar archive (24,248 byte)
    MD5 (sntpd-1.00.tar.gz) = f0cadbae014b16d5b53f67e771b8d88f

セットアップ手順

  1. ソースを展開する。
    % tar xzvf …/sntpd-1.00.tar.gz
    % cd sntpd-1.00
    
  2. 必要であれば、config.h を編集する。
    一般的な環境であれば、そのままで大丈夫だと思います。
  3. makeし、インストールする。
    インストール先は環境にあった場所を指定してください。
    % make
    % su
    # install -c -m 555 sntpd /usr/local/sbin
    
  4. 起動のための設定をする。
    OpenBSD であれば、rc.local に以下のように記述します。 この例では、192.168.1.123 のサーバから時刻情報を取得し、 2つのサブネット 192.168.2.0/24 と 192.168.3.0/24 にあるクライアントからの問い合わせを受け付けます。
    echo ' sntpd'
    /usr/local/sbin/sntpd -d 192.168.1.123 192.168.2 192.168.3
    
  5. 動作を確認する。
    プログラムが起動すると、すぐ、ログファイルに動作状況が記録されるはずです。 OpenBSD の場合には /var/log/daemon に記録されます。 その内容を見て、動作状況を確認してください。 なお、sntpd は時刻差が1分を超える場合には、なんらかのトラブルの可能性を想定して、 システム時刻を調整しません。 システム時刻が大きくずれている場合には、手動で1分以内に調整してください。

更新履歴

2002/02/10
1.00版: 最初のリリース。