- PR -

WAN のグローバルアドレスのクライアントマシンからの取得方法について

1
投稿者投稿内容
うえだ
ベテラン
会議室デビュー日: 2006/01/21
投稿数: 52
投稿日時: 2006-08-21 10:10
WAN のグローバルアドレスのクライアントマシンからの取得方法について調査中です。
WANの出口のローカルアドレスなら、linux ならtracerouteコマンドで取得出来ます。
しかし、traceroute情報では、そのグローバルアドレスの取得ができません。

外部にサーバを設定し、そこから情報を得るということも考えられるのですが、
ローカル環境だけで判断ができるであろうWANの出口のグローバルアドレスを
クライアントマシンから取得できる方法は無いのでしょうか?
ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 2006-08-21 11:02
こんにちは。

引用:

ローカル環境だけで判断ができるであろうWANの出口のグローバルアドレスを
クライアントマシンから取得できる方法は無いのでしょうか?


「ローカル環境だけで判断」という表現の解釈に自信が無いですが、ゲートウェイの WAN 側インターフェースに向けてグローバルアドレスを問い合わせる仕組みを作れば実現できます。

WAN の世界に問い合わせても良く、かつ、件の環境がドメイン名を取得しておられるなら、nslookup コマンドでアドレスを引く方法があります。
#DNS ラウンドロビンが構成されている環境では話がややこしくなりますが。

_________________
上本亮介 (ue) @ わんくま同盟
Microsoft MVP for VSTO (Jul 2008 - Jun 2009)
Hello Another World!
.NET 勉強会 / ヒーロー島
BackDoor
ぬし
会議室デビュー日: 2006/02/20
投稿数: 831
投稿日時: 2006-08-21 12:08
こんにちは。私あたりが回答するとなんとなく釈迦に説法のような気がします。 

引用:

うえださんの書き込み (2006-08-21 10:10) より:

ローカル環境だけで判断ができるであろうWANの出口のグローバルアドレスを
クライアントマシンから取得できる方法は無いのでしょうか?


考えられる方法としては、

1.固定グローバルIPへの契約移行。

2.シェルスクリプト等での仕組み作り
 スクリプトの中身は、
  リモートルータへのログイン
  show ip route等のコマンド発行
  (出力先をローカル環境内のサーバの共有ディスクにする)
  ログアウト

くらいが実現可能だと思われます。

訂正:人違い失礼しました。
こちらの「うえだ」様でなかったのですね。
http://www.atmarkit.co.jp/bbs/phpBB/search.php?term=&addterms=any&forum=all&search_user_id=259869&sortby=-1&searchboth=both&submit=Search
・・・未記入以外で同一HNが使えたのですか・・・


[ メッセージ編集済み 編集者: BackDoor 編集日時 2006-08-21 14:16 ]
うえだ
ベテラン
会議室デビュー日: 2006/01/21
投稿数: 52
投稿日時: 2006-08-21 13:33
ue様、BackDoor様 ありがとうございます。

やはり難しいのでしょうね。
スカイプではないのですが、その類の仕組を考えていまして、ルータの処理を利用する
二者間通信方式(P2Pアクセス方式)の簡易機能を考えています。

外部に対してアクセスしたら、クライアントマシンのからの経路とルータの使用ポートが決定します。
そのとき、そのルータのポートにタイムアウト以内にアクセスすればクライアントマシンに
(まったく別の)外部から接続できるということを利用したツールを考えているわけです。
そこで外部に対し、ルータのグローバルIPを伝えることが出来ないか、つまりルータのグローバルIP
をクライアントからわかる仕組は無いのかと悩んでいたわけです。

もちろん外部に問い合わせ可能なら、『診断くん』あたりを使い

$ wget http://taruo.net/e/

でREMOTE_ADDRを見るということも考えられるのですが、
さすがに私用のツールならいざ知らず、商用の可能性もある機能として診断くんを
使うのはさすがにまずいと思っています。
それかといって外部サーバを用意できるのなら、ルータのアクセスポイントの利用は
無意味ということになります。

そこでどうしようと悩んでいるわけです。
簡単ならさっさと提案し、終わろうと思っていたのですが、少し厄介さがわかってきましたね。

[ メッセージ編集済み 編集者: うえだ 編集日時 2006-08-21 13:36 ]
うえだ
常連さん
会議室デビュー日: 2006/05/22
投稿数: 34
投稿日時: 2006-08-23 08:50
おはようございます。

>うえださん

引用:
WAN のグローバルアドレスのクライアントマシンからの取得方法について調査中です。



つまり、PC から見たときに下の図にある「★」のアドレスを知りたい、ということでしょうか?

コード:
PC─────Router─────Router────・・・
             ↑★



でしたら、ping の Record Route Option を使う、方法もあると思います。具体的には traceroute した 3hop 目あたりに (もしくはネットワークの構成によっては適当に) 「ping -r 9 address」します。

Record Route Option を使うと Ping パケットの中に Hop したアドレスが記録されます。ですから、戻りのパケットが経由しているアドレスから、通常は分からない WAN 側のアドレスも知ることができます。

-r 9」は「9Hop 分まで、アドレスを記載する」という意味です。残念ながら、IPv4 の Option フィールド長の制限により、記録できるのは 9Hop が最大です。Record Route Option は ICMP の中で規定されているので、Windows / *NIX / Router を問わず、数多くの機器で可能だと思います。

「商用ツール」ベースではあまり考えておらず、さくっと回答してみたのでうえださんのニーズを満たしているか分かりませんが、参考になれば「同姓」として幸いです^^

ではでは、うえだ でした。
1

スキルアップ/キャリアアップ(JOB@IT)