FreeBSD 11.2 RELEASE - ntp サーバ設定
1. 概要 ntp についての説明は「ウィキペディア - ntp」を参照ください。 2. ports ntpd は比較的長い歴史のあるプログラムですが、案外、頻繁に更新が行われます。 デフォルトで /usr/sbin/ntpd が存在していますが、portsから、最新版を取得して、更新が発生したらすぐに適用できるようにしておきます。 cd /usr/ports/net/ntp make make install オプションがすごく多くなっていますが、デフォルトのままで問題ないかと思います。 3. /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 アドレスに 210.173.160.27、129.250.35.251、216.239.35.4 を使用するとすれば、以下をコメントアウトし # pool 0.freebsd.pool.ntp.org iburst 最下行に以下のように記述します。 server 210.173.160.27 server 129.250.35.251 server 216.239.35.12 もし、ログファイルを残したいのであれば、以下の記述を加えます。 logfile /var/log/ntpd.log ログファイルを残す場合、適切なタイミングでローテーションさせるようにします。 ローテーションのさせかたは末尾の方で・・・。 ローカルネットワークアドレスが、192.168.0.0 で、ローカルネットワーク内のマシンに同期を許可する場合は、以下の記述を加えます。 restrict 192.168.0.0 mask 255.255.0.0 noquery nomodify nopeer notrap 4. /etc/rc.conf 設定 ntpd が起動するように /etc/rc.conf に以下の記述を書き加えます。 ntpd_enable="YES" 5. 起動スクリプトの修正 起動スクリプトは /etc/rc.d/ntpd です。 command="/usr/sbin/${name}" の部分を command="/usr/local/sbin/${name}" と書き換えます。 ファイルが readonly になっていますので : w! Enter で書き込みを行います。 ここまで終わったら、 service ntpd start で起動します。 6. 時刻の同期を確かめる 時刻の同期を確かめるには、 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 という具合に、ホスト名の前に * マークが表示されれば時刻の同期は完了です。 ホスト名の前のマークが同期の状態を示していて以下の意味を持ちます。
cd /usr/ports/net/ntp make make install
/etc/ntp.conf
# pool 0.freebsd.pool.ntp.org iburst
server 210.173.160.27 server 129.250.35.251 server 216.239.35.12
logfile /var/log/ntpd.log
restrict 192.168.0.0 mask 255.255.0.0 noquery nomodify nopeer notrap
/etc/rc.conf
ntpd_enable="YES"
/etc/rc.d/ntpd
command="/usr/sbin/${name}"
command="/usr/local/sbin/${name}"
service ntpd start
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
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
7. 起動できないとき ntpd は親サーバと 1000秒以上時刻が離れていると停止します。 そもそも 1000秒以上 時刻が離れた状態からの起動はできません。 そういう場合は date 1606131627 と date コマンドで時刻を合わせる(上記の例は「YYMMDDHHMI」の形式)か ntpdate "NTP サーバのホスト名もしくは IP アドレス" で時刻合わせをします。 時刻合わせ後にサーバを起動します。 8. ログローテーションの設定 /etc/ntp.conf でログを出力する設定を行っている場合、ログローテーションの設定をしておきます。 /etc/newsyslog.conf.d/ntpd.conf を作成して # logfilename [owner:group] mode count size when flags [/pid_file] [sig_num] /var/log/ntpd.log 644 3 100 * B くらいでよいかと思います。 ntpd のログは、そんなに多くありませんので、100KB で世代交代、3世代管理にしています。
date 1606131627
ntpdate "NTP サーバのホスト名もしくは IP アドレス"
/etc/newsyslog.conf.d/ntpd.conf
# logfilename [owner:group] mode count size when flags [/pid_file] [sig_num] /var/log/ntpd.log 644 3 100 * B