NTP サーバ
概要
NTP (Network Time Protocol) は,ネットワーク経由で計算機の時刻を同期させるプロトコルである. FreeBSD では,ntpd が基本システムに含まれており,追加インストールは不要である. 設定ファイルは /etc/ntp.conf,ドリフトファイルの既定値は /var/db/ntpd.drift である. 通信には UDP ポート 123 を使用する.
上流の NTP サーバには,プールのホスト名(0.freebsd.pool.ntp.org など)や, 組織内・地域の公開 NTP サーバ(日本では ntp.nict.jp など)を指定する.
サーバ設定
- /etc/rc.conf に次の2行を追加する.root でログインし,次のコマンドを実行する
sysrc ntpd_enable="YES" sysrc ntpd_sync_on_start="YES"
ntpd_sync_on_start="YES" は,起動時に1回だけ時刻の大きなずれを一気に補正する設定である(ntpd の -g オプション).
参考: man rc.conf
- /etc/ntp.conf を次のように設定する
driftfile /var/db/ntpd.drift pool 0.freebsd.pool.ntp.org iburst server <上流 ntp サーバ名> iburst restrict default limited kod nomodify notrap noquery nopeer restrict source limited kod nomodify notrap noquery restrict 127.0.0.1 restrict ::1
iburst は,起動直後の同期を速めるオプションである. 上流サーバは,1台の障害に備えて複数指定する. ドリフトファイルの値は ntpd が自動的に書き込むため,手動で値を設定する必要はない.
- LAN 内のクライアントに時刻を配信する場合は,/etc/ntp.conf に次の行を追加する(例:192.168.0.0/24 からの参照を許可)
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap nopeer
- ntpd を起動する.root でログインし,次のコマンドを実行する
service ntpd start
- 動作確認を行う.root でログインし,次のコマンドを実行する
ntpq -p
上流サーバが一覧表示され,reach の値が 0 以外に増えていくこと, 同期先のサーバの行の先頭に * が付くことを確認する.
- /var/log/messages でエラーメッセージが無いことを確認する.root でログインし,次のコマンドを実行する
tail /var/log/messages
【関連する外部ページ】
- FreeBSD ハンドブック「Clock Synchronization with NTP」: https://docs.freebsd.org/en/books/handbook/network-servers/#network-ntp
- ntp.conf のマニュアル: https://man.freebsd.org/cgi/man.cgi?query=ntp.conf
ipfw 設定
ipfw を使用している場合には,UDP ポート 123 の通信を許可する必要がある. ipfw でフィルタリング の Web ページを見て,設定を行う.
クライアント設定
FreeBSD のクライアントでは,サーバと同じく基本システムの ntpd を使用する.
- /etc/rc.conf に次の2行を追加する.root でログインし,次のコマンドを実行する
sysrc ntpd_enable="YES" sysrc ntpd_sync_on_start="YES"
- /etc/ntp.conf を次のように設定する(<ntp サーバ名>には,上で設定した NTP サーバを指定する)
driftfile /var/db/ntpd.drift server <ntp サーバ名> iburst server <ntp サーバ名(複数指定する場合)> iburst restrict default ignore restrict 127.0.0.1 restrict ::1
- ntpd を起動する.root でログインし,次のコマンドを実行する
service ntpd start
- 動作確認を行う.root でログインし,次のコマンドを実行する
ntpq -p
おおまかな時刻合わせ
時刻が大きくずれていると,ntpd は同期を行わずに終了することがある. その場合には,ntpd を一時的に実行して時刻を強制的に合わせる.root でログインし,次のコマンドを実行する.
ntpd -gq
-g はずれの大きさに関わらず時刻を合わせるオプション,-q は時刻を合わせた後に終了するオプションである. このコマンドは ntpd の停止中に実行する. なお,ntpdate コマンドは非推奨であり,同等の機能は ntpd で提供される.