正確なタイミングは、ほとんどすべてのサービスまたはソフトウェアにとって不可欠です。電子メール、レコーダー、イベントシステムとスケジューラー、ユーザー認証メカニズム、および分散プラットフォームで実行されるサービスはすべて、イベントを時系列で記録するために正確なタイムスタンプを必要とします。これらのサービスは、ネットワークタイムプロトコル(NTP)を使用して、システムクロックを信頼できる外部ソースと同期します。ソースは、アトミッククロック、GPSレシーバー、またはすでにNTPを使用しているその他のタイムサーバーにすることができます。
ここで[NTPプールプロジェクト](http://www.pool.ntp.org/)プロジェクトが活躍します。これは巨大なグローバルタイムサーバークラスターであり、世界中の数千万の顧客に便利な「良い時間」を提供します。これは、Ubuntuや他のほとんどの主要なLinuxディストリビューション、および多くのネットワークデバイスやソフトウェアアプリケーションのデフォルトのタイムサーバーです。
このチュートリアルでは、サーバーにNTPをセットアップし、NTPプールプロジェクトの他のユーザーに正確な時間を提供するために、NTPプールプロジェクトの一部として構成します。予備のCPUサイクルと未使用の帯域幅を提供することは、コミュニティにフィードバックを提供するのに最適な方法です。
必要な帯域幅は比較的低く、指定した数とサーバーの場所に応じて調整できます。各クライアントは20分ごとに数個のUDPパケットしか送信しないため、ほとんどのサーバーは1秒あたり約12個のNTPパケットしか受信せず、1日1回1秒あたり最大数百個のパケットを送信します。これは、帯域幅の使用量が10〜15Kb /秒であり、ピーク値が50〜120Kb /秒であることを意味します。
NTPプールプロジェクトに参加する前に、次の3つの基本要件を満たす必要があります。
ほとんどのクラウドベースのサーバーでは、通常、最初の2つの要件が自動的に満たされます。 3番目の要件は、NTPプールプロジェクトへの参加が長期的な取り組みであることを強調しています。もちろん、状況が変わった場合は、サーバーをプールから削除できますが、トラフィックが完全に消えるまでには長い時間がかかります(ほとんどの場合、数週間、場合によっては数か月、場合によっては数年)。
準備完了
このチュートリアルを完了するには、次のものが必要です。
Ubuntuサーバーを使用している場合は、Tencent Cloud + Communityの[公共の福祉を支援し、独自のNTPサーバープールを構築する](https://cloud.tencent.com/developer/article/1175079?from=10680)構成チュートリアルを参照できます。
NTPパッケージはデフォルトではインストールされないため、パッケージマネージャーを使用してインストールします。まず、パッケージを更新します。
$ sudo yum update
次に、NTPをインストールします。
$ sudo yum install ntp
インストールが完了したら、サービスを開始し、サーバーが起動するたびに自動的に起動するように構成します。
$ sudo systemctl start ntpd
$ sudo systemctl enable ntpd
準備で指定されたようにファイアウォールを構成した場合は、NTPサービスのUDP通信がNTPプールと通信できるようにする必要があります。
$ sudo firewall-cmd --permanent --add-service=ntp
$ sudo firewall-cmd --reload
これでNTPがインストールされましたが、デフォルトのNTPプールタイムサーバーを使用するように構成されています。特定のタイムサーバーを選択しましょう。
NTPプールプロジェクトでは、プールに参加したいオペレーターは、デフォルトの pool.ntp.org
サーバーを使用する代わりに、適切なネットワークローカルタイムサーバーを選択する必要があります。これにより、NTPプールプロジェクトの信頼性、高速性、健全性が維持されます。タイムソースを選択するときは、安定したネットワーク接続、パケット損失がなく、サーバー間のホップができるだけ少ないことが必要です。
多層で階層的なNTPプロトコルは、関係者をプライマリサーバー、セカンダリサーバー、およびクライアントに分割します。メインサーバーは* Stratum1 と呼ばれ、 Stratum 0 と呼ばれるタイムソースに直接接続されています。ソースは、原子時計、GPS受信機、または無線ナビゲーションシステムです。チェーン内のセカンダリサーバーは、 Stratum2 、 Stratum 3 *などと呼ばれます。
各サーバーはクライアントでもあります。 Stratum 2クライアントは、アップストリームStratum1サーバーから時間を受信し、ダウンストリームStratum3サーバーまたは他のクライアントに時間を提供します。 NTPプールプロジェクトメンバーが正しく機能するには、NTPデーモンが少なくとも3つのサーバーを構成する必要があります。プロジェクトでは、4つ以上7つ以下のソースを推奨しています。
NTPプールプロジェクトは、パブリックStratum1およびStartum2タイムサーバーのリストを提供します。これらのリストは、指定された制限の下でパブリックアクセスに使用できるNTPタイムサーバーを指定します。次の3つのタイプがあります。
警告:承認されていない限り、** OpenAccess **としてリストされていないサーバーを使用しないでください。
Stratum 1 TimeServers
リストにアクセスします。次のリストが表示されます。
![]( /img/a50ad22423295316cf6927df3b7fdbee/3lwfoot4yf.png)リスト
リストを** ISOコード列で並べ替えて、サーバーデータセンターに地理的に近い1つまたは2つのサーバーを見つけます。サーバーのアクセスポリシー列に OpenAccess と表示されている場合は、問題なく使用できます。 「RestrictedAccess」が表示されている場合は、クリックしてエントリを開き、 AccessDetails フィールドに示されている手順をお読みください。通常、 NotificationMessage は Yes に設定されています。つまり、 ServerContact **で指定されたアドレスを指す非公式の電子メールを作成して、今回必要であることをサーバーオペレーターに通知する必要があります。サーバーは、NTPプールプロジェクトのメンバーのタイムソースとして使用されます。
使用するサーバーを決定したら、** ISO **列の各サーバーのリンクをクリックして、そのホスト名またはIPアドレスをコピーします。手順3でこれらのアドレスを使用します。
次に、同じプロセスに従って、[Stratum2](http://support.ntp.org/bin/view/Servers/StratumTwoTimeServers)リストから3つまたは4つのサーバーを選択します。
タイムサーバーを選択した後、それらを使用するようにNTPクライアントを構成できます。
NTPプールでサーバーを使用し、新しいタイムサーバーを構成するには、NTPデーモンの構成にいくつかの変更を加える必要があります。これを行うには、 / etc / ntp.conf
ファイルを編集します。
$ sudo vi /etc/ntp.conf
まず、周波数ファイルが構成されていることを確認します。周波数[ファイルストレージ](https://cloud.tencent.com/product/cfs?from=10680)公称周波数で動作しているシステムクロックと、正しい時間との同期を維持するために必要な周波数との間の周波数オフセット。安定した正確な時間を達成するのに役立ちます。デフォルトでインストールされている構成ファイルの先頭にあります。
/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.orgiburst
という行を探しています。デフォルト構成を使用している場合は、次の例に示すように、強調表示された行を削除します。
/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
オプションを使用することをお勧めします。このように、サーバーにアクセスできない場合、通常のパケットではなく8つのパケットが送信されます。 NTPプールプロジェクトでバーストオプションを使用すると、各ポーリング間隔でこれらの8パケットが送信され、iburstは最初に8パケットしか送信しないため、不正使用と見なされます。
次に、デフォルト構成で管理クエリが許可されていないことを確認します。これを行わないと、サーバーが攻撃をNTPに反映したり、ntpqおよびntpdcクエリがサーバーのステータスを変更しようとしたりする可能性があります。 noquery
オプションがデフォルトの restric
t行に追加されているかどうかを確認します。また、オプション「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サービスを再起動し、タイムサーバーがそのクロックをアップストリームサーバーに同期するようにします。
$ sudo systemctl restart ntpd
数分後、次の ntpq
コマンドを使用して、タイムサーバーの状態を確認します。
出力は次のようになります。
remote refid st t when poll reach delay offset jitter
==============================================================================
mizbeaver.udel..INIT.16 u -6400.0000.0000.000
montpelier.ilan .GPS.1 u 2564755.1902.121130.492+nist1-lnk.binar .ACTS.1 u 2864752.72823.8603.247*ntp.okstate.edu .GPS.1 u 3164719.708-8.3446.853+ntp.colby.edu .GPS.1 u 3464751.518-5.9146.669
** remote 列は、NTPデーモンが使用しているサーバーのホスト名を示し、 refid 列は、サーバーが使用しているソースコードを示します。したがって、 Stratum 1 サーバーの場合、 refid フィールドには GPS 、 PPS 、 ACTS 、または PTB が表示され、 Stratum 2 は表示されます。また、他の補助サーバーには、アップストリームサーバーのIPアドレスが表示されます。レベルは ST 列に表示され、 delay、offset 、 jitter **はタイムソースの品質を示します。これらの3つのフィールドの値が低いほど良いです。
これで、タイムサーバーがパブリックサービスに利用できるようになりました。これは、別のホストからの ntpdate
呼び出しを入力することで確認できます。
$ ntpdate -q your_server_ip
出力は次のようになります。タイムサーバーとオフセットを調整したことがわかります。
server your_server_ip, stratum 2, offset 0.001172, delay 0.164282 Mar 23:06:44 ntpdate[18427]: adjust time server your_server_ip offset 0.001172 sec
これで、NTPプールプロジェクトを使用してNTPサーバーを登録し、他のユーザーが使用できるようにすることができます。
他の人が使用できるようにサーバーを追加するには、[manage.ntppool.org](https://manage.ntppool.org/manage)にアクセスしてアカウントを登録します。 ** NTP Pool ** help @ ntppool.orgから、アカウントの確認を求めるメールが届きます。メールの指示に従ってアカウントを確認し、[manage.ntppool.org](https://manage.ntppool.org/manage)にログインします。ログインすると、サーバーを追加するためのインターフェイスが表示されます。
ログインすると、サーバーを追加するための簡単なインターフェイスが表示されます。
![]( /img/a50ad22423295316cf6927df3b7fdbee/mupzt6ppza.png)サーバーインターフェイスを追加します
サーバーのIPアドレスを入力し、[**送信] **をクリックします。
次の画面では、サーバーのゾーンが識別されていることを確認するように求められます。予想とは異なる場所にサーバーが表示されている場合は、[**コメント] **ボックスを使用してサーバーに知らせます。
![]( /img/a50ad22423295316cf6927df3b7fdbee/gztks28yzr.png)確認インターフェース
満足している場合は、をクリックしてください。これは私のサーバーです。追加してください!。これで、サーバーはNTPプールプロジェクトの一部になりました。 NTPプールの監視システムによって収集されたサーバーに関する情報を表示するには、 http:// www.pool.ntp.org / scores / your_server_ip
にアクセスしてください。サーバーを1時間に数回チェックし、システムのスコアに対応するオフセットデータを表示します。サーバーが適切な時間維持され、アクセス可能である限り、スコアは20ポイントに達するまで上昇します。プールでは、スコアが10を超えるサーバーのみが使用されます。
サーバーの同期に問題がある場合は、ポート123で送信パケットをドロップする可能性のあるパケットファイアウォールが存在する可能性があります。
NTPプールプロジェクトの監視ステーションがNTPサーバーにアクセスできず、サーバースコアが低下した場合、またはサーバーを使用して他のクロックを同期できない場合は、着信トラフィックをポートにドロップできるパケットファイアウォールが存在する可能性があります。上123。ファイアウォールのステータスを確認してください。
ファイアウォールがないことが確実な場合、または着信トラフィックと発信トラフィック用にポート123を開いている場合は、サーバープロバイダーまたは他のトランスポートプロバイダーがプロセス中にデータパケットをドロップする可能性があります。
このチュートリアルでは、独自のタイムサーバーを正常にセットアップし、それをNTPプールプロジェクトのメンバーにしました。
参照:「CentOS7のNTPプールプロジェクトで使用するためにNTPを構成する方法」
Recommended Posts