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