カウンタをつける
 syslogをインストールする
 サーバの時計を合わせる
 サーバの時計を合わせる その2
 検索エンジンへの登録とロボット対策
 掲示板を動かす
 メールサーバを交換する(Vintra mail server)
 メールサーバを交換する その2
 FTPサーバを交換する
 バリアセグメントを作る
 ファイアウォールの導入(Windows版SOCKS)
 プロキシーサーバの導入(Windows版delgate)
 3 サーバの時計をあわせる(タイムサーバの導入)

タイムサーバとは

PCにかぎらず、コンピュータには「時計」が内蔵されていて、電源が入っているいないにかぎらず、常にその「時計」は動いています。このコンピュータ内蔵の時計の仕組みは、クォーツと呼ばれる水晶発振子と、それを制御するリアルタイムクロックと呼ばれるIC、そしてバックアップ用に内蔵されている電池によってできています。

基本となる水晶発振子はもともと精度にバラツキが多いようです。水晶発振子の精度は、「ppm」(1ppmは100万秒の1)という単位で表現され、±10ppm、±20ppm、±50ppm、±100ppmとランク分けされているようです。温度によっても精度が異なるようですが、常温で±20ppmの水晶発振子を使った場合、1日あたりのズレは、

24時間×60分×60秒×20ppm(0.00002)

となり、「1.728秒」狂うことになります。この調子で狂っていくと、1ヵ月(30日)で「51.84秒」、1年(365日)で「630.72秒=10.512分」狂います。実際には、リアルタイムクロックICが補正することでここまでの誤差を生じないようにしていたり、1年をとおしての温度差から、ここまで狂うことはないでしょうが、なにもしなければ、少なくても数秒程度、悪くすると数分程度内蔵時計が狂っている可能性があります。

しかし、コンピュータの時計が狂うことで、いったいなにか不都合なことがあるでしょうか? いくつか考えることができます。よく言われるのが、「メールの送信日時が正しくないため、受信側との間でトラブルが発生する」とか、「クライアント側とサーバ側の時計が同期していないため、ファイルのタイムスタンプにずれが生じてしまう」といったようなことです。たしかに、メールの送信日時が正しくないと、通常、受信側のメールクライアントはタイムスタンプによってソートしてしまうため、最悪の場合、メール履歴に埋もれてしまうということもありえますし、ネットワーク上のマナーとしてものぞましいことではありません。後者にいたっては、重要なファイルを古いファイルで上書きしてしまうこともありえます。

しかし、筆者の経験では、上のようなケースで大問題になったことはありませんでした。1ヵ月で数分狂ってしまうといったようなケースならともかく、数秒程度狂うというようなケースなら、ふだんとくに意識することもありません。サーバ/クライアント間で、タイマの同期が厳格にとれていないと支障をきたすようなシステムが、それほどあるとも思えません。もしあれば、インターネット普及以前には、独自の仕組みで、サーバ/クライアント間でタイマの同期をとるようになっていることでしょう。

しかし、時計が正確でないと困る重要なことがひとつあります。それは、サーバのログに記録される時間です。とくに外部からアタックがあったときなどに、サーバの時計がずれていて、ログに記録されていたタイムスタンプが正確でないとなると、ログの価値は半減します。

インターネット側からのアタックは、多くの場合、ISP(Internet Service Provider)いわゆるプロバイダのPPP接続を使って行なわれます。その場合、手がかりになるのは、そのときのIPアドレスまたはホスト名(FQDN)とタイムスタンプです。その時刻にダイヤルアップ接続していたユーザを着信記録から調査していくのが、第1歩です。その重要なてがかりであるタイムスタンプが正確でなければ、最初の1歩でつまづくことになります。

この点だけとっても、とくにサーバの内蔵時計を正確なものにしておく意味はじゅうぶんにあります。

では、どのようにしてサーバの内蔵時計を正確にしておくかというと、「内蔵時計の正確なコンピュータに教えていただく」です。インターネット上には、そうした親切なサーバがあって、広く一般に公開されています。このサーバは「タイムサーバ」と言われ、「教えるー教えていただく」ための専用のプロトコルが、NTPです。NTPは、Network Time Protocolの略で、文字どおりネットワーク上で時計合わせをするためのプロトコルです。

タイムサーバとタイムクライント

インターネット上で提供されているそのほかのサービスと同じように、タイムサービスもサーバであるタイムサーバと、そのサービスを受けるタイムクライアントによって成り立っています。ベクターデザインなどのダウンロードサイトから入手できるWindows用やMacintosh用の時計合わせソフトの多くは、タイムクライアントである場合が多いようです。

タイムクライアントとして、有名なものに「桜時計」があります。桜時計は、宇野信太郎さん作のWindows95/98/NT対応のフリーウェアで、NTPはもちろんSNTP(Simple Network Time Protocol)というプロトコルを使って、タイマサーバにアクセスして、クライアント側の時計を合わせます。バージョン0.2からはクライアントとしてでなく、SNTPプロトコル対応のタイムサーバとしても動作することができるようになっています。

