| [Management] | |||||||||||||||||
NTPでネットワーク全体のマシンの時刻を合わせる(1)
|
|||||||||||||||||
|
|||||||||||||||||
| 解説 |
ネットワーク上に多数のマシンが存在していて、それらの間で共同作業を行う場合、各マシンが内蔵しているシステム・クロック(リアルタイム・クロック、RTC)をすべて同じになるように揃えておくのは非常に重要なことである。ファイルのタイム・スタンプがずれていれば、更新日時順にソートしたり、ファイルの新旧を区別して動作するようなユーティリティ、例えばバックアップ・プログラムや、プログラムの開発過程で使われるmakeコマンド(ファイルの修正時刻を調べて、新しいものだけ再コンパイルするためなどに使われる)が正しく機能しなくなったりする。またWindows 2000/Windows XPではKerberosを使ったログオン認証システムを採用しているが、これはサーバとログオンするクライアントの時間がある範囲内で一致していないと、正しく動作できないという仕組みになっている。このような問題を避けるため、Windowsシステムでは、ネットワーク全体で各マシンに内蔵されているシステム・クロック(時刻情報)を同期させるためのメカニズムが提供されている。ここでは、その利用法について見てみる。
|
Windowsネットワークにおいてお互いのシステム・クロックを同期させるには、以下のような2つの方法がある。
●「net time」コマンドを使った同期
Windows系のOSでは、「net time」というコマンドを使えば、簡単に他のWindowsシステムとクロックを同期させることができる(これはWindowsネットワーク独自の同期用プロトコルを使っている)。この方法は、Windows 9x/Me/NTといった、比較的古いOSでも利用可能という特徴があるが、同期させる相手がWindows系(もしくはSambaサービスを実行しているPC UNIXなど)のマシンに限られる。主にLAN内でのみ利用可能な方法だ。
●NTP(SNTP)プロトコルを使った同期
NTP(Network Time Protocol)プロトコルは、インターネットで広く使われているクロックの同期用のプロトコルであり、Windowsマシンに限らず、さまざまなシステムで利用できるという特徴がある(NTPサービスを簡略化して、時刻同期の機能だけに限定した「SNTP(Simple Network Time Protocol)」というプロトコルも普及している)。
NTPでは、階層的に構築された時刻サーバによるネットワークを使って、多数のマシンに効率よく、正確な時刻情報を提供することができる。しかも、ネットワークの特性によるパケットの遅延時間のばらつきやゆらぎなどの影響を極力排除して、正確な時刻情報をやりとりすることができる。通常NTPを使ったシステムでは、最上位には非常に正確な時刻情報源(原子時計やGPSなどを使った基準となる時計)を(複数)用意し、その下に階層的にNTPサーバを構築していく。同じ階層同士でも相互に時刻情報をやりとりして、その揺らぎの影響などを統計的に処理することにより、インターネットを経由した場合でも数msec以下の誤差でクロックを同期させることができる(ただしSNTPでは、パケットの往復時間を平均して遅延時間を算出しているので、統計的なゆらぎまで考慮するNTPに比べるとやや精度は低い)。
一般的には、組織内に1台のマスターとなるNTPサーバを用意する。そして、インターネット上のどこかに置かれているNTPサーバと同期させ、それを組織内の基準クロックとする。組織内の全クライアントは、それを基準にして動作するようにネットワークを設定しておく(階層構成にすれば、マスターとなる1台だけに負荷が集中するのを防ぐことができる)。
このように、NTPサービスを使うためには、(当然であるが)時刻の基準となるNTPサーバがどこかに1台必要となる。インターネット・プロバイダによっては、ユーザーのためにNTPサーバを用意しているところもあるし、GPSや標準電波を使ったNTPサーバ・システムなども市販されているので、これらを使って正確な基準時刻源を作ればよいだろう。
また2002年3月末までの期間限定であるが(注:その後、終了期限の延長が発表されている)、通信総合研究所(現 情報通信研究機構)、NTT、インターネットイニシアティブ、インターネットマルチフィードの共同研究プロジェクトとして、インターネット上での日本標準時提供実験が行なわれているので(プレスリリースはこちら)、ここで提供されているNTPサーバを利用するという方法もある。
このプロジェクトでは合計3台のNTPサーバ(ntp1.jst.mfeed.ad.jp、ntp2.jst.mfeed.ad.jp、ntp3.jst.mfeed.ad.jp)が提供されているので、いずれかのサーバと同期を取るようにすればよい。
Windows 2000/Windows XPでは、このNTP(SNTP)を使ったWindows Timeサービス(開発当初の呼び名に基づいて、「W32Time」サービスとも呼ばれることがあり、イベント・ログにはこの名前でログが出力される)という時刻同期のためのメカニズムが実装されている。そのため、ある1台のマスタとなるNTP(SNTP)サーバ・マシンを使って、ドメイン内のすべてのWindowsクライアントの時刻をNTP(SNTP)プロトコルを使って同期させることができる。クライアントがWindows 9xやMe、Windows NTの場合は、net timeコマンドを使って同期を行えばよい。
Windows Timeサービスを使って自動的なクロックの同期を行うには、2つの方法がある。1つはActive Directoryを導入して、時刻情報を同期させたいクライアントをすべてドメインに参加させておくという方法である。Windows 2000/Windows XPでは、Active Directoryドメインに参加しているマシンはすべて自動的にドメイン・コントローラの持つクロックに同期するようになっている。Active Directoryで利用されているKerberos認証では、参加しているコンピュータ間でクロックが(ほぼ)一致していることが必要だからだ。
もう1つは、各クライアントのSNTP設定を手動で行うという方法である。net timeコマンドのオプションでSNTPサーバのアドレスをセットしておくと、以後は自動的にそのSNTPサーバを参照して、マシンのクロックが同期するようになる。クライアントはドメインに参加している必要はないし、ワークグループ形式や、非Windowsマシンが混在していても利用できる。
NTPサービスを簡略化して、時刻同期の機能だけに限定した「SNTP(Simple Network Time Protocol)」というプロトコルがあるが、Windows 2000ではSNTPサーバと同期させるための機能が用意されている。ドメインのFSMOのPDC(Flexible Single Master OperationのPrimary Domain Controllerエミューレータの役割を果たすサーバ。一般的にはActive Directory内で一番最初に作成したドメイン・コントローラが担当する)に対して、以下のようなコマンドを実行する。
| 操作方法(Windows 9x/Me/NT編) |
Windows 9xやMe、NTでは、NTP(SNTP)プロトコルを直接扱うことができないので、以下のようにnet timeコマンドを使うのが一般的である。例えばコマンド・プロンプト上で、
net time \\timeserver /set /yes |
を実行することにより、ローカル・マシンのシステム・クロックを、timeserver(timeserverは、適切なアクセス権があるWindows 9xやWindows NT/2000/XPマシン)が持つ時刻情報と同期させることができる。これをタスク・スケジューラなどで1日に1回程度実行すれば、常にほぼ正確な時刻を維持することができる。この方法は、すべてのWindowsクライアント(Windows 9x/Me/NT/2000/XP)で利用することができる。/set(と/yes)を省略すると、指定されたサーバの時刻情報を参照して表示するだけで、ローカル・マシンのクロックは更新されない。
| 操作方法(Windows 2000編) |
サーバ側のSNTPサーバの準備
Windows 2000(Professional、Server)では、上記のnet timeコマンドによる同期のほかに、新しくSNTPプロトコルを使ったクロックの同期方法も用意されている。インターネットに常時接続されている環境があるならば、これを使って常にサーバのクロックを正確に維持するようにすればよいだろう。
Windows 2000でSNTPプロトコルを利用するためには、まず基準となるSNTPサーバをドメイン内に(最低でも)1台用意する必要がある。一般的には、ドメインのFSMOのPDC(Flexible Single Master OperationのPrimary Domain Controllerエミューレータの役割を果たすサーバ。一般的にはActive Directory内で一番最初に作成したドメイン・コントローラが担当する)で以下のようなコマンドを実行し、外部のSNTPサーバに同期させる。
net time /setsntp:SNTPserver |
SNTPserverには、SNTPサーバの名前かIPアドレスを指定する(プロバイダの提供するNTPサーバや、先にあげたようなNTPサーバを指定する)。現在のSNTPサーバの設定状態を調べるには、
net time /querysntp |
いうコマンドを実行する。/setsntpで設定したSNTPサーバ名が表示されるはずである。
以上の設定がすめば、自分自身のクロックは外部のSNTPサーバと同期しているはずである。またドメイン内の各クライアント(他のドメイン・コントローラやメンバ・サーバ、およびWindows 2000 Professional、Windows XPなど)の時刻も自動的にドメイン・コントローラに同期するようになっているはずである。階層的なドメインを構築している場合は、ルートにあるドメイン・コントローラが唯一の基準となって、自動的に下位のドメイン・コントローラにまで時刻情報が伝達される。もし、何らかの理由で各クライアント側のWindows Timeサービスが起動していないようであれば、以下のようにして[スタート]メニュー−[プログラム]−[管理ツール]−[サービス]で、Windows Timeサービスの[スタートアップの種類]を「自動」にしておく。
![]() |
|||
| Windows Timeサービス | |||
| NTP(SNTP)プロトコルを使った、自動的な時刻同期のためのサービス。イベント・ログには、「W32Time」というサービス名でログが出力される。 | |||
|
各クライアントにおいて、Windows Timeサービスが起動すると、Windows Timeサービス(SNTPサービス)を実行しているドメイン・コントローラを自動的に検索して、SNTPプロトコルで現在の時刻を問い合わせ、ずれがあればローカルのシステム時刻情報が修正される。この場合、ローカルの時刻が正確な時刻よりも遅れているか、3分以上進んでいる場合は直ちにローカルのシステム時刻の修正が行われる。3分以内の進みならば、ローカルのシステム・クロックの進み方を遅らせて、数分かけて徐々に正確な時刻に近づける(すぐに修正すると、時刻情報に基づいて動作しているプログラムなどに支障が出る可能性があるため)。さらに、その後は数十分〜数時間ごとに基準時刻とのずれを調べ、必要ならば修正が行われる。
クライアント側のSNTP設定
以上のようなWindows Timeサービスによる時刻の同期作業は、ドメインのメンバであれば各クライアントごとに何もしなくても自動的に行われるようになっているが(Windows Timeサービスが自動的に起動するように設定される)、そうでない場合(ドメイン・メンバではなく、ワークグループ形態で動作しているWindows 2000 ServerやProfessionalなど)は、手動で設定を行う必要がある。具体的には、net time /setsntpコマンドでSNTPサーバを指定し、さらに上記のようにWindows Timeサービスを起動時に開始するように設定しておけばよい。
■レジストリの設定
Windows Timeサービスでは、デフォルトでは、8時間に1回しかSNTPサーバと同期を行わない(サービス起動直後はもっと頻度が高いが、安定してくるにつれて同期回数はこの頻度に下がってくる)。だが、場合によってはこれでは不十分かもしれない(例えばシステム・クロックに使われている水晶の精度が低いと、8時間で数秒ずれてしまうかもしれない)。このような場合は、レジストリを調整して、より高い頻度で同期を行うように指定することができる。詳細についてはサポート技術情報の「W32Time サービスのレジストリ エントリ(223184)」を参照していただきたい。
|
||||||||||||||||||||||||||||
| INDEX | ||
| NTPでネットワーク全体のマシンの時刻を合わせる(1) | ||
| NTPでネットワーク全体のマシンの時刻を合わせる(2) | ||
| 更新履歴 | |
|
| 「Windows TIPS」 |
ホワイトペーパー(TechTargetジャパン)
- 第207話 究極の人事システム (2010/2/9)
部長、わが人事部が開発した究極の人事評価システムがついに完成しました! これで不要な社員が一発で分かります! - WindowsTIPS (2010/2/5)
− netshコマンドでTCP/IPのパラメータを設定する
− Virtual PC 2007の共有NATで利用可能なアドレス範囲
− スタンバイ復帰でパスワード入力を要求されないように - 仮想環境でActive Directoryを利用する (2010/2/4)
仮想環境にADをインストールすれば、自由にActive Directoryドメイン・ネットワークを構築して実験できる - 第206話 バナー広告案 (2010/2/2)
いまどきWebマーケティングが不可欠なのは分かるが、強烈な競合に並べてバナーなんか出して、勝ち目はあるのか?
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | 企業の仮想化に足りない“発想”とは? 仮想化運用管理のキモは意外なところに! New! |
| ◆ | 操作もマニュアルも分かりやすい! ユーザー視点で開発されたPC管理ツール New! |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |

| ◆ | セキュリティを知り尽くす上野氏が登壇! @ITメールソリューションLive! in Tokyo |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
| ◆ | 世界に通用するストレージの作り方とは? 製品に込めた思いを富士通の開発者に聞く |

| ◆ | OSSで手間も時間も、障害も減った―― 「マピオンの事例」オープンソース活用法 |
| ◆ | 「ノートPCの持ち出し禁止」で大丈夫? 情報漏えいを防ぐ管理手法とインフラは? |
| ◆ | 1日の処理を1秒に――MySQLの達人が語る 「コスト削減」できるチューニング |

| ◆ | ドキュメント作成を自動化して、SEの作業 効率を大幅アップ! Visio 2007の魅力 |
| ◆ | 急速に広がるHyper-Vでのサーバ仮想化 そのベストプラクティスをデルが解説 |
| ◆ | @IT主催セミナーで語られた、「担当者に 求められるセキュリティ対策」をレポート |

| ◆ | @IT「Windows 7」 特設サイトオープン! 最新情報・移行ノウハウを公開しています |








