Windows 7でlocalhost宛のパケットをキャプチャする
WindowsではWiresharkで自端末間のパケットをキャプチャしようとしてもできません。
やり方はたくさんありそうですが、RawCapを使うのが簡単そうです。
RawCapを使う
RawCapをダウンロードします。インストール不要でそのまま実行できます。
コマンドプロンプトを管理者モードで実行し、RawCap.exeを実行して対象のインターフェースと保存先のファイル名を指定するだけです。
C:\Users\ADMIN\app\RawCap>RawCap.exe
Interfaces:
0. 9.68.246.238 ワイヤレス ネットワーク接続 Wireless80211
1. 169.254.139.141 ローカル エリア接続 Ethernet
2. 192.168.33.1 VirtualBox Host-Only Network Ethernet
3. 127.0.0.1 Loopback Pseudo-Interface 1 Loopback
Select interface to sniff [default '0']: 3
Output path or filename [default 'dumpfile.pcap']: test.pcap
Sniffing IP : 127.0.0.1
File : test.pcap
Packets : 778
Ctrl+cでパケットキャプチャを終了します。保存したファイルはWiresharkで開いて見ることができます。
IPv6の無効可
しかし、この方法では目的のパケットをキャプチャできませんでした。それはRawCapがIPv6に対応していないためでした。通常のアダプタは設定からIPv6を無効化することができますが、ループバックアダプターの設定は変更できないため、IPv6全体を無効にすることで、目的のパケットがキャプチャできました。無効化すると弊害もありそうなので、IPv4を優先にするだけでもいいと思います。
その他の方法
WiresharkのWikiによると、他にも以下の方法がありそうです。
- WinPcapの代わりにNpcapを使う
- Microsoft Loopback Adapterを使う
- ゲートウェイを通るようにルートを追加する
- PowerShellからlocalhost宛のキャプチャができるように設定する
参考にしたリンク
Loopback capture setup
RawCap を用いてWireshark で自マシン間の通信を解析する方法