開発者ドキュメント

CentOS7のNTPプールプロジェクトで使用するためにNTPを構成する方法

序章

正確な時間管理は、ほとんどすべてのサービスまたはソフトウェアにとって重要です。 電子メール、ロガー、イベントシステムとスケジューラ、ユーザー認証メカニズム、および分散プラットフォームで実行されるサービスはすべて、イベントを時系列で記録するために正確なタイムスタンプを必要とします。 これらのサービスは、ネットワークタイムプロトコル(NTP)を使用して、システムクロックを信頼できる外部ソースと同期します。 このソースは、原子時計、GPS受信機、またはすでにNTPを使用している別のタイムサーバーである可能性があります。

ここで、NTPプールプロジェクトプロジェクトが活躍します。 これは、世界中の数千万のクライアントに既知の「良い時間」への簡単なアクセスを提供するタイムサーバーの巨大な世界的なクラスターです。 これは、Ubuntuや他のほとんどの主要なLinuxディストリビューション、および多くのネットワークアプライアンスやソフトウェアアプリケーションのデフォルトのタイムサーバーです。

このガイドでは、サーバーにNTPをセットアップし、NTPプールプロジェクトの一部として構成して、NTPプールプロジェクトの他のユーザーに正確な時間を提供します。 予備のCPUサイクルと未使用の帯域幅を提供することは、コミュニティに何かを還元するのに最適な方法です。

必要な帯域幅は比較的低く、提供できる量とサーバーの場所に応じて調整できます。 各クライアントは20分ごとに2、3のUDPパケットしか送信しないため、ほとんどのサーバーは1秒あたり約12のNTPパケットしか受信せず、1日に2、3回、最大100パケット/秒のスパイクが発生します。 これは、50〜120Kb/秒のスパイクで10〜15Kb/秒の帯域幅使用量に相当します。

NTPプールプロジェクトに参加する前に満たす必要のある3つの基本的な要件があります。

  1. サーバーには静的IPアドレスが必要です。
  2. サーバーには、永続的で安定したインターネット接続が必要です。
  3. IPアドレスはほとんど変更されないか、まれにしか変更されません(1年に1回以下)。

ほとんどのクラウドベースのサーバーでは、通常、最初の2つの要件が自動的に満たされます。 3番目の要件は、NTPプールプロジェクトへの参加が長期的な取り組みを構成することを強調しています。 もちろん、状況が変化した場合は、サーバーをプールから削除することは問題ありませんが、トラフィックが完全になくなるまでには長い時間がかかります(ほとんどの場合、数週間、場合によっては数か月、場合によっては数年)。

前提条件

このチュートリアルを完了するには、次のものが必要です。

ステップ1—NTPのインストール

NTPパッケージはデフォルトではインストールされないため、パッケージマネージャーを使用してインストールします。 まず、パッケージを更新します。

  1. sudo yum update

次に、NTPをインストールします。

  1. sudo yum install ntp

インストールが完了したら、サービスを開始して、サーバーが起動するたびに自動的に開始するように構成します。

  1. sudo systemctl start ntpd
  2. sudo systemctl enable ntpd

前提条件で指定されているようにファイアウォールを構成した場合、NTPプールと通信するには、NTPサービスのUDPトラフィックを許可する必要があります。

  1. sudo firewall-cmd --permanent --add-service=ntp
  2. sudo firewall-cmd --reload

FirewallDの詳細については、 CentOS7でFirewallDを使用してファイアウォールを設定する方法を参照してください。

これでNTPがインストールされましたが、デフォルトのNTPプールタイムサーバーを使用するように構成されています。 代わりに、特定のタイムサーバーを選択しましょう。

ステップ2—適切なアップストリームサーバーの選択

NTPプールプロジェクトは、プールに参加したいオペレーターに、デフォルトのpool.ntp.orgサーバーを使用するのではなく、適切なネットワークローカルタイムサーバーを選択するように依頼します。 これにより、NTPプールプロジェクトの信頼性、高速性、および健全性が維持されます。 タイムソースを選択するときは、パケット損失がなく、サーバー間のホップができるだけ少ない安定したネットワーク接続が必要です。

多層および階層型のNTPプロトコルは、関係者をプライマリサーバー、セカンダリサーバー、およびクライアントに分離します。 プライマリサーバーはStratum1 と呼ばれ、 Stratum0と呼ばれる時間のソースに直接接続されます。 このソースは、原子時計、GPS受信機、または無線ナビゲーションシステムです。 チェーン内のセカンダリサーバーは、 Stratum 2 Stratum3などと呼ばれます。

各サーバーはクライアントでもあります。 Stratum 2クライアントは、アップストリームのStratum 1サーバーから時間を受け取り、ダウンストリームのStratum3サーバーまたは他のクライアントに時間を提供します。 NTPプールプロジェクトのメンバーが正しく機能するには、NTPデーモンに少なくとも3台のサーバーを構成する必要があります。 プロジェクトでは、4つ以上、7つ以下のソースを推奨しています。

