LinuxでNTP時刻同期
Chrony設定からトラブル対処まで解説!

 

システム運用において「時刻の正確性」はセキュリティや信頼性の基盤です。
Linuxサーバーでもログの整合性やセキュリティ対策のために、ネットワーク経由で正確な時刻を同期するNTP(Network Time Protocol)が不可欠です。
本記事では、NTPの仕組みやChronyとの違いから、Linuxでの設定方法・確認コマンド・トラブルシューティングまで、初心者の方にもわかりやすく解説します。

\ 2週間無料でお試しできます! /
Unix系OS専門のホスティングサービス「ミライサーバー」
Unix/Linux系VPSをこの価格で!
全プランSSD搭載でコストパフォーマンス◎
・豊富なOSラインアップ
・充実の無料サポート
VPSを使ってみる

NTPとは?時刻同期の仕組みと重要性

概要

NTP(Network Time Protocol)とは、ネットワーク経由でコンピューターやサーバーの時刻を正確に同期させるためのプロトコルです。
NTPは非常に古くから使われており、誤差をミリ秒単位で抑えられる高精度が特長です。
時刻ズレは運用やセキュリティに重大な影響を及ぼすため、サーバー運用ではNTPの導入が必須です。

なぜ時刻の同期が必要なのか

時刻同期がずれていると、システムに深刻な問題を引き起こします。
例えば、ログのタイムスタンプが実際の発生時刻と異なり、障害対応やセキュリティ分析に支障をきたします。
また、SSL/TLS証明書の有効期限管理や、各種認証プロトコルにも正確な時刻が必要です。
特に複数台のサーバーを連携して運用するシステムでは、すべてのサーバーが同じ時間を共有できなければ、データの整合性可用性を維持できません。
そのためNTPによる時刻同期は、システムの信頼性を担保するための基本要件といえます。

NTPの階層構造とサーバーの役割


NTPはStratum(階層)構造という概念で構成されており、上位層から下位層へと正確な時刻が伝達されます。

  • Stratum 0原子時計やGPSなど、正確な時刻を持つ装置(※直接ネットワーク接続は不可)
  • Stratum 1Stratum 0に接続し、時刻を取得・配信する最上位のNTPサーバー
  • Stratum 2Stratum 1から時刻を受け取り、他のクライアントやサーバーへ配信
  • Stratum 3以降さらに下層のサーバーで、ネットワーク内で時刻を中継

Stratum 0は原子時計などの物理的な正確な時刻源を指します。
Stratum 1はその時刻を直接受け取り、下位層に基準時刻を提供するサーバーです。
Stratum 2以降はその上位層から時刻を同期していく形です。

企業ネットワークでは、Stratum 2〜3を利用するのが一般的です。
また、社内で独自のNTPサーバーを設置して、LAN内のクライアントに配信する構成も広く採用されています。

CentOSVPSで利用するなら
ミライサーバー

\ 2週間無料でお試しできます! /
VPSを使ってみる

Linuxにおける時刻管理の仕組みとNTPの役割

システムクロックとハードウェアクロックの違い

Linuxでは「システムクロック(system clock)」と「ハードウェアクロック(hardware clock)」の2種類の時刻管理方式が存在します。

  • システムクロック(system clock)
    OSが起動中に使用される時刻で、NTPやChronyなどの時刻同期サービスによって調整されます。
  • ハードウェアクロック(hardware clock)
    マザーボード上のRTC(Real Time Clock)による内部時計で、電源オフ時も保持されます。

Linuxでは起動時にこのハードウェアクロックの値を元にシステムクロックが初期化されるため、両者の同期が重要です。

ChronyとNTP(ntpd)の違い

近年のLinux環境では、従来利用されていたサービスの「ntpd」よりも「chronyd」を採用するケースが増えています。

  • Chronyの特長
    ネットワーク接続が不安定な環境でも高精度な時刻同期が可能
    仮想マシン(VM)環境でも安定して動作する
    軽量で起動が速く、リソース消費が少ない
  • ntpdの特長
    歴史が長く、大規模ネットワークでの安定運用に定評がある

