NTPによる時刻合わせ

今回は、ローカルに用意したNTPサーバーの時刻を合わせる設定を解説します。【連載コラム:Linuxシステム管理標準教科書を読む(21)】

最終更新日:2025年02月19日

Linuxの基本的なスキルを習得したら、Linuxサーバーをシステムとして長期に運用管理していくためのスキルを身につけるのはいかがでしょうか。このコラムでは、「Linuxシステム管理標準教科書」の全体調整を担当した筆者が改めて大切なポイントを解説していきます。

NTP(Network Time Protocol)はマシンなどの時刻を合わせるためのプロトコルです。Linuxでは、Linuxが動作しているマシンの時刻を合わせるNTPクライアントとしての動作と、その他のマシンなどに時刻同期を提供するNTPサーバーとしての動作があります。クライアントの数が多い場合、外部のNTPサーバーに大きな負荷をかけないよう、ローカルのNTPサーバーを用意してこのサーバーのみ外部のNTPサーバーと時刻同期し、内部のクライアントはローカルNTPサーバーと時刻同期させるようにするとよいでしょう。
今回は、ローカルに用意したNTPサーバーの時刻を合わせる設定を解説します。


Chronyの動作確認

現在のLinuxでは、NTPサーバー、クライアントとしてChronyが多く使われています。まずは動作している様子を確認してみます。AlmaLinuxではChronyはchronydというサービスとして扱われています。

