CentOSのNTPプールプロジェクトに参加するようにNTPを構成する方法

前書き ##

正確なタイミングは、ほとんどすべてのサービスまたはソフトウェアにとって不可欠です。電子メール、レコーダー、イベントシステムとスケジューラー、ユーザー認証メカニズム、および分散プラットフォームで実行されるサービスはすべて、イベントを時系列で記録するために正確なタイムスタンプを必要とします。これらのサービスは、ネットワークタイムプロトコル(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つの基本要件を満たす必要があります。

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

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

準備完了

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

Ubuntuサーバーを使用している場合は、Tencent Cloud + Communityの[公共の福祉を支援し、独自のNTPサーバープールを構築する](https://cloud.tencent.com/developer/article/1175079?from=10680)構成チュートリアルを参照できます。

**ステップ1-NTP **をインストールする##

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プールタイムサーバーを使用するように構成されています。特定のタイムサーバーを選択しましょう。

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

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クライアントを構成できます。

手順3-プールに参加するように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オプションがデフォルトの 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サービスを再起動し、タイムサーバーがそのクロックをアップストリームサーバーに同期するようにします。

$ 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サーバーを登録し、他のユーザーが使用できるようにすることができます。

ステップ4-サーバーを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

CentOSのNTPプールプロジェクトに参加するようにNTPを構成する方法
CentOSにPHP7.4をインストールする方法
Centos7.2にHDP2.6をインストールする方法
CentOS8でタイムゾーンを設定または変更する方法
centos7にAndroidSDKをインストールする方法
CentOS8でホスト名を変更する方法
CentOSサーバー時間を北京時間に変更する方法
pythonでround関数を使用する方法
CentOS7にElasticsearchをインストールして構成する方法
UbuntuでTensorFlow使用環境を構成する方法
Pythonでzip関数を使用する方法
Dockerでsshをサポートするようにcentosコンテナを構成します
pythonでformat関数を使用する方法
win10でubuntuシステムを開く方法
CentOS8にRedisをインストールして構成する方法
ダウンロードしたモジュールをpythonでインストールする方法
Ubuntuシステムログで/ var / log / messagesを構成する方法
CentOS6にphpMyAdminをインストールして構成する方法
centos8カスタムディレクトリにphp7.3をインストールする方法
CentOS8にOwncloudをインストールして構成する方法
CentOSサーバー時間を北京時間に変更する方法
CentOS8にRedmineをインストールして構成する方法
CentOS8でVsftpdを使用してFTPサーバーを構成する方法
Pythonでのパッケージの導入を理解する方法
CentOS8にNFSサーバーをインストールして構成する方法
VMwareでCentOS仮想マシンを作成する方法
CentOS8でVsftpdを使用してFTPサーバーを構成する方法
sshを介してwin10でubuntuシステムを制御する方法
pythonで円の領域を見つける方法
CentOS8でTL-WDN7200HワイヤレスUSBネットワークカードをサポートするにはどうすればよいですか?
gccをcentosで6.4.0に更新します
centos7でk8sクラスターをインストールおよび構成するための詳細な手順
圧縮パッケージを使用してLinux環境にJDK13をインストールする方法
CentOS8でNginxサーバー構成ブロックを設定する方法
UbuntuにHelmをインストールする方法
centOS7にjdk1.8をインストールする方法
CentOS8にMySQLをインストールする方法
CentOS7をCentOS8にアップグレードする方法(詳細な手順)
pythonスレッドプールの使用方法
CentOS8にMemcachedをインストールする方法
CentOS8にRをインストールする方法
CentOS8にVirtualboxをインストールする方法
CentOS 6/7は、メールを送信するようにsendEmailを構成します
CentOS8にTensorFlowをインストールする方法
CentOS8にTeamViewerをインストールする方法
CentOSにPerl5をインストールする方法
pythonコードでラップする方法
CentOS8にGitをインストールする方法
CentOS8にGradleをインストールする方法
CentOS8にElasticsearchをインストールする方法
CentOS8にJavaをインストールする方法
CentOS8にGoをインストールする方法
CentOS8にGCCをインストールする方法
Ubuntu14.04にmysqlをインストールする方法
CentOS8にYarnをインストールする方法
CentOS8にNginxをインストールする方法
CentOS7にAsteriskをインストールする方法
CentOS8にJenkinsをインストールする方法
Pythonで括弧を省略する方法
CentOS8にVagrantをインストールする方法
CentOS8にPython3.8をインストールする方法