GNU/Linux >> Linux の 問題 >  >> Linux

NTPサーバーとベストプラクティス

NTPは「NetworkTimeProtocol」の略です。これは、インターネットに接続されたデバイスがシステムの時刻を時刻参照に同期するために使用するプロトコルです。正確な時刻を維持することが重要である理由については、さまざまな重要なポイントがあり、NTPの動作原理は基本的でありながら驚くべきものです。

最近、UbuntuベースのディストリビューションでのNTPサーバーとクライアントのセットアップに関する記事を特集しました。これには、NTPがどのように正確に機能し、なぜそれが重要であるかについての詳細な説明が必要です。

正確な時刻の要件は何ですか?

まず、そもそも、私たちのマシンが正確な時間を使用できるように、このような深いインフラストラクチャが開発された理由を見てみましょう。

ドリフトが発生します

コンピュータシステムを使用しているときはいつでも、時間の経過とともにハードウェアクロックが遅れ始めることはよく観察されている事実です。この効果は、場合によっては非常に不正確になることさえあります。これは明らかに望ましい効果ではないため、時間同期を使用することをお勧めします。

ログ管理

複数のデバイスのネットワークがあり、何らかの問題が発生した場合、それはネットワーク上の複数のシステムに影響します。問題を追跡し、何が起こったかを知る最良の方法は、システムログをチェックすることです(ログファイルのチェックについて詳しくは、こちらをご覧ください)。これらのシステムの1つが数秒遅れている場合、実際に最初に影響を受けた他のシステムよりも前に影響を受けたように見えます。これにより、トラブルシューティングが困難になり、一般に、ネットワーク全体で複数のシステムを管理することが困難になります。これはほんの一例ですが、もっと多くの深刻な可能性があります。

トランザクション

インターネットを介していくつかの種類のトランザクションが行われます。システム時計が実際の時刻より進んでいる場合、実際に金額を支払う前に支払いが到着したことが支払いのシステムログに表示されることがあります。これにより、支払いはあなたのものではなくなり、より多くの問題が発生します。

または、より類似したケースでは、時間の不正確さのために、最初に電子メールを送信する前に、受信者が電子メールに返信を送信する場合がよくあります。ご想像のとおり、インターネット上の2つの異なるシステムでの時間の正確さは、いくつかの潜在的に有害な結果の根源になる可能性があります。

コマンドの実行

ネットワーク上には、複数のシステム上で調整されたタスクを実行するために作成されたスクリプトがよくあります。そのようなスクリプトに時間パラメータがある場合、システムの時間が不正確であると、スクリプトが混乱する可能性があります。一部のコマンドは、必要になる前、またはプロセス全体を妨害した後に実行されます。これは明らかに起こるのは良くありません。

繰り返しになりますが、同様の注意点として、システムとGPS衛星の間で時刻が適切に同期されていないと、GPSは実際には正しく機能しません。

どのように機能しますか?

このように、シナリオや日常生活を組み込むために、ネットワーク上で正確な時間を維持することが非常に重要である理由はいくつかあります。私たちにとって幸運なことに、これを達成することはそれほど難しくありません。 NTPを使用すると、これを可能にすることができます。では、NTPはどのようにしてそれを実現するのでしょうか。見てみましょう。

タイムソース

もちろん、究極のタイムソースは非常に正確でなければなりません。これらの時刻源は、現在科学的に可能な最高のもののいくつかであり、その最初のものは原子時計です。 、基底状態のセシウム133原子の2つのエネルギー準位間の遷移に対応する放射線の9192631770サイクルを1秒として使用します。それ以外に、一部の国家標準機関によって放送された時報の受信機は、正確な時刻として信頼できます。

これらのタイムソースは、S tratum 0にあると言われています。 レベル。階層の概念は、次のように機能します。

ストラタムコンセプト

Stratumは、文字通り「順序付けられたシステムの一連のレイヤー、レベル、またはグラデーションの1つ」を意味し、NTPのコンテキストでもこのように使用されます。ストラタム0レベルは、可能な限り最も正確な時間です。サーバーが時間をストラタム0タイムソースと同期する場合、それはストラタム1タイムソースです。また、別のサーバーに時間を提供する場合、そのサーバーは2回の階層ソースです。レイヤーが上昇し続けると、サーバーに割り当てられた階層番号も通常上昇し続けます。したがって、サーバーに割り当てられた階層番号が小さいほど、時刻はより正確になります。

層レベルは層16まで考慮され、その後は時間差が大きすぎます。多くのシナリオでは、最大でストラタム4サーバーを使用することをお勧めします。

Stratum1サーバー

ストラタム0レベルのサーバーは、私たちのような通常のユーザーが使用することは許可されていません。原子時計と国家機関の時刻源は、政府によって直接管理されています。

さらに上に行くと、ストラタム1サーバーは、ストラタム0レベルのハードウェアクロックに直接接続されているサーバーです。ストラタム0は実際にはサーバーではなくクロックであるため、これは可能な限り最良のタイムソースサーバーです。実際に接続できるサーバーは、ハードウェアクロックから時刻を直接受信するストラタム1サーバーです。

