The Network Time Protocol (NTP) Distribution

gifP.T. Bridgeport Bear; from Pogo, Walt Kelly

Pleased to meet you.

Last update: 18:39 UTC Thursday, July 28, 2005


関連リンク


目次


イントロダクション

Note: The software contained in this distribution is available without charge under the conditions set forth in the Copyright Notice.

NTP は、サーバやクライアントの時刻を、別のサーバやラジオ、衛星受信機、モデムといった時刻情報源と同期させるために利用されます。通常、GPS 受信機からの UTC と比較して、LAN であれば 1 ミリ秒以内の精度を、WAN であれば最大でも数十ミリ秒の精度を提供します。典型的な NTP の設定では、高い精度と信頼性を得るために、複数の冗長サーバおよび様々なネットワークパスを利用します。

本リリースでは NTPv4 を実装していますが、NTPv1 を除く以前のバージョンとの後方互換性があります。NTPv4 では、IP マルチキャストを使った自動サーバ発見だけでなく、事故や悪意のある攻撃を防ぐために、共通鍵暗号および公開鍵暗号をサポートしています。本リリースでは、OS がサポートしていれば、標準の IPv4 アドレスファミリだけでなく、IPv6 アドレスファミリをフルサポートしています。

計算機ネットワーク時刻同期についての背景情報は、Executive Summary - Computer Network Time Synchronization のページにあります。プロトコルの適合問題や以前のバージョンの NTP との相互運用に関する議論は、Protocol Conformance Statement のページにあります。NTP がどのように時刻を計算するかについての議論は NTP Timescale and Leap Seconds のページにあります。背景情報や歴史、発表に適した簡潔なスライドは Network Time Synchronization Project のページにあります。さらなる情報は、NTP の Web サイト www.ntp.org にあります。バグレポートは <bugs@mail.ntp.org> に送ってください。

NTP のビルドとインストール

NTP は UNIX と Windows (XP, NT4 および 2000) をサポートしています。ビルドおよびインストール のページでは、一般的なクライアントやサーバにて NTP をコンパイルおよびインストールする方法の概要を説明しています。ビルドでは、システムのハードウェアおよびソフトウェアの環境を調べ、その環境に適したオプションを選択します。これらの手続きは今日のほとんどのコンピュータおよび OS で動きますが、手動での操作が必要な例外も存在し、これらは 設定オプションリリースノート にて説明しています。

最初の NTP サーバを立てるには、ラジオや衛星受信機あるいはモデムが必要です。NTP の配布物には、これらを利用するためのドライバが含まれています。サポートするドライバのリストは 参照クロックドライバ のページにあります。その他の統率のとれていないマシン (undisciplined machine) をプライマリあるいはバックアップのサーバとして使用することも可能で、これについては Undisciplined Local Clock のページに記述されています。FreeBSD や Linux のような広く利用されている Unix クローンと同様に、Sun や Silicon Graphics、Hewlett Packard によって販売されている有名なワークステーションに対しても、対象のマシン上で動作するすべてのドライバが自動的なビルド方法にて選択されます。これにより実行バイナリのサイズがいくらか大きくなりますが、設定オプションのページに記述されている設定ユーティリティを使うことで、個々のドライバを含めたり外したりすることができます。

このリリースに含まれるいくつかのプログラムは、信憑性や証明書の照合のために暗号アルゴリズムを使います。ローカルセキュリティポリシーが、比較的弱い共通鍵を容認する場合は、必要なソフトウェアがこのリリースに含まれています。しかしながら、ローカルポリシーがより強い公開鍵暗号を要求する場合は、このリリースに含まれていない追加のソフトウェアが必要です。このリリースでは http://www.openssl.org から入手可能な OpenSSL ライブラリを使います。このライブラリはセキュアシェルによっても利用されますので、Unix ワークステーションやサーバには既にインストールされていることが多いでしょう。このライブラリには、X.509 証明書生成や署名、検証アルゴリズムはもちろん、この業界で使われるほとんどのメッセージダイジェストおよび電子署名アルゴリズムが含まれています。

共通鍵暗号はオプショナルですが、すべての NTP 操作に対して強く推奨され、Autonomous Authentication に記述されている NTPv4 Autokey プロトコルで必要とされていますし、Autonomous Configuration に記述されている一般的な自動設定スキームの統合コンポーネントとなっています。さらに、アクセスコントロールオプション にて記述されている、様々な方法でアクセス制限をかけることができます。

クライアントとサーバの設定

