ダイヤルアップ環境で時刻同期
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
なんて感じです。