chrony を使って NTP サーバー、NTP クライアントのぞれぞれを設定してみました。
環境
- Ubuntu 20.04
- chrony 3.5
インストール
$ sudo apt install chrony
NTP サーバーとしての設定
/etc/chrony/chrony.conf
をエディタで編集します。
$ sudo nano /etc/chrony/chrony.conf
上位サーバーの無効化
17行目〜20行目をコメントアウトします。
#pool ntp.ubuntu.com iburst maxsources 4
#pool 0.ubuntu.pool.ntp.org iburst maxsources 1
#pool 1.ubuntu.pool.ntp.org iburst maxsources 1
#pool 2.ubuntu.pool.ntp.org iburst maxsources 2
認証の無効化
24行目をコメントアウトします。
#keyfile /etc/chrony/chrony.keys
アクセス許可
特定のセグメントからのみアクセスを許可したい場合は以下のように追記します。
# Allow NTP client access from local network.
allow 192.168.4.0/24
全セグメントから許可シたい場合は allow
とだけ記載するようです。
上位の NTP サーバーがいなくても同期を取れるようにする
以下を追記します。
# Serve time even if not synchronized to a time source.
local stratum 5
再起動
設定が完了したら chrony を再起動します。
$ sudo systemctl restart chrony
NTP クライアントとしての設定
/etc/chrony/chrony.conf
をエディタで編集します。
$ sudo nano /etc/chrony/chrony.conf
17行目〜20行目をコメントアウトし、pool <NTPサーバーのIPアドレス> iburst>
を追記します。
#pool ntp.ubuntu.com iburst maxsources 4
#pool 0.ubuntu.pool.ntp.org iburst maxsources 1
#pool 1.ubuntu.pool.ntp.org iburst maxsources 1
#pool 2.ubuntu.pool.ntp.org iburst maxsources 2
pool 192.168.0.10 iburst
時刻同期について
以下のページが参考になりました。
chrony は iburst オプションの付いた NTP サーバーに対して、起動直後に短い間隔で4回問い合わせをするそうです。
また、デフォルトでは makestep 1 3
の設定がありますが、これは chrony の起動時に、1.0 秒以上時刻ずれが 3 回続いた場合、step モードで一気に時刻補正をするという意味だそうです。
そうでない場合は slew モードで少しずつ時刻補正を行うそうです。
再起動
設定が完了したら chrony を再起動します。
$ sudo systemctl restart chrony
確認
chronyc sources
を実行し、サーバー名の最初に *
と表示されていれば同期が取れています。
$ chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 192.168.0.10 5 6 377 34 -7277ns[-2447ns] +/- 41us
ちょっとはまったところ
きちんと同期がとれているか確認するために、サーバー側の日時を Ubuntu の GUI で変更し、クライアントの PC を再起動してみましたが、同期されませんでした。
何でだろうと思っていたら、日時を GUI で変更したときに chrony のサービスが停止していました。
chrony が動いているかどうかは以下のコマンドで確認できます。
$ sudo systemctl status chrony
もし chrony が停止していた場合は、以下のコマンドで起動します。
$ sudo systemctl start chrony
この状態でクライアントの PC を再起動したら、起動時に日時が同期されました。
もし PC 再起動後に chrony が停止していた場合は有効化されていないので、以下のコマンドを実行します。
$ sudo systemctl enable chrony