NTP はまさにその本質から、複雑な分散ネットワークアプリケーションであり、非常に多くの広い様々な計時シナリオに対して構成、利用することができます。これらのページに記述された文書は、このリリースがサポートしている設定、操作、保守ツールを完全に網羅しようとしています。しかしながら、ほとんどのアプリケーションはこれらのうちのほんの少ししか必要としないでしょう。もしそうなら、クイックスタート が役に立つでしょう。

しかしながら、すでにある NTP 同期ネットワークに参加し、正確で信頼性のある時間を得るためには、このマシンによって使われるサーバや外部受信機を設定する、適切な設定ファイル (一般的に ntp.conf と呼ばれる) を構築することが通常では必要となります。このファイルを構築する指針は、NTP の設定や NTP サブネットを構築する際の注意事項 のページにあります。しかしながら、シンプルなネットワークトポロジやワークステーションを含む多くの場合には、設定データは ntpd - Network Time Protocol (NTP) daemon に対するコマンドラインにてすべて指定することが可能です。

正確で信頼できる時刻を提供することにおける最も重要な要素は、設定ファイル中で使われるモードとサーバの選択です。利用可能なモードについての議論は、Association Management のページにあります。1 台あるいはより多くの計算機に対する NTP のサポートは、既にある公開 NTP 同期ネットワークの一部として設計されます。公開ネットワークはサーバおよびクライアントの多数の冗長な階層から構成されており、それぞれが stratum 値によって識別される、階層の中でのレベルを持っています。プライマリなサーバは stratum 値 1 で動作し、stratum 値 2 で動作するセカンダリサーバやより高い層へ時刻の同期を提供します。この階層の中では、クライアントは単に下位のホストを持たないサーバです。

会社や大学の NTP ネットワークを構成することは、1 つのエンジニアリングにおける挑戦となるでしょう。NTP はシステムやネットワークの故障やソフトウェアのバグ、時計の誤差、そしてハッカーの攻撃に耐えるべく設計された多くの機能を持っています。これらの障害に耐えるには、サーバの冗長性やネットワークパスの多様性の良い法則を用いた時計ネットワークの複雑な設計が要求されます。NTPv4 で追加されたメニーキャストモードは、現在のサーバやネットワークの状態を観測し、クライアントやサーバの設定を精度や信頼性がもっとも良くなるよう調節するよう設計されています。メニーキャストモードに関する更なる情報は、Athentication OptionsAutomatic NTP Configuration Options のページにあります。

2003 年初頭の NTP ネットワークには、ラジオや衛星あるいはモデムによって UTC に直接同期された 100 をはるかに超える stratum 値 1 の公開プライマリサーバがあり、それらは南極大陸を含む地球上のあらゆる大陸に置かれています。通常、比較的少ない数のクライアントを持ったワークステーションやサーバは、プライマリサーバには同期しません。プライマリサーバに同期した 100 をはるかに超える数の stratum 値 2 の公開セカンダリサーバがあり、インターネット上には合計で 100,000 をはるかに超える数のクライアントやサーバへ時刻の同期を提供しています。Information on Time and Frequency Services のページにて現在のリストが維持されており、これは頻繁に更新されています。公開されていない膨大な数のプライベートなプライマリ、セカンダリサーバがあり、これらの多くはファイアウォールの後ろに隠れています。Clients are strongly discouraged against using these servers, since they sometimes hide in little ghettos behind dinky links to the outside world and unwanted traffic can bring up expensive ISDN lines, causing much grief and frustration. アクセスコントロールオプションのページには Kiss-of-Death パケットを含む防御の手段が記述されています。

問題解決

インターネットにおける他のものと同様に、NTP 同期ネットワークは巨大かつ鬼のように複雑になりがちで、設定ミスやネットワークの問題も多くみられます。NTP の設計モデルは、統合された管理プロトコルを用いて、そのような問題を切り分け、修復しやすいようにとりわけ設計されており、監視やデバッグツールも一そろい提供されています。正常・異常な動作を記録したり、問題をシステムログツールに記録したり、クライアントのアクセスを記録したりするために利用できる、オプショナルな統計データ記録ツールが用意されています。NTP Debugging TechniquesHints and Kinks のページには、問題を切り分けたり、解決法を考案するための役に立つ情報があります。極端なケースでは、このリリースに含まれる ntpdsim - Network Time Protocol (NTP) simulator を利用することで、問題を見抜くことができるかもしれません。

バグの報告や提案、この配布物への貢献をお願いします。Patching Procedures のページでは、配布物のアップデートをかなり簡単にする方法が示されていますし、Porting Hints のページではこのコードを新しいハードウェアや OS に移植することをより簡単にする方法が示されています。参照クロックドライバの構築やデバッグの更なる情報は、Debugging Hints for Reference Clock Drivers のページにあります。

各プログラムのマニュアル

サポート文書

背景情報

アプリケーションノート


gif