- PR -

自分から自分宛へのパケットのキャプチャ方法について

1
投稿者投稿内容
kbr
会議室デビュー日: 2003/10/16
投稿数: 14
投稿日時: 2005-08-05 18:42
1台のマシンに、2つのアプリ(A,B)を稼動させて、AからBに、UDPで通信
させております。このUDPパケットをキャプチャする方法は何か
ございますでしょうか?

Etherealで試してみたのですが、他から自分宛、自分から他宛はとれるものの、
自分から自分宛はとれませんでした。
何か、設定を工夫すればとれるものでしょうか。

なお、2台のマシンにAとBを別々にいれるのは、環境条件が変わるのでNGです。

どなたかご存知の方、ご教授願います。
ちいにぃ
大ベテラン
会議室デビュー日: 2002/05/28
投稿数: 244
投稿日時: 2005-08-05 19:13
引用:
1台のマシンに、2つのアプリ(A,B)を稼動させて、AからBに、UDPで通信
させております。このUDPパケットをキャプチャする方法は何か
ございますでしょうか?

Etherealで試してみたのですが、他から自分宛、自分から他宛はとれるものの、
自分から自分宛はとれませんでした。
何か、設定を工夫すればとれるものでしょうか。


以前試したときは、次のようになりました。
・Windows 2000とXPでは、自分から自分宛のパケットはキャプチャできませんでした。
(Ethereal、Packetyzer、windumpで確認)
・Linuxだと問題なくキャプチャできました(Ethereal、tcpdumpで確認)

これは、Windowsの制限ではないかと思います。

WinPcapのFAQの http://www.winpcap.org/misc/faq.htm#Q-13 によると:
引用:
Q-13: Does WinPcap support the loopback device?
WinPcapはループバックデバイスをサポートしていますか?

A: No. Only physical interfaces are supported. This is a limitation of Windows and not of WinPcap.
いいえ。物理インターフェイスだけをサポートしています。
これはWindowsの制限であり、WinPcapの制限ではありません。


ですので、自分はPCをもう1台用意するか、VirtualPCやVMwareで仮想PCを1台
用意してます。
zousan
大ベテラン
会議室デビュー日: 2004/11/09
投稿数: 129
投稿日時: 2005-08-06 00:11
自分宛の時はループバックの方(127.0.0.1)で通信しますから、NICではキャプチャできないですね。
kbr
会議室デビュー日: 2003/10/16
投稿数: 14
投稿日時: 2005-08-09 11:19
Windowsでは無理なんですね。

1台で稼動する2つのサービス間の通信を確認したかったものですから。。。

ありがとうございました。
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2005-08-09 12:28
良く知らないのですが "Microsoft Loopback Adapter Driver" を使えばできるのではないでしょうか?
ちいにぃ
大ベテラン
会議室デビュー日: 2002/05/28
投稿数: 244
投稿日時: 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も試してみましたが、いずれもキャプチャできませんでした。

残念。何か設定が足りないのか、なにかトリックがあるのかな‥‥。
Mattun
ぬし
会議室デビュー日: 2004/08/10
投稿数: 1391
投稿日時: 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台のマシン間で通信させて使って、
その結果を流用するしか無いかと思います。
引用:

なお、2台のマシンにAとBを別々にいれるのは、環境条件が変わるのでNGです。


についても、それしか方法が無いなら、その環境条件の違いとやらをどうにかして
フォローしていくしかないでしょう。

引用:

良く知らないのですが "Microsoft Loopback Adapter Driver" を使えばできるのではないでしょうか?


LoopbackAdapterは、論理的なNICに過ぎませんから、
物理的なNICを増設するのとなんら変わりませんし、
自身への通信がNICを経由しない状態は変わりませんから、
解決策にはならなくて正常です。


----
引用:
引用:

A: No. Only physical interfaces are supported.




Logical Intafaceでも動作してるような気が。動作保障無し、って意味なのかもしれないけど。

[ メッセージ編集済み 編集者: Mattun 編集日時 2005-08-09 16:02 ]
1

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