[ 先頭 | 上へ | 前へ | 次へ | 目次 | 索引 ]

Analog 5.91beta1: DNS 検索


ログファイルには、サイトにアクセスしたコンピュータを示すものとして、lion.statslab.cam.ac.uk のような名前の代わりに 131.111.20.59 のように数字で表されたIPアドレスが含まれることがあります。この章では、Analog がどのようにして DNS検索 を行なって、こうしたIPアドレスをホスト名に変換するのかについて説明します。この仕組みはシステムが適切に設定されているかに依存します。実際システムによっては、DNS検索は使用できません。

まず、Analog の DNS検索は、プラットフォームに依存しない標準的なコードを使っているので、特別のプラットフォームに最適化されたものよりも遅くなっています。(特に、以下に述べる DNSTIMEOUT コマンドが使えないプラットフォームでは顕著です。)従って、常時DNS検索を行なう場合には、helper application のページにある DNS検索に特化したプログラムを使った方が良いでしょう。


DNSの検索は、ネットワーク越しにホスト名を検索する必要があるため、大抵は非常に遅い処理になります。このため、Analog は検索したアドレスをファイルに格納して、次回の検索時に同じ名前を検索する手間を省きます。ファイル名は、以下のコマンドで指定されます。
DNSFILE dnscache
このファイルを使うためには、以下で説明するコマンドのいずれかを併用することが必要です。DNSFILE コマンドで指定されたファイル名にディレクトリ名が含まれていない場合、 Analog は、特定の場所 (この場所はコンパイル時のオプションです) にあるファイルを読み込もうとします。 例えば、 Windows 版の場合、これは Analog の実行ファイルと同じフォルダになります。

DNS 検索には4つのモードがあります。DNS NONEと指定すると、IP アドレスはホスト名に変換されません。DNS READと指定すると、Analog は以前の検索結果を参照するために DNS ファイルを読み込みますが、新しい検索でファイルを更新はしません。このモードは、インターネットに接続されていない環境に適しています。3つ目のモードは、 DNS WRITE です。 このモードでは、古いファイルの読み込みと同時に、新しいアドレスの検索と検索結果のファイルへの書き込みも行なわれます。(最初に DNS WRITE を使うときには、Analog が指定されたファイルの読み込みに失敗して、ファイルがないという警告が出力されることがありますが、次回実行時にはファイルが作成されていますので、警告は出力されません。)最後のモードは DNS LOOKUP です。このモードでは、Analog は指定されたファイルを読み込むと同時に、新しいアドレス検索も行ないますが、その結果をファイルに保存しません。そのため、次回実行時に、それらのアドレスは保存されていません。このモードを指定する人はいないと思いますが、DNS WRITE の指定をした際に、何らかの理由でファイルへの書き込みに失敗すると、Analog はこのモードになってしまいます。

HOSTEXCLUDE コマンドを使っている場合、名前解決が行なえないものについてはIPアドレスで、名前解決が行なえるものについてはホスト名で記述を行なう必要があります。つまりホストレポートで表示される形式で指定を行なう必要があるということです。


複数の Analog が同時に DNS ファイルに書き込みを行なうと、そのファイルは壊れてしまう可能性があります。そのため、DNS WRITE モードで Analog を実行する場合、Analog は ロックファイルを作成して、それ以外の Analog が DNS LOOKUP モードで動作するようにします。ロックファイルの名前は以下のコマンドで変更することができます。
DNSLOCKFILE filename
もちろん、すべての Analog 、少なくとも同じ DNS ファイルを共有する Analog が同じロックファイルを使うように気をつけなければなりません。 繰返しになりますが、DNSLOCKFILE コマンドで指定されたファイル名にディレクトリ名が含まれていない場合、Analog は、コンパイル時に指定された場所にあるファイルを読み込もうとします。

Analog がクラッシュした時は、ロックファイルが残ってしまい、自分で削除しないといけない場合があるかも知れません。(Disclaimer: on some systems, race conditions may occasionally thwart this mechanism, but this is very unlikely.)

Analog は DNSファイルからエントリを削除するようなことはしません。DNSファイルは大きくなるばかりで、非常に大きくなることもあり得ます。そのため、ファイルの先頭部分を時々削除することが必要です。helper applications ページには、この作業を自動的に実行するためのプログラムが幾つか掲載されています。

古い検索結果をどの位の期間信用するかを 設定するために、二つのコマンドが用意されています。

DNSGOODHOURS 672
と記述すると、成功した検索も 672 時間(4週間)ごとに再確認されます。DNSBADHOURS を設定して、失敗した検索をある一定時間後に再検索させることもできます。デフォルトでは、DNSBADHOURS は、336(2週間)になっています。また、DNSGOODHOURS は、非常に大きな値になっています(そのため、成功した検索結果は、DNS ファイルに残っている限り再確認されることはありません)。

プラットフォーム(おそらく UNIX 系のみ)によってはDNSTIMEOUT というパラメータを設定することもできます。DNSサーバがここで設定した時間内に応答を返さなければ、DNSの検索は中止されます。

DNSTIMEOUT 0
にすると、この処理を抑止します。

最後に、デバッグ のためのコマンドも用意されています。 DEBUG +D とすることで、Analog が行なうすべての DNS 検索が表示されます。


通常 DNS ファイルに手作業で書き込みを行なうべきではなく、Analog を信頼してください。内部書式を知りたい方のために、ファイルのフォーマットを以下に示します。
timestamp IP_address name
timestamp はグリニッジ標準時で 1970 年から何分経過しているかの数字(つまり「UNIX 時間」を60で割ったもの)になります。name はホスト名を表しますが、名前が解決できなかった場合は、* が入ります。
Analog ホームページ

Stephen Turner
23 August 2003

Analog についての質問はanalog-help メーリングリスト をお使いください。 (訳注: 日本では analog-jp メーリングリスト をご利用ください)

[ 先頭 | 上へ | 前へ | 次へ | 目次 | 索引 ]