タイムサーバーと同期させる

FreeBSDでタイムサーバーと同期を取る場合には「ntpd (Network Time Protocol Daemon」を使用します。
インストールに関しては、「sysinstall」からパッケージを使ってインストールして下さい。「ntpd」を使用する場合には、スーパーユーザーになって以下のように設定します。
注意 : ntpd 4.0.99 以前のバージョンで remote buffer overflow のセキュリティホールが存在するそうです。古いバージョンをお使いの方は、最新のバージョンにお差し替え下さい。)
設定ファイルを作成する
「/etc/ntp.conf」をviなどで作成して以下のような定義文を書きます。
server ntp1.jst.mfeed.ad.jp
server ntp2.jst.mfeed.ad.jp
server ntp3.jst.mfeed.ad.jp
driftfile /etc/ntp.drift
意味としては、
コマンドパラメータ意味
serverserver ntp1.jst.mfeed.ad.jp上流のタイムサーバーを指定
serverserver ntp2.jst.mfeed.ad.jp上流のタイムサーバーを指定
serverserver ntp3.jst.mfeed.ad.jp上流のタイムサーバーを指定
driftfile/etc/ntp.driftオフセット情報のログファイル
上記の設定では、インターネットマルチフィード社の「mfeed」を使用しています。
加入しているプロバイダーがNTPサーバーを提供している場合には、プロバイダーのNTPサーバーを使ってください。加入しているプロバイダーがNTPサーバーを公開していない場合には、各自、近くの公開NTPサーバーを探して使用してください。
また、多くのNTPサーバーでは、ラウンドロビン参照を可能としているため、特定のホスト名を設定することによって、サーバーの負荷を分散させることが出来ます。
オフセット情報のログファイルを作成する
「/etc/ntp.drift」をviなどで作成する(ただファイルを作るだけ、、中は空でOK)
システム設定ファイルを変更する
「/etc/rc.conf」を以下のように修正してntpdを使用可能にします。
ntpdate_enable="YES"
ntpdate_flags="-s -b ntp1.jst.mfeed.ad.jp"
ntpd_enable="YES"
tickadj_enable="YES"
記述ミスなどでシステムが起動しなくなった場合にはディスクがマウントされなくなっているので再マウントしてから/etc/rc.confの修正を行いリブートさせます。
mount -a -t ufs
login : root
Password:
# vi /etc/rc.conf
リブートする
リブートして「rc.conf」で設定した機能を有効にします。
時刻合わせを行う
「xntpd」を動かす前に、「ntpdate」コマンドを使って時刻合わせを行います。
それというのも「xntpd」とはタイムサーバーとの時間の差を調べ、少しずつ時間を進めたり遅らせたりしながら修正を行うため、PCの時間が大きくずれているとなかなか同期が取れません。特に眠っていたPCなどで使用した場合、とてつもなく時間が狂っていることも多々あります。そうするといつまで立っても同期されません(^^;)。

「ntpdate」で時刻合わせを行うには以下のように行います。
/usr/sbin/ntpdate -s -b ntp1.jst.mfeed.ad.jp
 注意]パラメータで指定されているタイムサーバーは各自近い場所を探して下さい。
タイムサーバーに同期させる
時刻合わせが終わったところで、「ntpd」を起動してタイムサーバーと同期させてみます。
ntpd
「xntpd」を起動すると、数分でタイムサーバーと同期が取れるようになります。同期が取れているか確認するには以下のコマンドを叩きます。
ntpq -p
同期が取れていると以下のように「*」が先頭に表示されます。
remoterefidsttwhenpollreachdelayoffsetjitter
===========================================================================
+ntp1.jst.mfeed.fs-monntp2.mfee2u8012837710.916-1.0460.023
*ntp2.jst.mfeed.fs-monntp2.mfee2u7412837710.689-0.7690.527
+ntp3.jst.mfeed.ote-ntp1.jpnap.2u8112837710.015-1.4530.837
意味としては、
記号意味

同期を試み中、もしくはレスポンスがない
*現在同期中のサーバー
+利用可能なサーバー
#遠いが利用可能なサーバー
oPPSによる間接同期中のサーバ
.利用者オーバーなので使用不可
-クラスタリング検査不合格
x同期検査不合格
記号意味
remoteサーバ名
refidサーバの時刻参照元
stサーバの階層番号
※stratum2以降を使用。stratum1は大元なので一般の人は使用しない。
※どうしてもstratum1を使いたい人はGPSや電波時計を使用してstratum1サーバーを構築する。
t階層の種類
※ l = local, u = unicast, m = multicast, b = broadcast
when同期してからの経過時間
※単位は[s]
poll同期間隔
※単位は[s]。安定してくるほど値が大きくなる。(最大1024[s])
reachNTPサーバに接続を試みた回数の内、最後の8回分の結果を8進数で表示
※全て接続に成功していれば「377」となります。
delay信号の平均遅延時間
※単位は[ms]
offsetサーバとの時刻のずれ
※単位は[ms]。10[ms]以下なら問題なし。
jitter同期タイミングのばらつき
※単位は[ms]。10[ms]以下なら問題なし。
以上で設定は終了です。これで精度の高い標準時間を維持できるようになります。(^^)
1つのホスト名を指定することで、複数のNTPサーバーを順番に利用して、負荷の分散を行う。