メモ
- tcpdump - パケットを解析するためのソフトウェア
- libpcap - パケットを解析をするためのライブラリ
- WinPcap - libpcapのwindows版。WinDumpやWireShar等、多くのソフトウェアで使われている
- WinDump - tcpdumpのwindows向けの実装
- WireShark - GUIで操作するネットワークプロトコルアナライザー
windumpでローカルのパケットキャプチャをしたかったのでhttp://wiki.wireshark.org/CaptureSetup/Loopback を参考にとりあえず解決。
以下は翻訳もまじえてるのでなんか変な感じ。
windowsのTCP/IPスタックではループバックインターフェイスを実装していないのでwinpcapではローカルループバックアドレスの127.0.0.1をキャプチャできない。(127.0.0.1がインターフェイスを使ってループバックを実装してないのでキャプチャできないという意味かな)
そこでMicrosoft Loopback Adapter等のネットワークアダプター(インターフェイスと同義かな?)を追加するが、これで期待通りの結果が得られるかはわからない。
Windows 7 での追加方法はhttp://blogs.wankuma.com/hatsune/archive/2010/05/13/189032.aspxを参考にした。
このアダプターは擬似ループバックアダプターを提供するが127.0.0.1では動作しない。このアダプター独自にIPアドレスを割り当てて使用する。
ループバックアダプターはシステム上にひとつしかインストールしてはいけない。
このループバックアダプタでキャプチャするにはWinPcap 3.1以上の必要がある。
ループバックアダプターのプロパティを開き静的にIPアドレスとマスクを設定する。
Windows 7 の場合、コントロールパネル -> ネットワークとインターネット -> ネットワークと共有センター
で左カラムの「アダプターの設定の変更」からMicrosoft Loopback Adapterを選ぶ。
WireSharkのwikiだと、そのあとarpやrouteコマンドをつかってるんだけどこれは必要なのかわからない。
とにかくループバックアダプターが使えるならWinDump -D でインターフェイスが表示される。
自分の場合はアダプターをインストール後にPCを再起動しないと表示されなかった。
んで自分で書いたプログラムとかの通信をループバックアダプターに設定した静的なIPアドレス(127.0.0.1ではない)で行うんだけど、この辺はよくわからない。自分で設定したのと通信するときの実際のアドレスが若干違うというかなんというか。arp -a で表示されるアドレスに適当に通信してるんだけど。IPアドレスとサブネットマスクとかよくわかってないので。まぁとりあえずキャプチャできてるので今は良しとしよう。
他にも方法はあってrouteコマンドでなんかする(?)みたい。
上記はWinPcapを使ったソフトウェアの対処法なのでTDIなどのカーネルモードで動作する低レイヤーのライブラリを使ったソフトウェア(TDIMonとかLocal NetWork Monitor等)ならそのままlocalhost(127.0.0.1)をキャプチャできるはず。
0 件のコメント:
コメントを投稿