image header
Index >> Plamo Linux Fan >> ntpdメモ
                ntpdメモ
2001/10/17

1.目的

ntp とは、他のマシンと自分との時刻同期を行うプロトコルです。インターネットへ常時接続している UNIX マシンであれば、これを使って時刻をより正確なNTPサーバと同期できます。
 また、1つのサイトで1台が同期していれば、このマシンに他のすべてのマシンが合わせることで、サイトから外へのトラフィックを低減できます。


2.入手先
xntpd
xntp3-5.93-export.tar.gz
http://www.eecis.udel.edu/~ntp/がプライマリサイトらしい。
以前は、5.90をずっと使っていましたが、Plamo 1.4.x ではコンパイルに失敗しました。逆に今まで駄目だった5.93の方が動いたので、Plamo 1.4.x 以降はこちらを使っています。
3.導入方法

 Plamo-2.2 ではついにパッケージで提供されました。xntpd.tgz を installpkg するだけで、ntp.conf も含めてセットアップされます。専用線及び常時接続の方はそのままでもいいし、ネットワーク的に都合のいいように ntp.conf を書き換えてもいいでしょう。
 ダイヤルアップな環境の方は、このメモの10.項あたりをごらんになって、ダイヤルアップに都合のいいように修正してください。

  1. アーカイブを、展開する。

    # tar xvfz xntp3-5.93-export.tar.gz

  2. 構築する。

    # ./configure
    # make

  3. インストールする。

    # make install

  4. 設定を確認
    /etc/ntp.conf に、ntp サーバの URL を設定します。
     僕んちは東京インターネット配下で、東京インターネットには公開NTPサーバがあるのですが、福岡の大学で一般に公開されているサーバがあるので、これを指定してみます。外から見えるマシンなら、Restrict関連が必要です
     また、xntpd を起動する前にDriftファイルを作成しなくてはなりません。

    # touch /etc/ntp.drift

  1. ホストマシンのシステム時刻の同期

    # ntpdate clock.nc.fukuoka-u.ac.jp
    27 Mar 18:26:08 ntpdate[6035]: adjust time server 133.100.9.2 offset 0.005987 sec

     このように時刻が設定されれば完了。

  2. CMOS に時刻を書き込む
     システムクロックと CMOS は別物です。システムクロックは起動後の相対時間で、これを設定しなおしても、次回起動時に設定される時刻は、M/B上のRTCの時刻となりますので、これを変更しなくてはなりません。

    # hwclock --systohc

  3. xntpd を起動する
     /etc/rc.d/rc.local に起動スクリプトを追記します。

    # jvim /etc/rc.d/rc.local
    # cat /etc/rc.d/rc.local
    # Starting XNTPd
    if [ -x /usr/local/bin/xntpd ]; then
     echo "Starting XNTPd ..."
     /usr/local/bin/xntpd -p /var/run/xntpd.pid
    fi

  4. 同期状態を確認する。
    * がついているものは完全に同期している状態ですが、ころころ変わるので時々同期していればオッケー。

    # ntpq -p

    
         remote           refid      st t when poll reach   delay   offset    disp
    ==============================================================================
    *ntp00.TokyoNet. ts800-0.TokyoNe  2 u  433 1024  377    56.96   -5.382   54.55
    +ntp01.TokyoNet. ts800-0.TokyoNe  2 u  481 1024  377    78.93   -9.448   23.41
  1. サブネット内で親玉にする為の追加設定
     ntp クライアントは、同一サブネット内にある ntp サーバから時刻をもらう事が出来ます。別段追加設定は要りませんが、常時 xntpd が起動していて、どこかに同期している必要があります。2台目以降は、上述の ntp.conf 内のサーバのアドレスを、最初に作ったマシンのアドレスに変更するだけです。

  2. ダイヤルアップ環境で時刻同期
     xntpd は、基本的に常時接続でなくては時刻が同期できません。そこで、ローカルマシンのハードウェアクロックをリファレンスに指定します。この場合、configure のオプションで --enable-LOCAL-CLOCK してあげなくてはいけないようです。
     まず、/etc/ntp.conf 内で本来サーバのホスト名を書くところを、

    server 127.127.1.0 prefer

    と書きます。driftファイルの記述は同じです。
     ダイヤルアップ環境では、コネクションが確立した時点で ntpdate -u して、世界と自分を合わせてあげるといいようです。もちろん hwclock --systohc して、ハードウェアクロックをアップデートしておかなくてはなりません。

     また、この場合、ダイヤルアップしているホスト自体でこれをするケースでは、不正アクセスが気になるところなので、LAN 内の ntp ではやらなかった restrict の設定をします。下記のような記述を追記してください。

    restrict default notrust nomodify
    restrict 192.168.0.0 mask 255.255.255.0 nomodify

     当然ですが、ネットワークアドレスは貴方の家庭やSOHOのLANの物に適宜読み替えてください。

     続いて、運用設定ですが、まあいろいろな方法があろうかとは思いますが、ひとまず下記のような形で出来ると思います(未確認(^^;)。
     まずは、ホスト起動時から常時 xntpd は起動しておきます。

     続いて、ダイヤルアップ接続が確立したタイミング、具体的には /etc/ppp/ip-up 内で、外のタイムサーバとの強制的な同期を行います。具体的には下記の様にします。

    # ntpdate -u clock.nc.fukuoka-u.ac.jp
    # hwclock --systohc

    これに関してはどこを見ても「一旦xntpdを終了し」とあるのですが、ntpdate -u でxntpdからUDPポート123を強制的に奪い取るとドキュメントにあるので、これでいいと思ってます。事実をご存知の方、教えてくださいm(__)m

     これでホストの時刻は世界と同期します。続いて、定期的に

    # hwclock --adjust

    を実行して、時計の規則的なずれを補償します。この処理は定期的なので、cron で実施するといいでしょう。もちろん定期的に ntpdate を実施してもいいのですが、なるべくダイヤルしたくないだろうということで・・・

    # crontab -e
    0 * * * * (hwclock --adjust; hwclock --hctosys) > /dev/null 2>&1

    なんて感じです。

  3. Windows マシンをダイヤルアップルータのLinuxBoxに同期

     Windows マシンを同期するには、ntp クライアントをWindowsに入れればいいわけで、Windowsで使える ntp クライアントを探してみましたら、「桜時計」と「TClock」がフリーでありました。桜時計の方は、サーバにもなるようですが、別にサーバになってくれなくていいし、どうやら TClock の方がタスクバーの時計なども同時に調整してくれたりして便利らしいので、こちらを使って見ました。

     インストールの方法等は上述のページを見ていただくとして、設定する箇所は TClock のプロパティの中の、時刻あわせというタブ内です。サーバ欄に xntpd を動かしている LinuxBox を指定してあげて、[今すぐ同期] ボタンを押せば時刻がサーバと同期する様子が見れると思います。

付録1.参考文献
ntp ホームページ
xntp3-5.90マニュアル
バージョン一個古いんですが、まぁそんなに大きく違わないでしょう、多分(^^;
Kazubon's Homepage
TClock の作者のページ。TClockがダウンロードできます。

Index >> Plamo Linux Fan >> ntpdメモ

image footer