NTPプールプロジェクトは、パブリックStratum1およびStartum2タイムサーバーのリストを提供します。 リストは、指定された制限の下でパブリックアクセスに使用できるNTPタイムサーバーを指定します。 次の3つのタイプがあります。

警告:承認を受けていない限り、OpenAccessとしてリストされていないサーバーを使用しないでください。

Stratum1タイムサーバーリストにアクセスします。 次のようなリストが表示されます。

リストをISOコード列で並べ替えて、サーバーのデータセンターに地理的に近い1つまたは2つのサーバーを見つけます。 サーバーのアクセスポリシー列にOpenAccessと表示されている場合は、問題なく使用できます。 「RestrictedAccess」と表示されている場合は、クリックしてエントリを開き、AccessDetailsフィールドに記載されている手順をお読みください。 多くの場合、NotificationMessageYesに設定されていることがわかります。これは、ServerContactで提供されたアドレス宛ての非公式の電子メールを作成してこのタイムサーバーをNTPプールプロジェクトメンバーのタイムソースとして使用したいというサーバーオペレーター。

使用するサーバーを特定したら、 ISO 列の各サーバーのリンクをクリックして、そのホスト名またはIPアドレスをコピーします。 これらのアドレスは、手順3で使用します。

次に、同じプロセスに従って、 Stratum2リストから3台または4台のサーバーを選択します。

タイムサーバーを選択したら、それらを使用するようにNTPクライアントを構成します。

ステップ3—プールに参加するようにNTPを設定する

サーバーをNTPプールで使用し、新しいタイムサーバーを構成するには、NTPデーモンの構成にいくつかの変更を加える必要があります。 これを行うには、/etc/ntp.confファイルを編集します。

  1. sudo vi /etc/ntp.conf

まず、driftfileが構成されていることを確認します。 ドリフトファイルは、公称周波数で動作しているシステムクロックと、正しい時刻との同期を維持するために必要な周波数との間の周波数オフセットを格納します。 安定した正確な時間を達成するのに役立ちます。 これは、デフォルトのインストールの構成ファイルの先頭にあります。

/etc/ntp.conf
# For more information about this file, see the man pages
# ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).

driftfile /var/lib/ntp/drift

...

次に、デフォルトのタイムソースエントリを設定から削除します。 パターンserver 0.centos.pool.ntp.org iburstのすべての線を探しています。 デフォルト構成を使用している場合は、次の例に示すように、強調表示された行を削除します。

/etc/ntp.conf
...
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst

削除した行を、前の手順で選択した厳選されたサーバーに置き換えます。

/etc/ntp.conf
...
server ntp_server_hostname_1 iburst
server ntp_server_hostname_2 iburst
server ntp_server_hostname_3 iburst
server ntp_server_hostname_4 iburst
server ntp_server_hostname_5 iburst
...

NTPプールの推奨事項に従って、サーバーごとにiburstオプションを使用します。 そうすれば、サーバーに到達できない場合、通常の1パケットではなく8パケットのバーストが送信されます。 NTPプールプロジェクトでburstオプションを使用すると、ポーリング間隔ごとに8つのパケットが送信されるため、不正使用と見なされますが、iburstは初めて8つのパケットを送信します。

次に、デフォルト構成で管理クエリが許可されていないことを確認します。 そうしないと、サーバーがNTPリフレクション攻撃に使用されたり、サーバーの状態を変更しようとするntpqおよびntpdcクエリに対して脆弱になる可能性があります。 noqueryオプションがデフォルトのrestrict行に追加されていることを確認します。 また、オプションkodおよびlimitedを追加してください。これらは、クライアントへの熱心な要求を制限し、レート制限を適用します。

/etc/ntp.conf
...
# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.
restrict default nomodify notrap nopeer noquery kod limited

# Permit all access over the loopback interface.  This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
restrict 127.0.0.1
restrict ::1

その他のオプションの詳細については、公式ドキュメントを参照してください。

NTPデーモン構成ファイルは次のようになりますが、ファイルに追加のコメントが含まれている場合がありますが、これは無視しても問題ありません。

/etc/ntp.conf

driftfile /var/lib/ntp/ntp.drift

restrict default nomodify notrap nopeer noquery kod limited

restrict 127.0.0.1
restrict ::1

server ntp_server_hostname_1 iburst
server ntp_server_hostname_2 iburst
server ntp_server_hostname_3 iburst
server ntp_server_hostname_4 iburst
server ntp_server_hostname_5 iburst

ファイルを保存して、エディターを終了します。

次に、NTPサービスを再起動し、タイムサーバーにそのクロックをアップストリームサーバーに同期させます。

  1. sudo systemctl restart ntpd

