Ubuntuでntpdを使った時刻同期の完全ガイド|インストールから設定・トラブル対応まで解説

目次

1. はじめに:なぜ時刻同期が重要なのか

システム時刻のズレが引き起こす問題

UbuntuをはじめとするLinuxシステムでは、時刻が正確に保たれていることが極めて重要です。一見、時計の誤差程度と考えがちですが、サーバー運用やアプリケーションの実行環境において、時刻のズレは致命的なトラブルの原因となります。

例えば、以下のような問題が発生します:

  • ログの整合性が取れなくなる
    システムログやアプリケーションログに記録される時刻がズレていると、トラブル発生時の原因特定が困難になります。
  • cronジョブの誤動作
    スケジュールされた処理(バックアップやバッチ処理)が正しい時刻に実行されず、想定外のタイミングで動作する可能性があります。
  • SSL証明書やセキュリティ認証の失敗
    HTTPS通信やSSH認証などでは、正確な時刻情報が必要です。これがズレていると、証明書が「有効期限外」と判定され接続エラーとなることがあります。

これらは特に、複数台のサーバーをネットワーク上で同期させて運用する際に深刻な影響を及ぼします。

NTPの役割と重要性

このようなトラブルを未然に防ぐために利用されるのが、NTP(Network Time Protocol)です。NTPはインターネットまたはローカルネットワーク上の時刻サーバーと通信し、システムの時刻を自動的に補正してくれます。

Ubuntuでは、ntpd、chrony、systemd-timesyncdなど複数のNTP関連のツールが使用可能ですが、本記事ではntpd(Network Time Protocol daemon)に焦点を当て、Ubuntuでの導入方法と活用について詳しく解説していきます。

特に長期間稼働させるサーバーや、ログの整合性が求められるシステムでは、ntpdの安定性が強く支持されています。

次章では、まずntpdがどのようなツールであるか、その基本的な役割とUbuntuにおける選択肢について紹介します。

2. ntpdとは?Ubuntuにおける役割と選択肢

ntpdの概要と特徴

ntpd(Network Time Protocol Daemon)は、NTPを利用してシステムの時刻を正確に保つためのデーモンプログラムです。インターネット上またはローカルネットワーク内のNTPサーバーと定期的に通信し、システムクロックを自動的に補正します。

ntpdは、時間のズレを段階的に少しずつ補正する「スムーズな同期」を行うことが特徴です。急激な時刻の変更を避けることで、稼働中のシステムやアプリケーションに悪影響を与えないように設計されています。

また、ntpdは対称通信認証機能など、高度なNTP機能もサポートしており、エンタープライズ用途にも対応できる堅牢な時刻同期サービスです。

Ubuntuで利用可能な時刻同期ツール

Ubuntuでは、時刻同期の手段として以下のような選択肢があります:

  • ntpd(ntpパッケージ)
    長期運用や詳細な設定が必要な環境で広く使われています。柔軟性と安定性に優れ、公開NTPサーバーと連携して精度の高い時刻同期が可能です。
  • chrony
    ntpdの代替として注目されているツールで、精度が高く起動直後の同期速度に優れます。低スペックな環境や仮想マシンとの相性も良く、近年ではchronyをデフォルトに採用するディストリビューションも増えています。
  • systemd-timesyncd
    Ubuntu 20.04以降の標準で有効になっている軽量な時刻同期サービスです。簡易的で手軽ですが、機能は制限されており、高度な設定やローカルNTPサーバーとしての運用には向きません。

ntpdを選択する理由とその利点

Ubuntuにおいてntpdを採用する最大の理由は、その信頼性と安定性です。特に以下のようなケースではntpdが有力な選択肢となります:

  • 長期間稼働するサーバーで、時刻精度を重視する場合
  • ローカルネットワーク内でNTPサーバーを構築したい場合
  • 認証機能や高度な制御が必要なエンタープライズ用途

また、ntpdは多くの既存システムと互換性があり、運用実績も豊富なため、導入時の不安も少なくて済むというメリットがあります。

3. Ubuntuにおけるntpdのインストールと初期設定

ntpdのインストール手順

Ubuntuにおいてntpdを利用するには、まずntpパッケージをインストールする必要があります。以下の手順で簡単に導入が可能です。

sudo apt update
sudo apt install ntp

