最近、接続の問題をトラブルシューティングしているときに、この質問が出てきました。OpenVOSシステムは、公開されているインターネットに面したサーバーに接続していました。サーバーの管理者は、"あなたのIPアドレスは何ですか?"という簡単な質問をしました。OpenVOSシステムは、RFC1918で定義されたプライベートインターネット範囲の一つである192.168.0.1のIPアドレスを持っています。このプライベートアドレスは、プライベートインターネットを離れてインターネット上に出るときに、NAT装置によってパブリックアドレスに変換されます。管理者はこのパブリックアドレスを知る必要がありました。OpenVOSのシステム管理者は知らなかったので、教えてくれるネットワーク管理者を探そうとスクランブルが起きていました。
あなたのIPアドレスを教えてくれるインターネットのウェブサイトはいくつもありますが、それらはすべてHTTPを使用しており、OpenVOSはそれらのサイトに接続するために使用できるウェブブラウザを持っていません。
再び同じ状況に陥らないようにするために、stcp_callsを使って以下のコマンドマクロを書きました。これを使ってWebサイトに接続し、そのサイトのルートWebページのテキストを表示します。表示は返ってきたデータを16進数でアスキーダンプしたもので、きれいなものではありませんが、読めるようになっています。他にもいくつかの制限があります。最初に、すべてのサイトが動作するわけではありません。多くのサイトでは、ブラウザがルートページのリンクをたどって実際にIPアドレスを取得する必要があります。それでもスクリプトで動作するサイトをいくつか見つけたので、スクリプトのコメントをチェックしてみてください。私はあなたが開始されたプロセスでマクロを実行することをお勧めします。
2 つ目の制限は、NAT デバイスがどのように IP アドレスを変換するかによるものです。いくつかのデバイスは、それが同じソースアドレスを持っているようにすべての送信トラフィックを変更しますが、他のデバイスは、内部アルゴリズムに基づいて特定のアドレスを選択して、ソースIPアドレスに使用するIPアドレスのセットを持っています。私が提案できるのは、マクロを複数回実行して、何が得られるかを確認することです。すべてのアドレスは同じサブネットワーク上にあるはずですが、そのサブネットワークが何になるかは予測できません。
& find_my_ip_address はここから始まります。
&
&バージョン1.00 10-12-06
& バージョン1.01 10-12-08に別のサイトを追加しました。
[email protected]
&
& このスクリプトはWebサイトに接続してルートページを取得します。多くのサイト
お客様のIPアドレスを表示するためには、ブラウザが
とルートページでIPアドレスを表示するようにしてください。これらのサイトはこの
とスクリプトを使用しています。以下のサイトをテストしてみましたが、現在のところ動作しています(といっても
& I make no promises for the future)。
&
& 出力は16進ダンプ/アスキー形式で表示されます。読みやすくはありませんが
IPアドレスを見つけることができるはずです。を実行することをお勧めします。
スクリプトを起動プロセスとして、出力を検索します。
&
サーバーノート
& ------ -----
& findmyip.com "is:"を検索します。
& whatismyipaddress.com 最後のバッファの非ヌルバイトの最後のセット
& www.ip-adress.com "is:"で検索すると、そうです。
& checkip.dyndns.org 最後のバッファの非ヌルバイトの最後のセット
&
本ソフトウェアは「現状有姿」で提供されており、保証も何もありません。
また、いかなる種類のサポートも行いません。著者は、いかなる黙示の保証も明示的に否認します。
また、商品性や特定の目的への適合性についても同様です。 この免責事項
によって提供されたいかなる種類の口頭での表明にもかかわらず、適用されます。
&作者、または他の誰でもいいです。
&
&begin_parameters
SERVER サーバ:文字列、req
終了パラメータ
&
if (process_type) = 'バッチ' &then &do
入力行なし、コマンド行なし、マクロ行なし。
終り
&
アタッチ入力
ステートップコール
ソケット
バフ編集
0 47 45 54 54 20 2F 20 48 54 54 50 2F 31 2E 30 0a 0a 0a
connect -name &SERVER& -port 80
送信 -len 16
ラベル AGAIN
.start_logging (process_dir)>recv
recv -len 1000
ストップログ
&set_string LINE (contents (process_dir)>recv 1)
.display_line &LINE&
if (index (contents (process_dir)>recv 1) ' 0 bytes') > 0 &then &goto QUIT
&if (index (contents (process_dir)>recv 1) 'bytes') = 0 &then &goto QUIT
バフダンプ
もう一度行く
ラベル QUIT
辞める
&
& find_my_ip_address はここまでです。
|