数分後、ntpqコマンドを使用してタイムサーバーの状態を確認します。

  1. ntpq -p

出力は次のようになります。

Output
remote refid st t when poll reach delay offset jitter ============================================================================== mizbeaver.udel. .INIT. 16 u - 64 0 0.000 0.000 0.000 montpelier.ilan .GPS. 1 u 25 64 7 55.190 2.121 130.492 +nist1-lnk.binar .ACTS. 1 u 28 64 7 52.728 23.860 3.247 *ntp.okstate.edu .GPS. 1 u 31 64 7 19.708 -8.344 6.853 +ntp.colby.edu .GPS. 1 u 34 64 7 51.518 -5.914 6.669

remote 列は、NTPデーモンが使用しているサーバーのホスト名を示し、 refid 列は、サーバーが使用しているソースを示します。 したがって、Stratum 1サーバーの場合、 refid フィールドには、 GPS PPS ACTS 、またはPTBが表示されます。 Stratum 2以降のサーバーには、アップストリームサーバーのIPアドレスが表示されます。 st 列には階層が表示され、 delay offset jitterはタイムソースの品質を示します。 これらの3つのフィールドには、低い値の方が適しています。

これで、タイムサーバーは一般の人々に時間を提供できるようになりました。 これを確認するには、別のホストからntpdateを呼び出します。

  1. ntpdate -q your_server_ip

出力は次のようになり、タイムサーバーとオフセットを調整したことがわかります。

Output
server your_server_ip, stratum 2, offset 0.001172, delay 0.16428 2 Mar 23:06:44 ntpdate[18427]: adjust time server your_server_ip offset 0.001172 sec

これで、NTPサーバーをNTPプールプロジェクトに登録して、他のユーザーが使用できるようにする準備が整いました。

ステップ4—サーバーをNTPプールに追加する

他の人が使用できるようにサーバーを追加するには、 manage.ntppool.org にアクセスして、アカウントにサインアップしてください。 NTPプールhelp@ntppool.orgから、アカウントの確認を求めるメールが届きます。 メールの指示に従ってアカウントを確認し、manage.ntppool.orgにログインしてください。

ログインすると、サーバーを追加するためのシンプルなインターフェースが表示されます。

サーバーのIPアドレスを入力し、送信をクリックします。

次の画面では、サーバーのリージョンが識別されたことを確認するように求められます。 サーバーが予想とは異なるリージョンに表示されている場合は、コメントボックスを使用してサーバーに通知します。

よろしければ、をクリックしてエントリを確認してください。はい、これは私のサーバーです。追加してください!

これで、サーバーはNTPプールプロジェクトの一部になりました。 http://www.pool.ntp.org/scores/your_server_ipにアクセスして、NTPプールの監視システムがサーバーに関して収集した情報を確認してください。 サーバーを1時間に数回チェックし、オフセットデータを表示し、システムのスコアとログに記録します。 サーバーが十分な時間を維持し、到達可能である限り、スコアは20ポイントに達するまで上昇します。 プールでは、スコアが10を超えるサーバーのみが使用されます。

接続の問題のトラブルシューティング

サーバーの同期に問題がある場合は、送信パケットをポート123にドロップするパケットファイアウォールが設置されている可能性があります。 CentOS 7でFirewallDを使用してファイアウォールを設定する方法を参照して、ファイアウォールのステータスを確認する方法を確認してください。

NTPプールプロジェクトの監視ステーションがNTPサーバーに到達できず、サーバースコアが低下している場合、またはサーバーを使用して他のクロックを同期できない場合は、着信をドロップするパケットファイアウォールが設置されている可能性があります。 ポート123のトラフィック。 ファイアウォールのステータスを確認してください。

ファイアウォールが設置されていないことが確実な場合、または着信トラフィックと発信トラフィックの両方に対してポート123を開いている場合は、サーバープロバイダーまたは別のトランジットプロバイダーが途中でパケットをドロップしている可能性があります。 これらの問題を自分で解決するための知識がない場合は、コミュニティに相談して支援を求めるのが最善です。 NTPプールプロジェクトフォーラムから始めるのが良いでしょう。 メーリングリストに参加したり、電子メールをNTPプールプロジェクトオペレーターに送信したりすることもできます。 ヘルプを求める前に、問題を解決するためにすでに試みたすべてのステップを表示できることを確認してください。

結論

このチュートリアルでは、独自のタイムサーバーを正常にセットアップし、それをNTPプールプロジェクトのメンバーにして、コミュニティに時間を提供しました。 計時コミュニティと連絡を取り合うため。 NTPプールプロジェクトフォーラムまたはメーリングリストに参加してください。 サーバーのスコアを監視し、必要に応じて調整してください。

モバイルバージョンを終了