【Linux】小規模な環境のNTPサーバはchronyがおすすめ

chronyはNTPクライアント・サーバの機能を持っておりntpdの代替として活用することができます。

さらにchronyはntpdよりも動作が軽いので小規模な環境のNTPであればchronyがおすすめです。

インストール

chronyは現在主要なディストリビューションの現行バージョンであれば「chrony」というパッケージ名で用意されているかと思います。

ntpdが起動している環境ではchronyを入れる前に先にntpdを停止して、アンインストールするか自動起動を停止するかしておいて下さい。

Debian系(apt系)

# apt install chrony

RedHat系(yum系)

# yum install chrony

主な設定

設定ファイルの場所は/etc/chrony.confや/etc/chrony/chrony.confなどにあるかと思います。

server <NTPサーバ> [option]

時刻を問い合わせにいくNTPサーバを指定します。

optionにiburstを付与すると起動直後短い間隔で4回問い合わせを行い、時刻同期までにかかる時間を短縮することができます。

server ntp.nict.jp iburst

異なる問い合わせ先のNTPサーバを複数追加したければ複数行書くことができます。

ntp.nict.jpを指定した場合は以下と同義です。

server ntp-a2.nict.go.jp iburst
server ntp-a3.nict.go.jp iburst
server ntp-b2.nict.go.jp iburst
server ntp-b3.nict.go.jp iburst

直接IPアドレスを指定することもできます。

以下の例ではIPV6アドレスを直接指定しています。

server 2001:df0:232:eea0::fff3 iburst
server 2001:df0:232:eea0::fff4 iburst

rtcsync

この設定を追加しておけばシステムクロックを一定間隔でハードウェアクロックに同期してくれるようになります。

ただし一部の仮想環境などではうまく同期してくれないことがあるようなので注意が必要です。

その場合は従来のntpdの時のようにhwclock -wをcronで定期的に実行するなどでシステムクロックとハードウェアクロックを同期するしかないようです。

makestep <時刻のずれ(秒)> <回数>

chronyは普段slewモードで時刻を調整していますが、chrony起動直後に時刻がずれていた場合にstepモードで時刻調整を行う条件を設定できます。

stepではすぐに取得した時間に設定する調整方法であり、一方slewは徐々に取得した時間に近づけていく調整方法です。

<時刻のずれ(秒)>以上ずれている間、<回数>回目の時刻調整までstepモードで時刻調整されます。

makestep 1.0 3

bindaddress <IPアドレス>

chronyはデフォルトで全てのインターフェースで接続を待ち受けますが、この設定でIPアドレスを指定するとそのIPアドレスに対してのみバインドします。

IPv4とIPv6で1つずつ指定することができます。

bindaddress 127.0.0.1
bindaddress ::1

実用上あまり意味はないですが上記の設定例ではlocalのみバインドします。

port <ポート番号>

NTPリクエストの待ち受けポート番号を任意に変更することができます。

port 123

ちなみにchronyはntpdと違ってNTPサーバへの問い合わせに使われる送信元ポート番号は空いている適当なポート番号が使用されます。

allow [all] <IPアドレスやサブネット>

deny [all] <IPアドレスやサブネット>

アクセスを許可(allow)・拒否(deny)するクライアントのIPアドレスやサブネットを指定することができます。

先に設定された条件のものが優先度が高いですが、allを付けた設定は先に設定された条件を上書きします。

192.168.1や192.168.1.0/24などのような記述でサブネットを指定することができます。

allow 192.168.1.1
deny 192.168.1
allow 192.168

上記の設定例では192.168.1.1からのアクセスは許可して、残りの192.168.1.0/24セグメントからのアクセスは拒否します。

そして192.168.1.0/24セグメント以外の192.168.0.0/16からのアクセスは許可します。

同期状態の確認

chronyc -n sources

上記のコマンドで以下のような同期情報が表示され確認することができます。

-n オプションを指定するとIPアドレスの逆引きを行いません。

$ chronyc -n sources
210 Number of sources = 2
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^+ 2001:df0:232:eea0::fff3       1  10   377   437  -1011us[-1904us] +/-   13ms
^* 2001:df0:232:eea0::fff4       1  10   377   115    +56us[ -846us] +/-   11ms

問い合わせ先がサーバであれば先頭に^が付きます。

そして*が付いているサーバが同期対象、+が付いているサーバが同期対象候補となっています。

まとめ

ntpdよりも柔軟性が高くて動作の軽いchronyは小規模環境のNTPサーバとして使いやすく初心者でも難なく設定して使用することが出来ると思います。

今回紹介した設定やchronycコマンドの使い方はごく一部です。

詳しい設定やchronycコマンドの使い方はman chronyなどで参照してみて下さい。