RHEL7でもchronyは標準で導入されていましたが、RHEL8からChronyのみがサポートされるようになりました。
この記事では、chronyの設定について詳細をまとめました。
Red Hat Enterprise Linux 9.xでchronyを使って時効同期する方法、時刻同期しているかを確認する方法をまとめました。
ChronyはRHEL8, RHEL9, RHEL10で使用します。
RHEL9ではchronydはデフォルトで使用できる
RHEL9ではデフォルトでchronydがデフォルトで使えます。
systemctl status chronyd
RHEL9.5で上記コマンドを実行してみた結果は以下です。
[root@RHEL95 ~]# systemctl status chronyd
* chronyd.service - NTP client/server
Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; preset: enabled)
Active: active (running) since Mon 2025-12-08 16:46:17 JST; 43s ago
Docs: man:chronyd(8)
man:chrony.conf(5)
Process: 861 ExecStart=/usr/sbin/chronyd $OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 910 (chronyd)
Tasks: 1 (limit: 10736)
Memory: 4.2M
CPU: 63ms
CGroup: /system.slice/chronyd.service
`-910 /usr/sbin/chronyd -F 2

/etc/chrony.confの記載内容
以下のコマンドでchrony.confの内容を確認します。
# cat /etc/chrony.conf
RHEL9.5インストール時点でのchrony.confをcatコマンドで確認します。以下の設定値の詳細について解説してきます。
[root@localhost ~]# cat /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (https://www.pool.ntp.org/join.html).
pool 2.rhel.pool.ntp.org iburst
# Use NTP servers from DHCP.
sourcedir /run/chrony-dhcp
# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift
# Allow the system clock to be stepped in the first three updates
# if its offset is larger than 1 second.
makestep 1.0 3
# Enable kernel synchronization of the real-time clock (RTC).
rtcsync
# Enable hardware timestamping on all interfaces that support it.
#hwtimestamp *
# Increase the minimum number of selectable sources required to adjust
# the system clock.
#minsources 2
# Allow NTP client access from local network.
#allow 192.168.0.0/16
# Serve time even if not synchronized to a time source.
#local stratum 10
# Require authentication (nts or key option) for all NTP sources.
#authselectmode require
# Specify file containing keys for NTP authentication.
keyfile /etc/chrony.keys
# Save NTS keys and cookies.
ntsdumpdir /var/lib/chrony
# Insert/delete leap seconds by slewing instead of stepping.
#leapsecmode slew
# Get TAI-UTC offset and leap seconds from the system tz database.
leapsectz right/UTC
# Specify directory for log files.
logdir /var/log/chrony
# Select which information is logged.
#log measurements statistics tracking
/etc/chrony.confのパラメータ(設定値)について
/etc/chrony.confに設定するパラメータについて詳細を解説します。
allowディレクティブ
NTPサーバーとして接続されることを許可するために記載するディレクティブがallowです。
必要に応じて、NTP サーバーとして動作しているマシンへの NTP 接続が許可されるホスト、サブネット、またはネットワークを指定します。デフォルトでは、接続は許可されません。
NTPサーバーとして接続されることを許可するにはfirewalldコマンドでポートを許可しておきます。
firewall-cmd --permanent --zone=public --add-port=123/udp
firewalldの詳細は以下の記事でまとめています。
cmdallowディレクティブ
コマンドでのNTPサーバーの操作を許可するディレクティブです。chronyc で cmdallow コマンドを実行します。
hwtimestampディレクティブ
ハードウェアタイムスタンプを有効にできるディレクティブです。
hwtimestampディレクティブは、ハードウェアのタイムスタンプで非常に精度の高い同期を可能にします。詳細はchrony.conf(5)man ページを参照してください。
localディレクティブ
localディレクティブは動機ソースがなくともchronydがリアルタイムで同期しているようにするディレクティブです。
localキーワードは、現在の同期ソースがない場合でも、(それをポーリングしているクライアントから見ると)chronydがリアルタイムに同期しているように見えるようにします。このオプションは、通常、孤立したネットワークで master となるコンピューターで使用されます。ここでは、いくつかのコンピューターが相互に同期するようになり、master は、手動入力でリアルタイムと一致させます。以下はコマンド例を示します。
local stratum 1010 という大きな値が示しているのは基準クロックからのホップ数が非常に多いため、時間の信頼性が低いということです。基準クロックに最終的に同期している別のコンピューターにアクセスするコンピューターは、確実に 10 よりも下の階層に存在することになります。このため、
localコマンドで 10 のように高い値を設定すると、リアルサーバーの視認性があるクライアントにリークしたとしても、マシン自体の時間がリアルタイムと混同することを防ぎます。
logdirディレクティブ
logdirディレクティブにログが書き込まれるディレクトリを指定できます。
このディレクティブは、ログファイルが書き込まれるディレクトリーを指定します。
このディレクティブの使用例は、以下のようになります。
logdir /var/log/chrony
makestepディレクティブ
時刻がずれた際に修正されるパラメータを調整するディレクティブです。
以下のパラメータでは、1.0秒のずれを3回検知した際にstepモードで同期します。
makestep 1.0 3
通常、
chronydは、必要に応じてクロックの速度を下げるかまたは上げることで、システムに対して時間オフセットの段階的修正を実施します。特定の状況では、このスルーイング (slewing) プロセスでシステムクロックを修正するのに非常に時間がかかり、システムクロックが不安定な状態になることがあります。このディレクティブは、調整がしきい値を上回ったときに、chronydでシステムクロックを一度に修正 (step) します。ただし、chronydが開始してからのクロックの更新が、指定した制限を上回らなかった場合に限ります (負の値は、制限を無効にします)。initstepslewディレクティブはNTPのソースのみに対応しているため、この方法は基準クロックを使用しているときに特に有用です。このディレクティブの使用例は、以下のようになります。
makestep 1000 10この場合は、調整幅が 1000 秒よりも大きければシステムクロックが更新されますが、最初の 10 回の更新しか行われません。
leapsecmode slewについて
/etc/chrony.confファイルにデフォルトで以下のパラメータが記載されています。
# Insert/delete leap seconds by slewing instead of stepping.
#leapsecmode slew
makestepディレクティブでsteppingしない代わりに、slewingする場合は、makestepディレクティブをコメントアウトし、このパラメータ(leapsecmode slew)のコメントアウトを外します。
/etc/chrony.confファイルを編集したら以下のコマンドを実行してchronydを再起動します。
# systemctl restart chronyd
本件の詳細は以下のRed Hat公式ページが参考になります。

一部抜粋してleapsecmodeのパラメータに関する説明を引用します。
Chrony を使用してうるう秒を一度に修正する
うるう秒を一度に修正するには、以下のオプションを /etc/chrony.conf に追加します。leapsecmode stepこのオプションを使用すると、chronyd がうるう秒を瞬時に戻すことでシステム時計を修正します。これにより、カーネルがうるう秒を挿入する際のバグを回避することができます。
chrony を使用してうるう秒を徐々に調整 (slew) する
うるう秒を調整 (slew) するには、以下のオプションを /etc/chrony.conf に追加します。leapsecmode slewこのオプションを使用すると、時間を瞬時に戻す代わりに、chronyd がうるう秒を徐々に調整することでシステム時計を修正します。
なお、うるう秒を無視するには以下の対応を行います。
NTPD を使用してうるう秒を無視する
うるう秒を無視するには、通常の slew オペレーションで修正するようにします。以下の行が /etc/sysconfig/ntpd に設定されていることを確認します。OPTIONS="-g -x"このフラグを追加して、カーネルのうるう秒の修正の追加が無効になり、うるう秒が時間をかけて修正されます。
minsourcesディレクティブ
minsourcesには、刻同期の際に最低限必要な、候補となる時刻同期サーバの数を指定できます。
minsourcesディレクティブは、ローカルクロックを更新する前にソース選択アルゴリズムで選択可能なものとして考慮されるべきソースの最小数を設定します。構文は以下のようになります。
minsources number-of-sourcesnumber-of-sources は、デフォルトでは 1 です。minsource を 1 よりも大きくすると、信頼性が向上します。複数のソースが互いに対応することが必要となるためです。
rtcsyncディレクティブ
カーネルが同期するのに使用するディレクティブです。
rtcsync ディレクティブは、デフォルトで /etc/chrony.conf ファイルにあります。これにより、システムクロックが同期されていることがカーネルに知らされ、カーネルによりリアルタイムクロックが 11 分ごとに更新されます。
chronyでの時刻同期を確認する
以下のコマンドでRHEL9がchronyを使って時刻同期しているかを確認します。
chronyc sources
このコマンドはntpdのntpq -pコマンドに当たるコマンドです。
RHEL9.5での実行例は以下です。
[root@RHEL95 ~]# chronyc sources
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^- 138.3.209.153 2 6 123 111 -2672us[+3524us] +/- 92ms
^- tama.paina.net 2 6 37 52 +746us[ +746us] +/- 48ms
^* ntp1.hnd.jp.hojmark.net 2 6 37 52 +416us[+6613us] +/- 38ms
^- 122x215x240x51.ap122.ftt> 2 6 37 52 +96ms[ +96ms] +/- 156ms
[root@RHEL95 ~]#