$ systemctl status chronyd
● chronyd.service - NTP client/server
     Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; preset: enabled)
     Active: active (running) since Tue 2025-01-28 07:32:57 JST; 8h left
       Docs: man:chronyd(8)
             man:chrony.conf(5)
    Process: 821 ExecStart=/usr/sbin/chronyd $OPTIONS (code=exited, status=0/SUCCESS)
   Main PID: 867 (chronyd)
      Tasks: 1 (limit: 10118)
     Memory: 4.2M
        CPU: 40ms
     CGroup: /system.slice/chronyd.service
             └─867 /usr/sbin/chronyd -F 2

 1月 28 07:32:57 localhost chronyd[867]: chronyd version 4.5 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIV>
 1月 28 07:32:57 localhost chronyd[867]: Loaded 0 symmetric keys
 1月 28 07:32:57 localhost chronyd[867]: Using right/UTC timezone to obtain leap second data
 1月 28 07:32:57 localhost chronyd[867]: Frequency -276.346 +/- 80.978 ppm read from /var/lib/chrony/dri>
 1月 28 07:32:57 localhost chronyd[867]: Loaded seccomp filter (level 2)
 1月 28 07:32:57 localhost systemd[1]: Started NTP client/server.
 1月 28 07:33:07 localhost.localdomain chronyd[867]: Selected source 45.76.218.37 (2.almalinux.pool.ntp.>
 1月 28 07:33:07 localhost.localdomain chronyd[867]: System clock wrong by -32400.283303 seconds
 1月 27 22:33:06 localhost.localdomain chronyd[867]: System clock was stepped by -32400.283303 seconds
 1月 27 22:33:06 localhost.localdomain chronyd[867]: System clock TAI offset set to 37 seconds

この環境は仮想マシンで動作させていますが、起動時のログを見てみると、最初は朝7時32分として起動していますが、NTPが外部のNTPサーバーと時刻同期し、9時間巻き戻って夜の22時33分に時刻を設定し直しているのがわかります。

参照しているNTPサーバーの確認

次に時刻同期のために参照しているNTPサーバーを確認します。クライアントとしての動作はchronycコマンドを使って操作します。

$ chronyc sources
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* ipv4.ntp3.rbauman.com         2   6   167    51   +164us[+3006us] +/-   11ms
^- 122x215x240x51.ap122.ftt>     2   6   157    50   -958us[ -958us] +/-   49ms
^- ap-northeast-1.clearnet.>     2   6   147   113  +3598us[+5467us] +/-   30ms
^- 45.159.48.231                 3   6   147   113  +4552us[+6424us] +/-  139ms

2桁目にある記号のうち、「*」となっているのが現在参照しているサーバーです。NTPサーバーは様々な組織がサービスを提供しており、複数のサーバーが参照可能(記号「-」)になっているのがわかります。

参照するNTPサーバーの設定を確認、変更する

Chronyの設定は「/etc/chrony.conf」に記述されています。参照するNTPサーバーをNICTが提供している「ntp.nict.jp」に変更してみます。

$ sudo vi /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.almalinux.pool.ntp.org iburst
pool ntp.nict.jp iburst

デフォルトではntp.orgが運営しているNTPサーバープールからランダムに参照するようになっています。ここをNICTのNTPサーバーを参照するように変更します。

設定変更を適用する

変更を適用するには、chronydサービスを再起動してみます。

$ sudo systemctl restart chronyd

chronycコマンドで時刻同期の様子を確認します。

$ chronyc sources
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^? ntp-k1.nict.jp                1   6     3     0    -20ms[  -20ms] +/- 9780us
^? ntp-b2.nict.go.jp             1   6     3     0    -20ms[  -20ms] +/-   13ms
^? ntp-a3.nict.go.jp             1   6     1     2    -21ms[  -21ms] +/-   15ms
^? ntp-b3.nict.go.jp             1   6     1     2    -21ms[  -21ms] +/-   13ms

記号「?」なので、まだ同期していない状態です。

$ chronyc sources
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^+ ntp-k1.nict.jp                1   6    77    58    +14ms[  +14ms] +/-   10ms
^* ntp-b2.nict.go.jp             1   6    77    58    +13ms[  -10ms] +/-   13ms
^- ntp-a3.nict.go.jp             1   6    77    57    +10ms[  +10ms] +/-   12ms
^+ ntp-b3.nict.go.jp             1   6    77    57    +13ms[  +13ms] +/-   11ms

ntp-a3のみ「-」なので、3つが時刻同期可能な状態です。

$ chronyc sources
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^+ ntp-k1.nict.jp                1   6   177    12    +21ms[  +21ms] +/-   13ms
^* ntp-b2.nict.go.jp             1   6   177    12    +27ms[  +40ms] +/-   14ms
^+ ntp-a3.nict.go.jp             1   6   177    10    +12ms[  +12ms] +/-   27ms
^+ ntp-b3.nict.go.jp             1   6   177    11    +25ms[  +25ms] +/-   14ms

4つすべてのNTPサーバーが時刻同期可能となりました。

Linuxが正しい時刻で動作していることは、ログの記録やファイルなどのデータの保存にとって重要なので、正しい時刻になっているようにNTPクライアントとしてきちんと動作していることを確認しておきましょう。


筆者紹介
宮原 徹 氏

宮原 徹 氏

株式会社びぎねっと

Linux標準教科書、Linuxサーバー構築標準教科書などの監修者。LinuCレベル1/レベル2 Version10.0の改訂作業にも協力。また、幅広いOSSに関する情報提供の場として「オープンソースカンファレンス(OSC)」の企画運営も。

<Linuxシステム管理標準教科書とは>

Linuxシステム管理標準教科書」(システム管理教科書)は2015年4月にリリースされた標準教科書シリーズの1冊です。Linuxシステムの運用管理という観点で書かれており、システム管理者という業務において知っておかなければならない基本的なトピックが解説されています。「Linux標準教科書」「Linuxサーバー構築標準教科書」でコマンド操作やサーバー構築の基本を学んだら、このシステム管理教科書を読んで、単にLinuxを使うのではなく、システムとして長期的に管理運用していくためのスキルを身につけてください。

バックナンバー

第20回:anacronによるシステムジョブの実行
第19回:anacronの呼び出し
第18回:カーネルとデバイスの確認
第17回:カーネルの起動
第16回:新しいディストリビューションでのGRUBの取り扱い

ページトップへ