ストラタム1サーバーは、正確で適切に保守されている必要があります。他のシステムがそのタイムサービスに依存している可能性があるため、高可用性も必要です。

時間同期プロセス

まず、システムにNTPを設定するには、時刻の同期に使用するサーバーを選択する必要があります。そのために、使用するサーバーを選択し、システムソフトウェアの設定を構成できます。

時間の同期方法

同期プロセスは、システムとNTPサーバーがかなりの時間にわたって複数のデータパケットを交換することから始まります。実際に起こっていることは、パケットがNTPサーバーへの1回のラウンドトリップを完了して戻るのにかかる時間を計算することです。時刻はこれらのデータパケットでNTPサーバーによって送信され、計算された移動時間はそれに応じて差し引かれます。例:

システムは、パケットを送信する時刻が17:00:05です。これで、システムは17:00:11にNTPサーバーから応答を受信します。 NTPサーバーは、現在17:05:23であるという時刻情報を送信しました。しかし、パケットにかかる移動時間である6秒を見ると、サーバーに到達するのに3秒かかり、戻ってくるのにさらに3秒かかったことを意味します。これは、時刻が現時点ではなく、3秒前の17:05:23であったことを意味します。したがって、時間はそれに応じて17:05:26に調整されます。

(もちろん、スケールを非常に大きく拡大しましたが、これは説明のためです。これらの違いは実際にはミリ秒単位ですが、ロジックは同じです)。

このパケット交換プロセス全体は、正しい時刻を確保し、オフセットが修正されていることを確認するために、約5分間続きます。明らかに、パケット交換が短く、一貫性があり、対称的であるほど、時間はより正確になります。 NTPプロトコルは、速度と信頼性のために、このプロセスにUDPパケットとIPパケットを使用します。使用されるポートは123です。時間の精度は通常5〜100ミリ秒であると言われています。

NTPサーバーとシステムの時間差が十分に小さい場合は、すぐに変更されます。時間差が大きい場合、修正されるまで時間はわずかな差で絶えず変更されます。

ベストプラクティス

複数のサーバーがある

これは最も強く推奨される方法です。1つが誤動作を使用したり、何らかの理由で不正確になった場合に、複数の冗長NTPサーバーを用意することです。ネットワークを別のNTPサーバーにすぐに接続できれば、大きな損失は発生しません。さらに、特定の明白な手がかりが与えられたときに(NTPサーバーからパケットを受信しないなど)、ネットワークを自動的にアクティブ化して冗長サーバーの1つに接続できるスクリプトを設定できれば、さらに良いでしょう。

>

ネットワークレイアウトを検討する

ネットワークは、より正確な時間を必要とするシステムが物理的に近く、NTPサーバーに直接接続されるように構成する必要があります。サブネットワークがある場合は、比較的正確な時間を必要としないタスクに使用する必要があります。

安全なNTP通信

NTPはUDPに基づいているため、非常に多くのことに焦点を当てたプロトコルであり、システムによっては潜在的な脆弱性が存在する可能性があります。認証を使用してNTP接続を保護することは常に良い考えです。

アクセスを制限する

確かに、外部の攻撃者からネットワークを保護することは重要ですが、それは誤った取り扱いを防ぐことでもあります。 NTPサーバーへのアクセスを最小限の人数に制限することで、人的エラーを可能な限り少なくすることができ、それ以上に、持っていない人によって処理されないので安心できます。ネットワークを実際に処理するための技術的理解。

タイムループを回避する

サイエンスフィクションの見通しはさておき、ネットワーク構造での時間のループを常に回避する必要があります。 AがBのサーバーとして機能し、BがCのサーバーとして機能するとします。ここで、Cが再びAのサーバーとして割り当てられると、事態が混乱する可能性があります。もちろん、正しい考えを持っている人は誰もこれを行いませんが、偶然に発生することもあるため、NTPネットワークのレイアウトを時々確認することをお勧めします。

結論

NTPは、システムが常に正しい時刻になるようにするための優れた効率的なプロトコルです。大規模なネットワークやオフィス環境では少し注意が必要ですが、少し注意してレイアウトを整えることは大いに役立ちます。その記事がお役に立てば幸いです。


Linux
  1. CentOSで時刻同期のためにNTPをインストールして設定する方法は?

  2. Linuxでのsudoの8つのベストプラクティス–sudoの推奨事項と禁止事項

  3. Windowsサーバーのセキュリティのベストプラクティス

  1. Linuxでタイムゾーンを設定してサーバー時間をNTPと同期する方法

  2. Chrony –Unixライクなシステム向けの代替NTPクライアントおよびサーバー

  3. UbuntuサーバーでNTPを使用して時刻を同期する方法は?

  1. OpenSSHセキュリティのベストプラクティス

  2. Linuxサーバー時間をネットワークタイムサーバーと同期する

  3. Linuxサーバーのセキュリティのベストプラクティス