このコマンドでntpdとその関連ファイルが自動的にインストールされます。なお、Ubuntuのバージョンによっては、chronysystemd-timesyncdが既定で有効化されていることがあります。その場合、事前に無効化または削除することを推奨します。

sudo systemctl stop systemd-timesyncd
sudo systemctl disable systemd-timesyncd

サービスの有効化と起動確認

インストールが完了したら、ntpdサービスを有効にし、起動状態を確認しましょう。

sudo systemctl enable ntp
sudo systemctl start ntp
sudo systemctl status ntp

statusコマンドにより、「active (running)」と表示されていれば、ntpdが正常に起動していることを意味します。

初期設定ファイルの確認と編集

ntpdの設定は、/etc/ntp.confファイルに定義されています。インストール直後の設定では、複数のデフォルトNTPサーバー(通常はpool.ntp.org系列)が登録されています。

まずは、設定ファイルの内容を確認しましょう。

cat /etc/ntp.conf

日本国内のサーバーを指定したい場合は、以下のように編集します:

server ntp.nict.jp iburst

iburstオプションは、初回接続時の同期速度を向上させるためのもので、追加しておくことを推奨します。

設定を変更したら、ntpdサービスを再起動して反映させます。

sudo systemctl restart ntp

システム時刻の自動同期を確認

ntpdは起動後、自動的にサーバーと時刻同期を行いますが、正しく動作しているかを確認するには、以下のコマンドが便利です。

ntpq -p

このコマンドにより、接続中のNTPサーバー一覧や遅延、オフセットなどの詳細情報を確認できます。

4. NTPサーバーの設定とカスタマイズ

推奨されるNTPサーバーの選定

ntpdの設定において重要なのが、どのNTPサーバーと同期するかの選定です。インターネット経由で接続する場合、日本国内の信頼性の高いNTPサーバーを指定することで、より安定した時刻同期が可能となります。

代表的な国内NTPサーバーは以下の通りです:

  • ntp.nict.jp(情報通信研究機構)
  • ntp.jst.mfeed.ad.jp(JST・ミフィード)
  • ntp.ring.gr.jp(インターネットマルチフィード)

これらのサーバーは、高精度の原子時計を元に運営されており、個人利用であれば特別な申請なしに使用できます。

/etc/ntp.confに以下のように記述することで、これらのサーバーと同期するよう設定できます。

server ntp.nict.jp iburst
server ntp.jst.mfeed.ad.jp iburst
server ntp.ring.gr.jp iburst

ntp.confの詳細設定項目

/etc/ntp.confでは、NTPサーバーの指定以外にも、細かな挙動の制御が可能です。以下は代表的な設定項目です。

  • restrict ディレクティブ
    クライアントからの接続制限や許可を設定します。セキュリティ向上のためにも、不要な接続は制限しておくべきです。 例:ローカルネットワークからの接続を許可する
  restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
  • driftfile
    システムクロックのドリフト(微妙なずれ)を記録するファイルの指定です。通常はデフォルトのままで問題ありません。
  driftfile /var/lib/ntp/ntp.drift

 

ローカルネットワーク内でのNTPサーバー構築

Ubuntu上でntpdを利用して、社内ネットワーク内の他の端末に時刻を配信するNTPサーバーとして運用することも可能です。この構成は、インターネットに接続できない環境や、複数の端末の一貫した時刻管理が求められる環境で有効です。

設定手順の一例は以下の通りです。

  1. /etc/ntp.conf にローカルアクセスを許可する restrict ルールを追記 restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
  2. クライアントPC側では、このローカルNTPサーバーを参照するよう設定 server 192.168.0.10 iburst # NTPサーバーのローカルIP
  3. NTPサーバーのポート開放(ファイアウォールでUDP 123番を許可) sudo ufw allow 123/udp

通信がブロックされていると時刻同期ができず、ntpqコマンドでもサーバーとの接続状態が表示されなくなります。

5. ntpdの動作確認とトラブルシューティング

サービスのステータス確認方法

ntpdが正しく起動しているかを確認するには、次のコマンドを使用します。

sudo systemctl status ntp

active (running)と表示されていれば、ntpdは正常に動作しています。もしinactivefailedとなっている場合は、何らかの設定ミスや依存関係の不具合が原因で起動できていない可能性があります。

ログを詳しく確認するには、以下のコマンドが役立ちます。

journalctl -u ntp

これにより、ntpdサービスの起動履歴やエラー内容を時系列で確認できます。

