Amazon EC2 Linux サーバーの NTP 同期の問題をトラブルシューティングする方法を教えてください。
Amazon Elastic Compute Cloud (Amazon EC2) の Linux インスタンスで、日付や時刻が不正確、またはネットワークタイムプロトコル (NTP) 参照サーバーと同期していません問題をトラブルシューティングしたいです。
解決策
NTP 同期の問題をトラブルシューティングするには、まず Linux サーバーが使用する NTP サーバーを確認します。次に、NTP 同期を設定し、NTP サーバーへの接続を確認します。
インスタンスが NTP サーバーと同期されていることを確認するには、次のコマンドを実行して時刻を確認します。
timedatectl
NTP サーバーの確認
Amazon Linux サーバーでは、chrony または NTP デーモン (ntpd) を使用して NTP サーバーと同期します。NTP サーバー設定の詳細については、Red Hat Linux Enterprise (RHEL) ウェブサイトの「chrony スイートを使用した NTP の設定」または「ntpd を使用した NTP の設定」を参照してください。
**注:**chrony は ntpd よりも高速かつ正確にシステムクロックを同期するため、時刻同期には chrony を使用するのがベストプラクティスです。詳細については、RHEL ウェブサイトの chrony と ntpd の違いを参照してください。
インスタンスが chrony または ntpd デーモンを使用するように設定されているかどうかを確認するには、次のコマンドを実行します。
chrony:
sudo systemctl status chronyd chronyc tracking
ntpd:
sudo systemctl status ntpd ntpstat
Amazon Linux 2 または Amazon Linux 2023 インスタンスで ntpd を削除し、chrony をインストールするには、以下のコマンドを実行します。
sudo yum erase ntp* sudo yum install chrony
chrony を起動して有効化するには、以下のコマンドを実行します。
sudo systemctl start chronyd sudo systemctl enable chronyd
NTP ソースの設定
設定ファイルで、設定されている NTP サーバのリストを確認します。構成ファイルのデフォルトの場所は、chrony の場合は ** /etc/chrony.conf**、ntpd の場合は /etc/ntp.conf です。
Amazon Linux 2
chrony を構成する際、メインの /etc/chrony.conf ファイルではなく、/etc/chrony.d/ ディレクトリからソースを使用するように設定します。
Amazon Linux 2023
chrony を構成する際、メインの /etc/chrony.conf ファイルではなく、/run/chrony.d または /etc/chrony.d/ ディレクトリからソースを使用するように設定します。
/etc/chrony.conf 構成ファイルで、ソースディレクトリの場所を確認します (sourcedir)。または、/etc/chrony.d/ ディレクトリ内の README ファイルを確認してください。
必要に応じて、/etc/chrony.d/your-source-file.sources などのソースディレクトリ内に、独自の chrony ソースファイルを作成します。
ソースがどこに設定されているかを確認します。その後、正しいサーバーまたはプールが使用されていることを確認してください。
NTP の同期は、ローカル Amazon Time Sync Service または パブリック Amazon Time Sync Service に対して構成できます。インスタンスではローカルの Amazon Time Sync サービスを使用するのがベストプラクティスです。パブリック Amazon Time Sync Service は、バックアップとして、または Amazon Virtual Private Cloud (Amazon VPC) 外にあるデバイス向けに使用します。また、組織内の内部 NTP サーバーへの NTP 同期を構成することも可能です。
chrony を構成し、ソースファイルを作成した後、サービスを再起動します。その後、Amazon Linux 2 または Amazon Linux 2023 で以下のコマンドを実行し、インスタンスが正常に動作していることを確認します。
chrony:
sudo systemctl restart chronyd.service sudo systemctl status chronyd.service
ntpd:
sudo systemctl restart ntpd.service sudo systemctl status ntpd.service
ローカルの Amazon タイム同期サービスへの NTP 同期の設定
VPC 内でリンクローカル IPv4 アドレス 169.254.169.123 を使用して、Amazon Time Sync Service にアクセスします。
Amazon Time Sync Service のリンクローカル IP アドレスを NTP ソースとして追加するには、NTP ソースが指定されている構成ファイルを開きます。たとえば、chrony の場合は /etc/chrony.conf ファイルを開いてください。次に、次の行を追加します。
server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4
AWS Nitro System 上で構築されたインスタンスにアクセス可能な IPv6 ローカルアドレスを使用する場合、構成ファイルに次の行を追加してください。
server fd00:ec2::123 prefer iburst minpoll 4 maxpoll 4
変更を反映させるには、以下のコマンドを実行して chrony を再起動します。
sudo systemctl restart chronyd.service
ntpd を再起動するには、次のコマンドを実行します。
sudo systemctl restart ntpd.service
**注:**IPv4 と IPv6 のエンドポイントエントリを別々に使用するのがベストプラクティスです。インスタンスに対して送信される IPv4 および IPv6 の NTP パケットは同じローカルサーバーから送信されます。IPv4 と IPv6 の両方のエンドポイントを設定しても、インスタンスの時刻の精度は向上しません。
パブリック Amazon Time Sync Service への NTP 同期の構成
Linux インスタンスまたはインターネットに接続された外部デバイスは、パブリックエンドポイント time.aws.com を使用して Amazon Time Sync Service にアクセスできます。
Amazon Time Sync Service のパブリックエンドポイントを NTP ソースとして追加するには、ntpd または chrony のソースが定義されている構成ファイルを開いてください。次のコマンドを実行します。
pool time.aws.com iburst
変更を反映させるには、以下のコマンドを実行して chrony を再起動します。
sudo systemctl restart chronyd.service
ntpd を再起動するには、次のコマンドを実行します。
sudo systemctl restart ntpd.service
組織内の独自の NTP サーバーへの NTP 同期の設定
組織内の内部 NTP サーバーを使用することができます。また、パブリックインターネット経由でアクセス可能な NTP サーバーを使用することも可能です。
**注:**信頼できる NTP サーバーのみを使用するのがベストプラクティスです。
独自の NTP ソースを追加するには、ntpd または chrony のソースが定義されている構成ファイルを開いてください。次に、次の行を追加します。
server internal-ntp-server-hostname-or-ip-address
**注:**internal-ntp-server-hostname-or-ip-address を NTP サーバのホスト名または IP アドレスの名前に置き換えてください。
Linux インスタンスがネットワーク経由で新しい NTP サーバーの IP アドレスおよびポートに到達できることを確認します。
デフォルトでは、Chrony はリンクローカルおよびリモートエンドポイントを介して Amazon Time Sync の時刻をソースとして使用します。
Amazon Linux 2023
Amazon Linux 2023 のデフォルト設定をオーバーライドするには、次のステップを実行します。
-
/etc/sysconfig/chronyd ファイルを USE_AMAZON_NTP_POOL="no" を含むように変更します。
-
次のコマンドを実行して chrony を再起動します。
sudo systemctl restart chrony.servicentpd を再起動するには、次のコマンドを実行します。
sudo systemctl restart ntpd.service
Amazon Linux 2
Amazon Linux 2 のデフォルト設定を上書きするには、次の手順を実行します。
-
/etc/chrony.d/link-local.sources ファイルを変更します。Amazon Time Sync Service のエントリをコメントアウトするには、行の先頭に # を追加します。
#server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4 -
次のコマンドを実行して chrony を再起動します。
sudo systemctl restart chronyd.servicentpd を再起動するには、次のコマンドを実行します。
sudo systemctl restart ntpd.service
**注:****/etc/chrony.d/README ** ファイルには、デフォルト設定を上書きする他の方法に関する情報が記載されています。
インスタンスが正しい時刻に同期されていることを確認する
インスタンスが正しい時刻に同期されていることを確認するには、次のコマンドを実行します。
chrony:
chronyc tracking timedatectl
ntpd:
ntpstat timedatectl
設定されているすべてのソースを一覧表示するには、次のコマンドを実行します。
chrony:
chronyc sources -v
ntpd:
ntpq -p
その他のトラブルシューティング手順
NTP 同期の問題が引き続き発生する場合は、次のアクションを実行してください。
- ntpd または chrony のログファイルを確認し、問題の原因を特定できるエラーメッセージや警告がないか確認します。
- システムの時刻が NTP サーバの時刻と異なる場合は、システム時刻を NTP サーバの時刻と一致するように手動で設定します。timedatectl などのツールを使用できます。
- Linux サーバーが NTP サーバーのホスト名を正しく解決できることを確認します。
- オペレーティングシステム (OS) ファイアウォール、セキュリティグループ、ネットワークアクセスコントロールリスト (ネットワーク ACL)、またはルートテーブルが外部 NTP サーバーをブロックしていないことを確認します。インスタンスには、UDP ポート 123 へのアウトバウンドトラフィックが必要です。ステートレスファイアウォールとネットワーク ACL の場合は、エフェメラルポート 1024 ~ 65535 を経由するリターントラフィックを許可します。
- VPC でカスタム DHCP オプションセット を使用している場合は、NTP サーバーのアドレスが正しく設定されていることを確認します。
