TIPS - Toshiki's IP Seeker SMTP サーバを用いたグローバルIPアドレスの取得 ■前口上 世の中、自宅マシンのサーバ公開だのなんだので、グローバルIPア ドレスを取得するニーズというのは根強くあります。かく言う私も、現 在、自宅の余剰マシンをサーバとして世間に公開しています。 そして多くの場合、セキュリティ上の問題や、あるいは自宅内に複数 端末を接続する必要から、プロバイダとの接続点にルータを設置し、プ ロバイダからもらったグローバルIPはルータに割り当て、マシンには ローカルなIPアドレスを割り当てる事になリます。そのため、マシン そのもののIPアドレスを取得しても、それは今ここで必要としている グローバルIPではない、という問題が生じます。さらに、大抵プロバ イダからは DHCP でIPアドレスをもらうことになるため、そのアドレ スは常に変動する可能性があるわけです。 私の場合、今までは自作の NiCe というツールで、ルータそのものか らグローバルIPを取得していました。この場合の欠点として、例えば ルータとプロバイダの間で障害が発生しても、ルータそのものが稼動し ていれば、正しくない(というか、古い)IPアドレスを取得してしま う、という問題がありました。この問題を解決するには、ルータよりも 向こうの世界からデータを取得する必要があります。 もちろん、今まで通り NiCe を使い続けることも可能ですが、このツ ール、HTTP を使ってデータを取得する汎用のデータ取得ツールです。そ こで今回、IPアドレスの取得という目的にに特化し、SMTP サーバから データを取得するツールを作成してみました。目的が特化したことによ る副次的な効果として、設定項目もいくらか少なくなり、僅かに使いや すさも増したかもしれません。 ■動作環境 Windows95/98/Me/2K/XP 汎用(のはず)。 ただし、十分なテストは行なわれておりません。 なお、レジストリは一切使っておりませんので、単にファイルを削除す るだけでアンインストール可能です。 ■使用法 データ取得ボタンを押すと、指定した SMTP サーバにアクセスし、応 答コードより自分のグローバルIPを取得します。ポート番号は通常、 25を指定しますが、サーバが特殊なポート番号を要求する場合、その 値を半角数字で記入してください。 注意しなければならないのは、サーバによってはグローバルIPを返 さないことがあるということです。もし、自分の通常使っているサーバ がグローバルIPを返さないような場合には、作者までご相談ください。 取得結果をファイルに出力するときには、出力ファイル名を指定しま す。出力ファイル名欄が空の場合、ファイル出力は行いません。 定期的にIPアドレスの取得を繰り返す場合は、データ取得間隔を秒 単位で入力します。このときは、データ取得ボタンを押すとボタンの表 示が「実行中」になり、定期的にデータを取得する状態になっているこ とがわかります。データ取得間隔欄が空の場合、1回データを取得する だけです。 もし、データを取得した結果が前回に取得した結果と異なるなら、コ マンド名欄で指定したコマンドを実行させることができます。ここで指 定できるコマンドは、exe ファイルだけでなく、バッチファイルを指定 することもできます。 プログラム終了時には、各欄に入力した値などはプログラム本体が格 納してあるディレクトリの ini ファイルに保存されます。ini ファイル が存在していないときは新規に作成されます。次回起動時には、この保 存された値を参照し自動的に各種設定を行います。 なお、ウィンドウを最小化させると、タスクトレイに常駐します。常 駐時は、タスクトレイのアイコンをクリックすることによりウィンドウ を再表示します。 以下のコマンドラインオプションがあります。 -R 起動後、自動的にデータ取得を開始します。 ini ファイルからの情報を取得できなかった項目に関して は、適当な値が設定される為、試験実行が成功するまでは このオプションを指定しないことを強くお勧めします。 オプションは大文字・小文字ともに許容します ■ソースに関して Delphi version4 Standard で作成しております。 ■著作権、再配布等 一応、著作権は主張させていただきます。以下、本プログラム、およ びドキュメントを総称して「本プログラム等」と表します。 ・本プログラム等の著作権は としき が有します。 ・本プログラム等を使用することにより、使用者の予期しない影響が あっても、作者はなんらの保証および補償をいたしません。 ・本プログラム等の転載、再配布、販売等は、事前に著作権者の許可 を求めなければ、自由にできます。 ^^^^^^^^^^^^ ただし、事前に許可を求められた場合は、原則として全てお断りい たします。なお、事後報告は歓迎いたします。 ^^^^^^^^^^ もちろん書籍、雑誌、CD−ROMへの収録も自由です。 なお、転載等を長期間継続するような場合でも、定期的な連絡・報 告などは不要です。また、1つのバージョンについて1ヶ所の転載 先に対し3回以上連絡があった場合、当該バージョンの転載中止を 要請することがあります。 ・著作者人格権の同一性保持権に基づき、本プログラム等の改変を自 由に行うことを許可します。というよりも、積極的な改変をお願い いたします。 ただし、改変した本プログラム等では、著作者人格権の氏名表示権 に基づき、原作者の著作権表示を消去することを要請します。 なお、差し支えなければ改変した部分をご連絡いただければ、次の バージョンからその改変内容を反映させていただきたいと思います。 ・転載等の際は、入手した本プログラム等のファイル構成に対し変更 を加えずに再配布してください。ただし、本プログラム等に改変を 加えた場合はこの限りではありません。 ・作者は、このプログラムに不備があっても、それを訂正する義務を 負いません。しかし、努力はするでしょうから連絡をお願いします。 ・仕様拡張に関する意見は、私の技術と体力と気力が許す範囲で対応 したいと思います。 ■改版履歴 version 0.10 2004-07-20 ・とりあえず動く version 0.11 2004-11-30 ・IPアドレスが変化した場合でも、起動後の最初に取得した値が残っ てしまうというとんでもない大バグを除去 version 0.12 2005-05-20 ・データ取得間隔の単位を秒から分に変更