同期状況の確認コマンド(ntpq -p)

ntpdがNTPサーバーと適切に同期しているかを確認するためには、ntpq -pコマンドが最もよく使われます。

ntpq -p

出力例:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*ntp.nict.jp     .NICT.           1 u   25   64  377    1.123   -0.345   0.024

各項目の意味は以下の通りです:

  • remote:接続しているNTPサーバー名
  • st:サーバーの階層(stratum)、1が最も正確な原子時計など
  • reach:接続成功の履歴(8ビット)
  • delay:ネットワーク遅延(ms)
  • offset:時刻のずれ(ms)
  • jitter:変動(揺らぎ)

先頭に * がついているサーバーは、現在の同期対象として選ばれていることを示しています。

よくあるエラーとその対処法

ntpdを導入する際に直面しやすいエラーと、それに対する具体的な対処方法を紹介します。

1. ntpq -p で表示されない / reach が 0

  • 原因:ファイアウォールやルーターでUDP 123番ポートがブロックされている可能性
  • 対策:サーバーとクライアントの両方で、ファイアウォール設定を確認し、NTPの通信が許可されていることを確認する。
sudo ufw allow 123/udp

2. System clock not synchronized と表示される

  • 原因:ntpdが起動していない、または他の同期サービス(systemd-timesyncdなど)と競合している可能性
  • 対策:不要な時刻同期サービスを無効化し、ntpdを再起動する。
sudo systemctl disable systemd-timesyncd
sudo systemctl restart ntp

3. NTPサーバー名の解決に失敗する

  • 原因:DNS設定の問題、あるいはネットワーク障害
  • 対策ping ntp.nict.jp などで名前解決が可能か確認し、必要に応じてDNSサーバー設定を修正する。

4. 時刻が大きくズレているが同期されない

  • 原因:ntpdは時刻が大幅にズレている場合、自動では調整しない(安全性のため)
  • 対策:手動で初期時刻を合わせてからntpdを再起動する。
sudo ntpd -gq  # 一度だけ即時同期を行う
sudo systemctl restart ntp

継続的な監視のために

運用環境では、定期的にntpq -pの出力結果をログとして記録するスクリプトを設定し、異常時に通知を行う仕組みを作っておくと安心です。ログが突然途切れたり、reach値が継続して0になるなどの兆候に気づくことで、障害の早期発見につながります。

6. ntpdと他の時刻同期ツールの比較

Ubuntuで利用される主要な時刻同期ツール

Ubuntu環境では、時刻同期のために複数のツールが利用可能です。それぞれに特長があり、用途やシステム要件に応じて選択が求められます。代表的な3つのツールは以下の通りです。

  • ntpd(ntpパッケージ)
  • chrony
  • systemd-timesyncd

それぞれの違いを理解することで、自身の環境に最適な同期方法を選ぶ手助けになります。

ntpdの特徴

  • 長所
  • 長年の実績と安定性があり、信頼性が非常に高い
  • 機能が豊富で細かな設定が可能(ローカルNTPサーバー構築、認証、対称モードなど)
  • 公開NTPサーバーとの互換性が高く、トラブル時の情報も豊富
  • 短所
  • 起動後の初回同期に時間がかかることがある
  • モダンなネットワーク環境(仮想化、可変ネットワーク)への適応力はやや低め

chronyの特徴

  • 長所
  • 高速な初回同期が可能で、ブート直後のずれも素早く補正
  • 仮想マシンや可変ネットワーク環境(ノートPC、VPN利用時)でも精度が高い
  • 自律的な学習機能(周囲の状況に応じて精度を上げる)により、ntpdより優れた精度を発揮するケースも多い
  • 短所
  • ローカルNTPサーバーとして運用する場合の設定はやや複雑
  • ドキュメントや事例がntpdに比べると少ない

systemd-timesyncdの特徴

  • 長所
  • Ubuntu 20.04以降でデフォルト有効、導入と管理が非常に簡単
  • 必要最小限の同期機能で、リソース消費も極小
  • systemdとの統合が進んでおり、Ubuntu標準の構成で利用しやすい
  • 短所
  • 機能は限定的で、手動による高度な設定やローカルNTPサーバーとしての運用は不可
  • 精度やログ機能も簡易的で、大規模システムには不向き

ツール比較表(一覧)