どちらを選ぶかは、システムの用途や運用規模、セキュリティ要件によって異なりますが、最新のディストリビューションではChronyが推奨される傾向にあります。

NTPサーバーの構築手順

今回は、ミライサーバーのVPSを利用し、NTPサーバーを構築していきます。
仮想マシンのスペックは以下のとおりです。

  • CPU:4コア
  • Memory:4GB
  • Disk:SSD300GB
  • CentOSのバージョン:CentOS 7.9.2009
    ※ミライサーバーではCentOS 7などのOSをインストールした状態からお使いいただけます。

なお、CentOS 7からは時刻同期サーバー/クライアントとしてchronyが標準採用されているため、本記事ではchronyを利用したNTPサーバーの構築手順を解説します。

chronyのインストールとサービス制御

CentOS 7ではOSインストール時にchronyを選択できますが、もしインストールされていない場合は、以下のコマンドを実行してインストールします。

$ sudo yum install chrony

 

インストールが完了したら、動作状況を確認してみましょう。
「active(running)」と表示されれば、正常に動作しています。

$ sudo systemctl status chronyd

 

なお、chronyの起動・停止のコマンドは以下のとおりです。

chronyの制御コマンド
起動
$ sudo systemctl start chronyd
停止
$ sudo systemctl stop chronyd
システム起動時に自動起動有効化
$ sudo systemctl enable chronyd
システム起動時に自動起動無効化
$ sudo systemctl disable chronyd

外部NTPサーバーの指定方法

信頼性の高い時刻同期を行うには、外部NTPサーバーを指定することが重要です。
設定ファイルでは、`server`や`pool`ディレクティブを使って「ntp.nict.jp」や「pool.ntp.org」などのサーバーを記述します。
複数のサーバーを指定することで、冗長性を確保し、1つのサーバーが停止しても他のサーバーから時刻を取得できるようになります。
NTPの精度と安定性を高めるための基本設定といえるでしょう。

ファイアウォールの設定とポート開放

NTPはUDP123番ポートを使用します。
ファイアウォールの設定が正しく行われていないと、通信が遮断され時刻同期ができません。
firewalldやiptablesなどでポートを制限している場合は、UDP 123ポートを開放しましょう。

firewalldでは、以下のコマンドで123ポートを解放します。

$ sudo firewall-cmd --permanent --add-service=ntp
$ sudo firewall-cmd --reload

 

正しく設定できたか確認するには、以下のコマンドを実行します。
「ntp」が表示されることを確認しましょう。

$ sudo firewall-cmd --list-all

特にNTPサーバーを社内LANに公開する場合、外部アクセスを制限しつつ必要な通信のみを許可することがセキュリティ上重要です。

LAN内でNTPサーバーとして時刻配信する設定

自社ネットワーク内の複数サーバーや端末に時刻を提供するには、LAN内向けにNTPサーバーを構築するのが効果的です。

以下では、viコマンドを使用して /etc/chrony.confを編集し、LAN内への配信を許可しています。

なお、chrony.conf の設定ファイルでは、行頭に # が付いている行はコメントアウトされており無効になります。
そのため上記の例では /16 の設定は無効で、実際に有効なのは /24 の設定です。

設定後はサービスの再起動を忘れずに実施しましょう。

$ sudo systemctl restart chronyd
$ chronyc sources

CentOSVPSで利用するなら
ミライサーバー

\ 2週間無料でお試しできます! /
VPSを使ってみる

NTPクライアントの設定と時刻同期の確認方法

NTPクライアントとして設定する方法(`chrony.conf`)

LinuxをNTPクライアントとして運用するには、/etc/chrony.confに上位のNTPサーバー情報を記述します。

以下では、viコマンドを使用して /etc/chrony.confを編集し、例として外部のNTPサーバー「ntp.nict.jp」を設定しています。

$ sudo vi /etc/chrony.conf

 

設定後にサービスの再起動し、同期がとれていることを確認します。

$ sudo systemctl restart chronyd
$ chronyc sources

