- - PR -
自分から自分宛へのパケットのキャプチャ方法について
1
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-08-05 18:42
1台のマシンに、2つのアプリ(A,B)を稼動させて、AからBに、UDPで通信
させております。このUDPパケットをキャプチャする方法は何か ございますでしょうか? Etherealで試してみたのですが、他から自分宛、自分から他宛はとれるものの、 自分から自分宛はとれませんでした。 何か、設定を工夫すればとれるものでしょうか。 なお、2台のマシンにAとBを別々にいれるのは、環境条件が変わるのでNGです。 どなたかご存知の方、ご教授願います。 | ||||||||||||||||
|
投稿日時: 2005-08-05 19:13
以前試したときは、次のようになりました。 ・Windows 2000とXPでは、自分から自分宛のパケットはキャプチャできませんでした。 (Ethereal、Packetyzer、windumpで確認) ・Linuxだと問題なくキャプチャできました(Ethereal、tcpdumpで確認) これは、Windowsの制限ではないかと思います。 WinPcapのFAQの http://www.winpcap.org/misc/faq.htm#Q-13 によると:
ですので、自分はPCをもう1台用意するか、VirtualPCやVMwareで仮想PCを1台 用意してます。 | ||||||||||||||||
|
投稿日時: 2005-08-06 00:11
自分宛の時はループバックの方(127.0.0.1)で通信しますから、NICではキャプチャできないですね。
| ||||||||||||||||
|
投稿日時: 2005-08-09 11:19
Windowsでは無理なんですね。
1台で稼動する2つのサービス間の通信を確認したかったものですから。。。 ありがとうございました。 | ||||||||||||||||
|
投稿日時: 2005-08-09 12:28
良く知らないのですが "Microsoft Loopback Adapter Driver" を使えばできるのではないでしょうか?
| ||||||||||||||||
|
投稿日時: 2005-08-09 13:58
Windows XP Pro SP1 と Microsoft Loopback Adaptor で試してみました。
最初に Microsoft Loopback Adaptor をインストールします。特に再起動は不要。 (手順は http://support.microsoft.com/default.aspx?scid=kb;en-us;839013 ) IPは 169.254.25.129/255.255.0.0 (自動割り当てのまま修正せずに、かわりにipconfigで確認) お手製のHTTPサーバを169.254.25.129:81にbindし、netstat -a -nでLISTENを確認。 Active Connections Proto Local Address Foreign Address State TCP 169.254.25.129:81 0.0.0.0:0 LISTENING ブラウザでhttp://169.254.25.129:81/にアクセス。正常に通信できました。 そこで、Packetyzer 4.0.3 http://www.networkchemistry.com/products/packetyzer/ を使ってキャプチャを 試みたのですが、キャプチャできませんでした。 PacketyzerのCapture Optionは Adapter: MS LoopBack Driver Capture packets in promiscuous modeにチェック 他のAdapterも試してみましたが、いずれもキャプチャできませんでした。 残念。何か設定が足りないのか、なにかトリックがあるのかな‥‥。 | ||||||||||||||||
|
投稿日時: 2005-08-09 14:51
・libpcapやWinpcapを利用するキャプチャソフトは、実、仮想いずれかのNICを監視します。
・Windowsの場合、netstat -rnのinterfaceを見れば分かる通り、 自身宛の通信は自身の実インターフェイスじゃなく、 127.0.0.1なループバックインターフェイス経由で通信されます。 ・Windowsの場合、127.0.0.1に該当するNICが論理的に存在しない ・Linux等の場合も、自身宛のの通信はループバックインターフェイス(lo)経由で通信されます ・Linux等の場合、loというNICが仮想的に存在してます。 そんな違いがあるから、Windowsのループバックインターフェイスを監視する仕組みでも 見つけない限り出来ないし、少なくともそれはWinPcapでは仕様的に無理だ、といわれているわけです。 さらには、Microsoft純正のネットワークモニタですら取得不可能です。 他の独自のドライバを使ったキャプチャソフトで取得できる可能性は否定しきれないけど、 WinPcapで無理なものを他で実装できるのか、とも思います。 おとなしくそのアプリを2台のマシン間で通信させて使って、 その結果を流用するしか無いかと思います。
についても、それしか方法が無いなら、その環境条件の違いとやらをどうにかして フォローしていくしかないでしょう。
LoopbackAdapterは、論理的なNICに過ぎませんから、 物理的なNICを増設するのとなんら変わりませんし、 自身への通信がNICを経由しない状態は変わりませんから、 解決策にはならなくて正常です。 ----
Logical Intafaceでも動作してるような気が。動作保障無し、って意味なのかもしれないけど。 [ メッセージ編集済み 編集者: Mattun 編集日時 2005-08-09 16:02 ] |
1