特徴ntpdchronysystemd-timesyncd
精度高い非常に高い普通
初回同期速度遅いことがある非常に速い普通
ローカルNTPサーバー運用○(やや複雑)×(不可)
設定の柔軟性高い中程度低い
仮想環境への適応
運用実績と情報量
推奨される用途サーバー、組織内統一仮想環境、ノートPC単体PC、初心者向け

使用シーン別のおすすめ

  • サーバー用途(特に常時稼働環境)
     → ntpdまたはchronyがおすすめ。安定性と精度が重要。
  • クラウド環境や仮想マシン、ノートPC
     → chronyが最も柔軟かつ高精度。
  • 単一PCで簡易的な時刻同期が目的
     → systemd-timesyncdで十分。

7. よくある質問(FAQ)

Q1. Ubuntu 22.04ではntpdは最初からインストールされていますか?

A1.
いいえ、Ubuntu 22.04ではntpdはデフォルトでインストールされていません。標準ではsystemd-timesyncdが有効になっており、時刻同期を簡易的に行っています。ntpdを使用するには、明示的にntpパッケージをインストールする必要があります。

sudo apt install ntp

また、インストール後はsystemd-timesyncdを無効化しておくと競合を避けられます。

Q2. ntpq -pがうまく表示されないのですが?

A2.
いくつかの原因が考えられます。

  • サービスが起動していないsudo systemctl status ntpで確認し、必要に応じて起動
  • NTPサーバーとの通信ができていない:ファイアウォールがUDPポート123をブロックしていないか確認
  • 設定ファイルの記述ミス/etc/ntp.confに誤記がないか確認

まずは下記のコマンドで基本動作をチェックしましょう。

ntpq -p

出力が空欄やreach0の場合、外部サーバーとの通信に失敗している可能性があります。

Q3. ntpdとchrony、どちらを選べばいいですか?

A3.
使用環境によって最適なツールは異なります。

  • 長期稼働する物理サーバーやローカルNTPサーバーの構築ntpdが安定性に優れるためおすすめ
  • 仮想環境やノートPC、可変ネットワーク環境(Wi-Fiなど)chronyの方が高精度・高速です
  • 簡易的な時刻合わせで十分な場合systemd-timesyncdで完結できます

Q4. ntpd -gqとは何をするコマンドですか?

A4.
ntpd -gqは、一度だけNTPサーバーと同期を行い、すぐに終了するコマンドです。

  • -g:大きくずれた時刻も許容して修正
  • -q:1回だけ同期して終了(デーモンとして常駐しない)

時刻が大幅にずれていて通常のntpdでは補正されないような場合に、このコマンドを使うことで一度だけ正しい時刻に合わせることができます。

Q5. NTPサーバーを複数指定する意味はありますか?

A5.
はい、複数のNTPサーバーを指定することで、冗長性や信頼性を確保できます。もし1つのサーバーに障害が発生しても、他のサーバーから時刻情報を取得できるため、安定した同期が可能になります。

設定例(/etc/ntp.conf):

server ntp.nict.jp iburst
server ntp.jst.mfeed.ad.jp iburst
server ntp.ring.gr.jp iburst

8. まとめ:安定した時刻同期でシステムの信頼性を向上

ntpdの魅力を再確認

Ubuntuシステムにおいて、正確な時刻同期は単なる利便性にとどまらず、セキュリティ・トラブルシューティング・ログ管理・自動処理の正確性といった、あらゆる運用面に直結する重要な要素です。

本記事では、NTP(Network Time Protocol)の基本から、ntpdを使った時刻同期の仕組み、導入方法、設定カスタマイズ、動作確認、さらには他ツールとの比較までを網羅的に解説してきました。

読者へのアドバイス

Ubuntuにおいて、どの時刻同期ツールを採用するかは、システムの目的・構成・可用性要件によって変わります。
しかしながら、「正確な時刻なくして安定した運用なし」という原則は、どの環境にも共通しています。

  • サーバー用途やログ管理を重視する場合ntpdまたはchronyをしっかり構成
  • 単体利用で簡単に済ませたい場合systemd-timesyncdで手軽に導入

時刻同期の正確さは、日々の運用では気づきにくいものの、トラブル発生時の「違いの分かる基準」として必ず役立ちます。

ぜひ本記事を参考に、ご自身のUbuntu環境に最適な時刻同期の仕組みを整えてください。

 

年収訴求