外部NTP(Network Time Protocol)サーバから正確な時刻を取得して自機に設定する。また、LAN内の他のクライアントから同期するために使うこともできる。つまり、クライアントとして動作し、さらに、サーバとしても動作する。
NTPサーバはプロバイダから公開されているものを使うようにする。見つからない場合は公開サーバを利用するのも手だが、公開サーバを利用する者一人一人が将来的な過負荷を引き起こさないように配慮する必要がある。
ntpdate を利用することで、単発で現在時刻を合わせることができる。
まず、現在時刻の確認。
su Password: # date Wed Feb 11 08:07:07 JST 2009
数時間ずれているようなので、ntpdate を使ってみる
# ntpdate ntp.nict.jp # date Web Feb 11 17:11:15 JST 2009
上記の ntpdate は、放置しておけば、いずれまた時刻に差がでてくる。
ntpd を動かしておくと 外部(プロバイダなど)のNTPサーバに同期して時刻を補正する。また、LAN側にある他のローカル・コンピュータから、NTPサーバとして利用できるようになる。
ntpd 実行直後はすぐに時刻が一致しないが、いずれ一致するので気長に待つ。
/etc/default/rc.conf には、下記の内容が記述されている(と思う)ので、確認だけしておく。
この設定がデフォルトとなり、変更したい部分だけを /etc/rc.conf に記述すればよい。
ntpd_enable="NO" ntpd_program="/usr/sbin/ntpd" ntpd_config="/etc/ntp.conf" ntpd_sync_on_start="NO" ntpd_flags="-p /var/run/ntpd.pid -f /var/db/ntpd.drift"
# vi /etc/rc.conf
/etc/rc.conf の中に次の2行を加える。ファイル末尾でよい。
ntpd_enable="YES" ntpd_sync_on_start="YES"
/etc/default/rc.conf の設定内容に合わせて、あらかじめ次のコマンドを実行して、/var/db/ntpd.drift ファイルを作成しておく。
%su Password: # cd /var/db # touch ntpd.drift # ls -al
# vi /etc/ntp.conf
次の内容を記述する。
同期先のNTPサーバを1つだけ指定しておいた場合、万が一そのサーバが停止したまま気がつかないと、これまたntpdの意味がない。そこで、同期先のNTPサーバは2~3個設定しておいたほうがよい。
ここでは説明用に、NTPサーバのドメイン名を下記の3つと仮定する。あくまでも仮定である。
## 同期の許可・拒否の設定 # この行より下の内容に一致しないもの全てに、応答しない。 restrict default ignore # 127.0.0.1 からのパケットは許可する。 # これを書いておかないと ntpq と ntpdc コマンドを受け付けなくなる。 restrict 127.0.0.1 # ntp1~ntp3 からのパケットには、いくつかの制限をして応答する。 restrict ntp1.jst.mfeed.ad.jp noquery nomodify notrap restrict ntp2.jst.mfeed.ad.jp noquery nomodify notrap restrict ntp3.jst.mfeed.ad.jp noquery nomodify notrap # ローカルクライアントからのパケットには、いくつかの制限をして接続を許可する restrict 192.168.0.0 mask 255.255.255.0 noquery nomodify ## 自分自身が同期するNTPサーバを設定 server ntp1.jst.mfeed.ad.jp server ntp2.jst.mfeed.ad.jp server ntp3.jst.mfeed.ad.jp
LAN内に ntpd が設定済みのNTPサーバが有る場合は、そのIPアドレスを指定してもよい。参考までに、192.168.0.222 というNTPサーバが存在することを前提にして、ntpd を、それとは別のコンピュータに設定する例を下記に示す。
(確認済み。OK。)
## 同期の許可・拒否の設定 # この行より下の内容に一致しないもの全てに、応答しない。 restrict default ignore # 127.0.0.1 からのパケットは許可する。 # これを書いておかないと ntpq と ntpdc コマンドを受け付けなくなる。 restrict 127.0.0.1 # 192.168.0.222 からのパケットは、いくつかの制限をして応答する。 restrict 192.168.0.222 noquery nomodify # ntp1~ntp3 からのパケットには、いくつかの制限をして応答する。 restrict ntp1.jst.mfeed.ad.jp noquery nomodify notrap restrict ntp2.jst.mfeed.ad.jp noquery nomodify notrap restrict ntp3.jst.mfeed.ad.jp noquery nomodify notrap ## 自分自身が同期するNTPサーバを設定 # 優先して同期したいNTPサーバ server 192.168.0.222 prefer # 優先を考慮しないNTPサーバ server ntp1.jst.mfeed.ad.jp server ntp2.jst.mfeed.ad.jp server ntp3.jst.mfeed.ad.jp
ここまで設定したら、FreeBSD 7.1R をリブートする。
# reboot
参考までに、ntpdだけの再起動は
# /etc/rc.d/ntpd restart
起動したら、実行プロセスを確認する。
# ps aux | grep ntpd
その後、次のコマンドで状態を確認。同期したら * がつく。
# ntpq -p
もし、FreeBSD 7.1R起動時に、ntpdが動かないようであれば、あらかじめ ntpdate で時刻を合わせておく。あまりにも違いが大きいと ntpd が動かないようだ。