FreeBSD 10.3 RELEASE - ntp サーバ設定

クラウディア 
 「ntp」についての説明は Wiki を御参照ください。
1. ports
2. /etc/ntp.conf 設定
3. /etc/rc.conf 設定
4. 起動スクリプトの修正
5. 時刻の同期を確かめる
6. トラブルシュート

1. ports

 2014年になって、「ntpd」のセキュリティホールが見つかったらしく、頻繁に更新が行われています。  デフォルトで「/usr/sbin/ntpd」が存在していますが、最新版を取得します。

/usr/ports/net/ntp-devel

2. /etc/ntp.conf 設定

 「ntp」サーバのコンフィグレーションファイルは、「/etc/ntp.conf」です。  これには、自分の上位となる「ntp」サーバの「IP」アドレスを記述します。  「ntp」サーバには、「stratum」という階層構造があります。  一般サーバの「stratum」は、3 か 4 に位置しますので、上位の「ntp」サーバには、「stratum」2 か 3 あたりのサーバを設定します。  通常は、プロバイダから少なくとも1つの「ntp」サーバアドレスを指示してくれているはずです、1つはそのアドレスを設定します。  こちらを御覧になれば、「ntp」サーバについて情報が得られます。  「ntp」サーバアドレスはできれば 3つくらい選んでください。複数のサーバとの時刻差を計測することでより正確な時刻が得られます。  仮に、3つの「ntp」サーバの「IP」アドレスが「aaa.bbb.ccc.1」「aaa.bbb.ccc.2」「aaa.bbb.ccc.3」とすれば、「/etc/ntp.conf」の現在設定している「server」の記述をコメントアウト(行の先頭に # を追加)し、最下行に、以下のように記述します。

server 0.freebsd.pool.ntp.org iburst
server 1.freebsd.pool.ntp.org iburst
server 2.freebsd.pool.ntp.org iburst
 ↑をコメントアウトして↓を追加

server  aaa.bbb.ccc.1
server  aaa.bbb.ccc.2
server  aaa.bbb.ccc.3
 もし、ログファイルを残したいのであれば、以下の記述を加えます。

logfile         /var/log/ntpd.log
 ログファイルを残す場合、適切なタイミングでローテーションさせるようにします。(「FreeBSD 10.3 RELEASE - OS 起動後の基本的な設定 - newsyslog」参照)  「LAN」アドレスが、「192.168.0.0」で、「LAN」内のマシンに同期を許可する場合は、以下の記述を加えます。

restrict 192.168.0.0 mask 255.255.0.0     noquery nomodify nopeer notrap

3. /etc/rc.conf 設定

 「ntpd」が起動するように、「/etc/rc.conf」に以下の記述を書き加えます。

ntpd_enable="YES"

4. 起動スクリプトの修正

 「ntp」サーバの起動スクリプトは、「/etc/rc.d/ntpd」です。この

command="/usr/sbin/${name}"
 の部分を

command="/usr/local/sbin/${name}"
 と書き換えます。  ここまで終わったら、

> /etc/rc.d/ntpd start
で、「ntpd」を起動します。

5. 時刻の同期を確かめる

 時刻の同期を確かめるには、

ntpq -p
 というコマンドを使います。再起動直後には、

    remote       refid      st t when poll reach   delay  offset  jitter
=========================================================================
 ntp仮名1.ne aaa.bbb.ccc.1  3 -   88   64    0    0.000    0.000 4000.00
 ntp仮名2.ne aaa.bbb.ccc.2  3 u   43   64    1   39.089   -2.978   2.786
 ntp仮名3.ne aaa.bbb.ccc.3  3 -   85   64    0    0.000    0.000 4000.00
 という、表示になっていると思います。起動後、15分以上たたないと、時刻の同期は完了しません。

    remote       refid      st t when poll reach   delay  offset  jitter
=========================================================================
*ntp仮名1.ne aaa.bbb.ccc.1  3 -   88   64    0    0.000    0.000 4000.00
+ntp仮名2.ne aaa.bbb.ccc.2  3 u   43   64    1   39.089   -2.978   2.786
+ntp仮名3.ne aaa.bbb.ccc.3  3 -   85   64    0    0.000    0.000 4000.00
 という具合に、ホスト名の前に「*」マークが表示されれば時刻の同期は完了です。  ホスト名の前のマークが同期の状態を示していて以下の意味を持ちます。
マーク 意 味 
'*'参照同期中であると宣言されたサーバ
'#'参照可能だが, 同期距離が遠いサーバ
'+'接続テストに合格し, いつでも参照可能なサーバ. 参照リストにある(好ましい)サーバ
' '同期を試み中, もしくはレスポンスがないため, 参照していないサーバ
'x'falseticker検査で, 参照リストから外れたサーバ
'-'クラスタリング検査で, 参照リストから外れたサーバ
'.'参照リストから外れたサーバ
'o'参照同期中であると宣言されたサーバ(同期はPPS信号から間接的に行なう)

6. トラブルシュート

 「ntpd」は、親サーバと 1000秒以上時刻が離れていると停止します。  そもそも 1000秒以上 時刻が離れた状態からの起動はできません。  そういう場合は

date 1606131627 #「YYMMDDHHMI」の形式です
 と「date」コマンドで時刻を合わせるか

ntpdate "NTP サーバのホスト名もしくは IP アドレス"
 で時刻合わせをします。  時刻合わせ後に、「NTP」サーバを起動します。
ハイスピードプラン