4. FreeBSD 11.1 RELEASE/ntp サーバ設定

 
 ntp についての説明は Wiki を御参照ください。
4.1 ports
4.2 /etc/ntp.conf 設定
4.3 /etc/rc.conf 設定
4.4 起動スクリプトの修正
4.5 時刻の同期を確かめる
4.6 トラブルシュート

4.1 ports

 ntpd は比較的長い歴史のあるプログラムですが、案外、頻繁に更新が行われます。  デフォルトで /usr/sbin/ntpd が存在していますが、portsから、最新版を取得して、更新が発生したらすぐに適用できるようにしておきます。
/usr/ports/net/ntp-devel
 オプションがすごく多くなっていますが、デフォルトのままで問題ないかと思います。

4.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.1aaa.bbb.ccc.2aaa.bbb.ccc.3 とします。  /etc/ntp.conf の現在設定している pool の記述をコメントアウト(行の先頭に # を追加)し、最下行に を記述します。
pool 0.freebsd.pool.ntp.org iburst

 を以下のように編集します。

#pool 0.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

 ログファイルを残す場合、適切なタイミングでローテーションさせるようにします。
 /etc/newsyslog.conf は、以下の設定くらいが適当かと思います。

/var/log/ntpd.log           644  7     100  *      B


 LAN アドレスが、192.168.0.0 で、LAN 内のマシンに同期を許可する場合は、以下の記述を加えます。

restrict 192.168.0.0 mask 255.255.0.0     noquery nomodify nopeer notrap

4.3 /etc/rc.conf 設定

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

4.4 起動スクリプトの修正

 ntp サーバの起動スクリプトは /etc/rc.d/ntpd です。この
command="/usr/sbin/${name}"

 の部分を

command="/usr/local/sbin/${name}"

 と書き換えます。

 ここまで終わったら、

> /etc/rc.d/ntpd start

で、ntpd を起動します。

4.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信号から間接的に行なう)

4.6 トラブルシュート

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

 と date コマンドで時刻を合わせる(上記の例は「YYMMDDHHMI」の形式)か

> ntpdate "NTP サーバのホスト名もしくは IP アドレス"

 で時刻合わせをします。

 時刻合わせ後に NTP サーバを起動します。