時刻の同期

[更新日:2023年12月18日]

概要

さくらのクラウド上のサーバや、さくらのVPS・専用サーバなどの他サービス、または他社サービスやお客様組織内のプライベートなネットワーク内のホストなど、お客様管理下にあるすべてのホストは内部クロックを一律して標準的な時刻に正確に保つことが重要です。これは認証機構やログファイル、電子商取引におけるセッション管理など、セキュリティ機能を担保する上でも強く推奨されており、さくらのクラウドにて認証取得済みのクラウドサービスに関する情報セキュリティ管理策ガイドライン規格「ISO/IEC 27001」においても、管理する各システムの時計は単一の参照時刻源と同期させなければならないと定められています。

現在では、外部の正確な時刻情報源とホストの内部クロックをインターネットを経由して同期させる方法として「NTP」が一般的に使用されます。

このページでは、さくらインターネットが提供するNTPサーバや、お客様ホスト側でのNTPサーバの設定例などについて解説します。

さくらインターネット提供NTPサーバ

さくらインターネットではすべてのお客様に向けて以下のNTPサーバを無償で提供しています。

ntp1.sakura.ad.jp

弊社ネットワーク内かどうか、弊社サービスを利用中かどうかなどの条件を問わず、すべてのホスト・お客様がご利用できます。

サーバへのNTP設定手順

ここでは、サーバOSとして広く使用されているAlmaLinux/RockyLinuxを含むsystemd採用のCentOS系のOSを使用する場合を例に設定方法を解説します。

参考

パブリックアーカイブを使用してサーバを作成した場合、パブリックアーカイブによってはntp1.sakura.ad.jpをNTPサーバとして自動的に定期的な時刻同期が行われるようにあらかじめ設定済みとなっているものもあります。詳しくは パブリックアーカイブ のリリースノートを参照ください。

CentOS系では、NTPクライアント(NTPサーバと通信し、自身の内部クロックをNTPサーバから供給された時刻情報と同期させるプログラム)として「chrony」が標準的に使用されます。以降の解説でもchronyを使ったインストール・設定手順を解説します。

注釈

弊社管理の各物理ホストサーバもntp1.sakura.ad.jpより時刻同期しお客様仮想サーバへ時刻情報を供給していますが、長時間のOS起動時でも安定した精度を保つため、お客様仮想サーバ側でも時刻の同期を行うことを強く推奨します。

chronyのインストール

CentOS系では、標準的なインストールパッケージを選択した場合は自動的にchronyがインストールされます。インストールされていない(シェル上で $ type chronyd を入力してもコマンドが見つからないなど)場合はdnfコマンドでパッケージをインストールします。

$ sudo dnf install chrony

chronyの設定

chronyの設定ファイルは /etc/chrony.conf にあります。インストール直後のデフォルト状態のまま変更せずにchronyを起動してもNTPクライアントとして動作する設定となりますが、ネットワークの物理的距離や混雑による遅延を考慮し、できるだけホストに近いNTPサーバを指定することが推奨されます。

ここでは弊社提供のNTPサーバを参照するよう、一旦設定済みのserver指示子を全てコメントアウトし、その直後に以下の1行を追記します。

server ntp1.sakura.ad.jp iburst

設定変更を反映するため、起動中のchronyを再起動します。

$ sudo systemctl start chronyd

chronyの動作は $ chronyc sources コマンドにより確認できます。以下の例のように参照先NTPサーバとして、chrony.confに設定したサーバ名が表示されていることを確認します。

$ chronyc sources
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* ntp1.sakura.ad.jp             2   6    37     7  -1018ns[-1501us] +/- 1539us

問題が無ければサーバ再起動後も自動的にchronyが起動するように設定します。

$ sudo systemctl enable chronyd