HomeBlog Page

FireWall 内の PC 内部時計の時刻合わせ

社内 LAN の PC は FireWall に阻まれて外部の SNTP サーバにアクセスできないため、正確な時刻合わせができない。Windows だと HTTP 経由で時刻合わせをしてくれるソフト[AdjustClock]があるので、これを使えばよいが、Mac ではそうもいかない。そこで、AdjustClock をインストールしたマシンを SNTP サーバとして稼働し、こいつを参照して時刻を合わせるようにした。



0. まえおき

はじめに断っておくが、インターネット経由で NTP、SNTP サーバにアクセスできるのであれば、こんなややこしいことはしなくてもよい。

使用したOSは Windows 2000 および Mac OS X Panther。NT もしくは 9x系 では下記の方法で SNTP サーバは動かない。

1. Windows の時計合わせ

まず、Windows2000 に AdjsutClock をインストールして、スタートアップに登録、常駐する設定を行う。また、1日に2回程度時刻合わせを行うようにしておく。(設定方法は添付の ReadMe 書類を参照のこと。また、Windows にログオンせずに AdjustClock が動作するようにサービス化するのがよいのかもしれないが、そこまではやっていない。)

これで Windows マシンの時刻合わせは OK。

2. NTP サーバを稼働させる

ややこしいのはここから。Mac には AdjustClock のようなソフトが無いようなので、上記 Windows マシンの時計に合わせるようにする。Windows 2000 に標準添付されているサービス W32Time は SNTP クライアントとして時計合わせを行う機能の他、サーバとしても機能するので、これを利用する。うちの場合ワークグループ形態となっているので、このサービスは稼働していない。そこで、OS 起動時に W32Time が稼働するようにしておく。設定方法は下記のページを参照のこと。
[NTPでネットワーク全体のマシンの時刻を合わせる(1)]

実はこれだけでは、クライアントとしてしか動かない(マシンがドメインコントローラではない場合)。サーバとして動作させるためには W32Time のレジストリ値を変更する必要がある。レジストリ値を下手にいじると、最悪 OS が動作しなくなることもあるので慎重に行うこと。変更する値については下記を参照のこと。
[W32Time サービスのレジストリ エントリ]

ただし、上記サービスを動かすと一定周期ごとに SNTP サーバを参照しにいくが、うちのネットワークにはサーバが存在しない(アクセスできない)ため、システムログに警告が書き込まれることになる。W32Time のレジストリ値を変更することで、サーバを参照する周期を変えることができるが、あまりいじりたくないのでデフォルトのままにしている。変更方法は下記参照。
[W32Time サービスのレジストリ エントリ]

3. Mac の時計合わせ

あとは Mac で Windows 2000 のマシンを参照するよう設定する。[システム環境設定]->[日付と時刻]の[日付と時刻]タブを開いて、「日付と時刻を自動的に設定」にチェックを入れて、右のフォームに Windows マシンの IP アドレスを入れればおしまい。

4. 独り言

ちなみに Windows 2000 ではなく、Windows XP の場合、レジストリをいじらなくても NTP サーバが起動するらしい。
[NTPでネットワーク全体のマシンの時刻を合わせる(2)]

Mac OS X でも net time コマンドで時刻合わせができるんじゃないか思うのだが、やり方がよくわからない...