CentOS 7のNTPプールプロジェクトで使用するNTPを構成する方法

前書き

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

これは、http://www.pool.ntp.org [NTP Pool Project]プロジェクトの出番です。 世界中の数千万のクライアントに既知の「良い時間」に簡単にアクセスできる、タイムサーバーの巨大な世界的なクラスターです。 これは、Ubuntuおよびその他の主要なLinuxディストリビューションのほとんどのデフォルトのタイムサーバーであり、多くのネットワーク化されたアプライアンスおよびソフトウェアアプリケーションです。

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

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

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

  1. サーバーには静的IPアドレスが必要です。

  2. サーバーには、永続的で安定したインターネット接続が必要です。

  3. IPアドレスはほとんど変更されないか、まれにしか変更されません(1年に1回以下)。

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

前提条件

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

  • IPv6ネットワークが構成された1台のCentos 7サーバー。 既存のドロップレットでIPv6ネットワーキングを構成する必要がある場合は、https://www.digitalocean.com/community/tutorials/how-to-enable-ipv6-for-digitalocean-droplets [このチュートリアル]に従ってください。

  • CentOS 7での初期サーバーセットアップに従って設定できるsudo非ルートユーザーとファイアウォールチュートリアル]およびhttps://www.digitalocean.com/community/tutorials/additional-recommended-steps-for-new-centos-7-servers [新しいCentOS 7の追加の推奨手順]の「基本的なファイアウォールの設定」セクションサーバー]チュートリアル。

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

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

sudo yum update

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

sudo yum install ntp

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

sudo systemctl start ntpd
sudo systemctl enable ntpd

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

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

FirewallDの詳細については、https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-7#setting-rules-for-yourを参照してください。 -applications [CentOS 7でFirewallDを使用してファイアウォールを設定する方法]。

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

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

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

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

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

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

  • * OpenAccess *:このタイムサーバーは、NTPプールhttp://www.pool.ntp.org/join/configuration.html [使用に関する推奨事項]に準拠するすべてのクライアントに対して開かれています。

  • * RestrictedAccess *:このタイムサーバーには、NTPプールの使用に関する推奨事項に加えて、いくつかのアクセス制限があります。

  • * ClosedAccess *:この時間サーバーは閉じられているか、事前の手配が必要です。

Stratum 1 Time Serversリストにアクセスしてください。 次のようなリストが表示されます。

image:https://assets.digitalocean.com/articles/ntp_pool_1604/xKuLDZe.png [Stratum 1サーバー]

  • ISOコード*列でリストをソートし、サーバーのデータセンターに地理的に近い1つまたは2つのサーバーを見つけます。 サーバーの* Access Policy 列に OpenAccess と表示されている場合、問題なく使用できます。 「RestrictedAccess」と表示されている場合は、クリックしてエントリを開き、[ AccessDetails ]フィールドに記載されている指示を読みます。 多くの場合、 NotificationMessage Yes に設定されていることがわかります。つまり、 ServerContact *で指定されたアドレスに向けられた非公式の電子メールを作成し、このタイムサーバーをNTPプールプロジェクトメンバーのタイムソース。

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

次に、同じプロセスに従って、http://support.ntp.org/bin/view/Servers/StratumTwoTimeServers [Stratum 2]リストから3つまたは4つのサーバーを選択します。

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

ステップ3-プールに参加するためのNTPの構成

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

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).

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

/etc/ntp.conf

...
server  iburst
server  iburst
server  iburst
server  iburst
server  iburst
...

NTPプールの推奨に従って、各サーバーに `+ iburst `オプションを使用します。 これにより、サーバーに到達できない場合、通常の1パケットではなく8パケットのバーストが送信されます。 NTPプールプロジェクトで「 burst 」オプションを使用すると、ポーリング間隔ごとに8個のパケットが送信されるので、「 iburst +」は最初に8個のパケットのみを送信するため、悪用と見なされます。

次に、デフォルトの構成で管理クエリが許可されていないことを確認します。 そうしないと、サーバーがNTPリフレクション攻撃に使用されたり、サーバーの状態を変更しようとする「+ ntpq 」および「 ntpdc 」クエリに対して脆弱になる可能性があります。 デフォルトの ` restrict `行に ` noquery `オプションが追加されていることを確認してください。 また、オプション ` 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

# 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

他のオプションの詳細については、https://www.eecis.udel.edu/%7Emills/ntp/html/accopt.html#restrict [公式ドキュメント]を参照してください。

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

/etc/ntp.conf

driftfile /var/lib/ntp/ntp.drift

restrict default nomodify notrap nopeer

restrict 127.0.0.1
restrict ::1

server  iburst
server  iburst
server  iburst
server  iburst
server  iburst

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

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

sudo systemctl restart ntpd

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

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 +`を呼び出すことでこれを確認できます:

ntpdate -q

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

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

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

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

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

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

image:https://assets.digitalocean.com/articles/ntp_pool_1604/Dz9mF7r.png [サーバーを追加]

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

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

image:https://assets.digitalocean.com/articles/ntp_pool_1604/5KAEluI.png [確認画面]

よろしければ、[はい、これが私のサーバーです]をクリックしてエントリを確認します!*

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

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

サーバーの同期に問題がある場合は、パケットファイアウォールを使用して、*発信*パケットをポート `+ 123 +`にドロップしている可能性があります。 https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-7#setting-rules-for-your-applications [ CentOS 7でFirewallDを使用してファイアウォールをセットアップする方法]ファイアウォールのステータスを確認する方法を学習します。

NTP Pool ProjectのモニタリングステーションがNTPサーバーに到達できず、サーバースコアが低下している場合、またはサーバーを使用して他のクロックを同期できない場合は、ポートの_incoming_トラフィックをドロップするパケットファイアウォールがある可能性があります`+ 123 +`。 ファイアウォールの状態を確認してください。

ファイアウォールが設定されていないことが確かな場合、または着信トラフィックと発信トラフィックの両方に対してポート「123」を開いている場合、サーバープロバイダーまたは別のトランジットプロバイダーが途中でパケットをドロップしている可能性があります。 これらの問題を自分で解決するための知識がない場合は、コミュニティに相談して助けを求めるのが最善です。 NTP Pool Projects forumは、開始するのに適した場所です。 また、https://lists.ntp.org/listinfo/pool [メーリングリスト]またはmailto:[email protected] [メール送信]をNTP Pool Projectオペレーターに参加させることもできます。 ヘルプを求める前に、既に問題を解決しようとしたすべての手順を表示できることを確認してください。

結論

このチュートリアルでは、独自のタイムサーバーを正常にセットアップし、NTPプールプロジェクトのメンバーにして、コミュニティに時間を提供しました。 計時コミュニティと連絡を取り合うため。 NTP Pool Projects forumまたはhttps://lists.ntp.org/listinfo/pool [メーリングリスト]に参加してください。 サーバーのスコアを監視し、必要な調整を行ってください。

Related