宇野信太郎さんのページから桜時計はダウンロードできる
http://www.venus.dti.ne.jp/~uno/

また、Windows95/98/NTのタスクバーの時計を改造するタイプで、タイムクライアントとしての機能も持っているTClockなども、ユニークなフリーソフトです。

TClockは、作者のホームページ「Kazubon's Homepage」からダウンロードできる
http://member.nifty.ne.jp/kazubon/index.html

AtomTime98は、シングルユーザライセンスが10ドルのシャエアウェアです。必要にしてじゅうぶんな機能を持ち、きびきび動作します。

AtomTime98のホームページ
http://www.atomtime.com/

Macintosh用では、NetworkTimeが有名です。コントロールパネルの機能拡張としてインストールして設定するだけなので使いやすいソフト(シェアウェア5ドル)です。NetworkTimeは、TUCOWSからダウンロードできます。

http://www.tucows.marinemwr.or.jp/mac/timesyncmac.html

さて、いずれも使いやすいソフトウェアですが、先にも述べたように、ほとんどのものがタイムクライアント用のソフトウェアで、サービスを提供するタイムサーバとしての機能はありません。桜時計は、SMTPプロトコルを使ったタイムサーバとしての機能も持っていますが、主力はタイムクライアントとしての機能です。

ここ注意したい点があります。インターネット側に公開されているタイムサーバがあるのなら、サーバも含めて、社内LAN側のクライアントもタイムクライアントとして動作すれば、問題はないはずです。それぞれのマシンがタイムクライアントとして、タイムサーバにアクセスしにいけばいいのですから。しかし、考えてみてください。サーバとクライアントを含めれば、数台、場合によっては数十台もあるマシンがひとつひとつインターネット側のタイムサーバにアクセスしにいくのは、無駄であると同時に、タイムサーバに負荷をかけることになります。

それではどうしたらいいかといえば、社内LAN内の1台のマシンがタイムクライアントとしてまずタイムサーバにアクセスして時計を合わせ、そのあとで同じそのマシンが今度はタイムサーバとして、社内のそのほかのタイムクライアントの時刻の問い合わせに応えるようにします。つまり、右代表としてまず問い合わせをし、次に今度は問い合わせを受けるわけです。こうすれば、社内のほとんどのクライアントは社内にあるタイムサーバに問い合わせをすればよく、わざわざインターネット側に出ていく必要がなくなります。こうして考えてみると、代表として問い合わせをするマシンは、タイムクライアントであると同時に、タイムサーバでもある必要があります。

また、WindowsNTの場合には、アプリケーションとしてでなく、サービスとして動作する必要があります。アプリケーションでは、ログインしてそのアプリケーションを起動させる必要があります。起動させることは自動化することができますが、サービスとして動作させることは裏ワザ的な方法を使う以外ありません。

桜時計をWindowsNTのサービスとして起動させる方法について解説されているページ
http://web.tac.tsukuba.ac.jp/~yamato/skrw/skrw.html

タイムクライアント/サーバの両方の機能を持ったソフトとして、UNIXプラットフォームで有名なものに「xntp」があります。このxntpのWindowsNT版は、NTのサービスとして稼動することができます。ただ、筆者が調べたかぎりでは、UNIX版と違って、クライアントとしてしか動作しないようです。現在調査中。

WindowsNTでは、リソースキットにタイムサーバ(TIMESERV.EXE)が含まれていて、不具合があったことから、マイクロソフト社のFTPサイトに修正バージョンがアップロードされています。ただ、このTIMESERV.EXEはコマンドラインで使うもので、けっして使いやすいものではありません。

マイクロソフト社のFTPサイト内のリソースキット関係のディレクトリ
ftp://ftp.microsoft.com/bussys/winnt/winnt-public/reskit/nt40/i386/

ここから、Timeserv.exeをダウンロードしてください。ダウンロードしてから、そのアイコンをダブルクリックすると解凍が始まります。「使いやすくなくてもいい。挑戦したい」という方は、jun-nさんのページに詳しく使い方が説明されています。

jun-nさんの「WindowsNT Resource Kit」のページ
http://www.netwave.or.jp/~jun-n/

ついでに説明しておきますと、Windows95/98/NT同士(UNIX-sambaも可)なら、MS-DOSプロンプトから「net time \\相手マシン /set」とすると相手のマシンの時計に合わせることができます。

C:\WINDOWS>net time \\ntserver /set
\\NT の現在の時刻は 1999-4-17 20:24 です。
ローカル コンピュータの時計は現在 1999-4-17 20:24 に設定されています。
ローカル コンピュータの時計を \\NTSERVER と一致するように設定しますか? (Y/N) [Y]:y
コマンドは正常に完了しました。

「net time」の使い方は、「net time /?」とするとヘルプが表示されます。

(C) 1998 HyperDyne Inc.