はじめに
正確な時間管理は、ほぼすべてのサービスやソフトウェアにとって重要です。 電子メール、ロガー、イベントシステムとスケジューラ、ユーザー認証メカニズム、分散プラットフォーム上で実行されているサービスはすべて、イベントを時系列に記録するために正確なタイムスタンプが必要です。 これらのサービスは、ネットワークタイムプロトコルまたはNTPを使用して、システムクロックを信頼できる外部ソースと同期させます。 この送信元は、原子時計、GPS受信機、またはすでにNTPを使用している別のタイムサーバーにすることができます。
これがNTP Pool Projectプロジェクトの出番です。 これは、世界中の数千万人のクライアントのための既知の”良い時間”への簡単なアクセスを提供するタイムサーバーの巨大な世界的なクラスターです。 これは、Ubuntuと他の主要なLinuxディストリビューションのほとんどだけでなく、多くのネットワークアプライアンスやソフトウェアアプこのガイドでは、NTPプールプロジェクトの他のユーザーに正確な時刻を提供するために、サーバー上でNTPをセットアップし、NTPプールプロジェクトの一部になるよ あなたの予備のCPUサイクルと未使用の帯域幅を提供することは、コミュニティに戻って何かを与えるのに最適な方法です。
必要な帯域幅は比較的低く、提供できる量とサーバーの場所に応じて調整できます。 各クライアントは20分ごとにいくつかのUDPパケットを送信するだけなので、ほとんどのサーバーは毎秒約十個のNTPパケットを受信し、毎秒最大百パケットの数回のスパイクがあります。 これは、50-120kb/秒のスパイクで10-15kb/秒の帯域幅使用量に変換されます。
NTPプールプロジェクトに参加する前に満たす必要がある基本的な要件は三つあります:
- サーバーには静的IPアドレスが必要です。
- サーバーは永続的で安定したインターネット接続を持っている必要があります。
- あなたのIPアドレスはほとんど変更されない、またはまれにしか変更されません(年に一度以下)。
ほとんどのクラウドベースのサーバーでは、通常、最初の2つの要件が自動的に満たされます。 第三の要件は、NTPプールプロジェクトに参加することが長期的なコミットメントを構成することを強調しています。 もちろん、状況が変化した場合は、サーバーをプールから取り出すのは問題ありませんが、トラフィックが完全に消失するまでには長い時間がかかります(主に数週間、時には数ヶ月、さらには数年)。
前提条件
このチュートリアルを完了するには、次のものが必要です:
- 一つのCentos7サーバー Ipv6ネットワークが構成されています。 既存のDropletでIpv6ネットワークを設定する必要がある場合は、このチュートリアルに従うことができます。
- sudo非rootユーザーとファイアウォールは、CentOS7での初期サーバーセットアップチュートリアルと、”新しいCentOS7サーバーの追加推奨手順”チュートリアルの”基本的なファイアウ
ステップ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の詳細については、CentOS7でFirewallDを使用してファイアウォールを設定する方法を参照してください。
NTPがインストールされましたが、デフォルトのNTPプールタイムサーバーを使用するように構成されています。 代わりにいくつかの特定のタイムサーバーを選ぶことができます。
ステップ2—適切な上流サーバーの選択
NTPプールプロジェクトは、プールに参加したいオペレータに、デフォルトのpool.ntp.org
サーバーを使用するのではなく、適切なネットワー これにより、NTPプールプロジェクトの信頼性が高く、高速で正常な状態が維持されます。 タイムソースを選択するときは、パケットの損失がなく、サーバー間でできるだけ少ないホップで安定したネットワーク接続が必要になります。
多層および階層NTPプロトコルは、関係する当事者をプライマリサーバー、セカンダリサーバー、およびクライアントに分離します。 プライマリサーバーはStratum1と呼ばれ、Stratum0と呼ばれる時間のソースに直接接続されます。 このソースは、原子時計、GPS受信機、または無線ナビゲーションシステムにすることができます。 チェーン内のセカンダリサーバーは、Stratum2、Stratum3などと呼ばれます。
各サーバーはクライアントでもあります。 Stratum2クライアントは、上流のStratum1サーバーから時間を受信し、下流のStratum3サーバーまたは他のクライアントに時間を提供します。 NTPプールプロジェクトメンバーが正常に動作するには、NTPデーモンが少なくとも三つのサーバーを構成する必要があります。 このプロジェクトでは、最低4つの情報源を推奨しており、7つ以下の情報源を推奨しています。
NTPプールプロジェクトは、パブリックStratum1とStartum2のタイムサーバーのリストを提供します。 このリストは、指定された制限の下で公開アクセス可能なNTPタイムサーバーを指定します。 あなたは三つのタイプを見つけることができます:
- OpenAccess:このタイムサーバーは、NTPプールの使用に関する推奨事項に準拠しているすべてのクライアントに対して開かれています。
- RestrictedAccess:このタイムサーバーには、NTPプールの使用に関する推奨事項に加えて、いくつかのアクセス制限があります。
- 閉店: この時間は、サーバーが閉じられているか、事前の配置が必要です。
警告:OpenAccessとしてリストされていないサーバーは、承認を受けていない限り使用しないでください。
ストラタム1タイムサーバリストにアクセスします。 次のようなリストが表示されます:
リストをISOコード列で並べ替え、サーバーのデータセンターに地理的に近いサーバーを1つまたは2つ検索します。 サーバーのアクセスポリシー列にOpenAccessと表示されている場合は、問題なく使用できます。 「RestrictedAccess」と表示されている場合は、をクリックしてエントリを開き、AccessDetailsフィールドに記載されている手順を読みます。 つまり、ServerContactで指定されたアドレスに向けられた非公式の電子メールを作成し、このタイムサーバーをNTPプールプロジェクトメンバーのタイムソースとして使用したい 使用するサーバーを特定したら、[ISO]列の各サーバーのリンクをクリックし、ホスト名またはIPアドレスをコピーします。 これらのアドレスは、手順3で使用します。
次に、同じプロセスに従って、Stratum2リストから三つまたは四つのサーバーを選択します。
タイムサーバーを選択したら、それらを使用するようにNTPクライアントを設定します。
ステップ3—プールに参加するためのNTPの設定
NTPプールでサーバーを使用し、新しいタイムサーバーを設定するには、NTPデーモンの設定を変更する必要があります。 これを行うには、/etc/ntp.conf
ファイルを編集します:
- sudo vi /etc/ntp.conf
まず、driftfileが設定されていることを確認します。 Driftfileは、公称周波数で動作するシステム-クロックと、正しい時間との同期を維持するために必要な周波数との間の周波数オフセットを格納します。 それは安定した、正確な時間の達成を助けます。 これは、デフォルトインストールの設定ファイルの先頭にあるはずです:
# 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
のすべての行を探しています。 既定の構成を使用している場合は、次の例に示すように強調表示された行を削除します:
...# 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 iburstserver 1.centos.pool.ntp.org iburstserver 2.centos.pool.ntp.org iburstserver 3.centos.pool.ntp.org iburst
削除した行を、前の手順で選択した手動で選択したサーバーに置き換えます。
...server ntp_server_hostname_1 iburstserver ntp_server_hostname_2 iburstserver ntp_server_hostname_3 iburstserver ntp_server_hostname_4 iburstserver ntp_server_hostname_5 iburst...
NTPプールの推奨事項に従って、各サーバーにiburst
オプションを使用します。 このようにして、サーバーが到達不能な場合、これは通常のパケットの代わりに八つのパケットのバーストを送信します。 NTPプールプロジェクトでburst
オプションを使用すると、ポーリング間隔ごとにこれらの八つのパケットが送信されますが、iburst
は八つのパケットを最初に送信
次に、既定の構成で管理クエリが許可されていないことを確認します。 そうしないと、サーバーがNTPリフレクション攻撃で使用されたり、サーバーの状態を変更しようとするntpq
およびntpdc
クエリに対して脆弱になる可能性があります。 デフォルトのrestrict
行にnoquery
オプションが追加されていることを確認します。 また、オプションkod
とlimited
を追加して、クライアントに熱心に尋ねることを制限し、レート制限を強制するようにしてください。
...# 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.1restrict ::1
その他のオプションの詳細については、公式ドキュメントを参照してください。
NTPデーモン設定ファイルは次のようになりますが、ファイルには追加のコメントがある場合があります。
driftfile /var/lib/ntp/ntp.driftrestrict default nomodify notrap nopeer noquery kod limitedrestrict 127.0.0.1restrict ::1server ntp_server_hostname_1 iburstserver ntp_server_hostname_2 iburstserver ntp_server_hostname_3 iburstserver ntp_server_hostname_4 iburstserver ntp_server_hostname_5 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列にはサーバーが使用しているソースが表示されます。 したがって、Stratum1サーバーの場合、refidフィールドにはGPS、PPS、ACTS、またはPTBが表示され、Stratum2以降のサーバーにはアップストリームサーバーのIPアドレスが表示されます。 St列には層が表示され、遅延、オフセット、ジッタは時間源の品質について説明します。 これらの3つのフィールドでは、値を小さくする方が適しています。
あなたのタイムサーバーは今、一般に時間を提供することができます。 これを確認するには、別のホストからntpdate
を呼び出します:
- ntpdate -q your_server_ip
出力はこれに似ているはずで、タイムサーバーとオフセットを調整したことがわかります:
Outputserver your_server_ip, stratum 2, offset 0.001172, delay 0.16428 2 Mar 23:06:44 ntpdate: adjust time server your_server_ip offset 0.001172 sec
これで、他の人が使用できるように、NTPサーバーをNTPプールプロジェクトに登録する準備が整いました。ステップ4-NTPプールにサーバーを追加する
他の人が使用できるようにサーバーを追加するには、次のurlを参照してくださいmanage.ntppool.org そして、アカウントにサインアップ。 NTP Poolからメールが届きます[email protected] アカウントの確認を要求します。 電子メールの指示に従ってアカウントを確認し、にログインしますmanage.ntppool.org.
ログインすると、サーバーを追加するためのシンプルなインターフェイスが表示されます:
サーバーのIPアドレスを入力し、送信をクリックします。
次の画面では、サーバーの領域を特定していることを確認するよう求められます。 サーバーが予想とは異なる地域に表示されている場合は、コメントボックスを使用してサーバーに知らせてください。
よろしければ、はい、これは私のサーバーです、追加してください!
サーバーはNTPプールプロジェクトの一部になりました。 NTPプールの監視システムがサーバーについて収集した情報を確認するには、http://www.pool.ntp.org/scores/your_server_ip
にアクセスしてください。 それはあなたのサーバーを時間ごとに数回チェックし、あなたのシステムのスコアでalog、オフセットデータを表示します。 限り、あなたのサーバーは良い時間を維持し、到達可能であるとして、それは20ポイントに達するまでスコアが上昇します。 スコアが10より高いサーバーのみがプールで使用されます。
接続の問題のトラブルシューティング
サーバーの同期に問題がある場合は、ポート123
に送信パケットをドロップするパケットファイアウォールが設置されている可能性があります。 CentOS7でFirewallDを使用してファイアウォールを設定する方法を見て、ファイアウォールの状態を確認する方法を学びます。
NTPプールプロジェクトの監視ステーションがNTPサーバーに到達できず、サーバースコアが低下している場合、またはサーバーを使用して他のクロックを同期できな ファイアウォールの状態を確認します。
ファイアウォールが設置されていないことが確実な場合、または着信トラフィックと発信トラフィックの両方に対してポート123
を開いている場合、サー あなた自身でこれらの問題を解決するための知識を持っていない場合は、コミュニティに目を向けると助けを得ることをお勧めします。 NTP Pool Projectsフォーラムは始めるのに適した場所です。 また、メーリングリストに参加したり、NTPプールプロジェクト運営者にemaillを送信したりすることもできます。 助けを求める前に、すでに問題を解決しようとしているすべての手順を表示できることを確認してください。
結論
このチュートリアルでは、独自のタイムサーバーを正常にセットアップし、それをNTPプールプロジェクトのメンバーにし、コミュニティに時間を提供しました。 時間を保つコミュニティと連絡を取り合うために。 NTP Pool Projectsフォーラムまたはメーリングリストに参加してください。 サーバーのスコアを監視し、必要な調整を行うようにしてください。