同期状況の確認コマンド(`ntpq -p`, `chronyc tracking`など)

時刻の同期状態を確認するには、使用しているNTPソフトウェアに応じたコマンドを使用します。
例えばchronyc tracking」や「chronyc sources」が有効です。
これらの出力を読むことで、時刻同期が正しく行われているかを判断できます。

手動での時刻更新コマンド(`ntpdate`, `chronyd -q`など)

メンテナンス時や初期設定時、NTPサービスを使わず一時的に手動で時刻を合わせたい場合は、「chronyd -q」を用います。
これにより、現在の時刻とNTPサーバーの時刻差をすぐに修正できます。
ただし、常時の時刻維持には自動同期サービスを有効化するのが基本です。
手動での更新はメンテナンス時や初期設定時などに限定して活用しましょう。

CentOSVPSで利用するなら
ミライサーバー

\ 2週間無料でお試しできます! /
VPSを使ってみる

よくあるトラブルと対処法

同期できないときの原因(ネットワーク・設定ミスなど)

NTPの同期がうまくいかない原因は多岐にわたります。
代表的なケースは以下の通りです。

  • ネットワークの問題NTPサーバーに到達できない、DNS解決に失敗している
  • 設定ミス設定ファイル(/etc/chrony.conf)の記述誤り、指定したNTPサーバーが応答していない
  • ファイアウォールの制御UDP 123番ポートが閉じられている

まずは`ping`や`ntpq -p`、`chronyc sources`などの基本的なネットワーク確認を行い、通信状況をチェックしましょう。

ログの確認方法と対処(`journalctl`, `/var/log/`)

NTPのトラブル調査には、ログの確認が不可欠です。
systemdを採用している環境では、「journalctl -u ntp」や「journalctl -u chronyd」でリアルタイムのログが確認できます。
従来型では「/var/log/messages」や「/var/log/ntp.log」を確認することもあります。
ログには「サーバーに接続できない」「応答がない」などのヒントが記録されており、トラブルの原因特定に直結します。

時刻がズレるときの修正ポイントとコマンド

NTPを導入しても時刻が徐々にズレる場合、以下の要因が考えられます。

  • クライアントの設定ミス
  • サービスの自動起動設定漏れ
  • 仮想環境(VM)でホストのクロックに影響を受けている

まずは「ntpq -p」や「chronyc tracking」でオフセット(時刻差)の大きさを確認し、手動での補正が必要な場合は「ntpdate」や「chronyd -q」で一時的に修正します。
その後、継続的な同期のためにサービスの有効化も必ず行いましょう。

まとめ

Linux環境におけるNTPサーバーの構築と時刻同期の設定は、システムの安定性と信頼性を支える重要な要素です。
本記事では、NTPの基本から始まり、Chronyとの比較、インストール手順や設定ファイルの編集方法、クライアントとしての運用、そしてトラブルへシューティングまで、段階的に解説しました。
特に時刻のズレはログ解析やセキュリティ管理に大きな影響を与えるため、正しい知識に基づいた継続的な運用が求められます。
本記事を参考に、あなた自身のLinuxサーバーでも安定した時刻同期環境を構築し、運用トラブルやセキュリティリスクを最小限に抑えましょう。

CentOSをVPSで利用するならミライサーバー

ミライサーバーは、アシストアップ株式会社が提供している、Unix系サーバーに特化したホスティングサービスです。

ミライサーバーのVPSでは、高速処理が可能なSSD全プランに搭載しています。

OSは、UbuntuDebianAlmaLinuxなどの豊富なラインアップから選択することができます。

2週間無料トライアルを実施しておりますので、まずはお気軽にお試しください。

▼ミライサーバーについてはこちら▼Unix系OS専門のホスティングサービス「ミライサーバー」

プランの選択でお困りの場合は、ぜひ一度お問い合わせください。

お問い合わせはこちら

VPSなら「ミライサーバー」

・全プランSSD搭載
・2週間無料

▶ ミライサーバーを無料で試す

関連記事

特集記事

TOP