ネットワークを流れるパケットをキャプチャするためのソフトウェアにWiresharkというソフトがあります。
このWiresharkでは、送信元と宛先が同じ端末のパケット(自ホストに対して送信したパケット)をキャプチャすることができません。
これを取得できるようにする方法について説明します。
以下は、Windows XP SP2での操作内容です。
(Vista等では異なる可能性があります)
まず、最初に自ホストに対して送信したパケットがWiresharkでキャプチャ出来ないことを確認します。
自ホストに対してパケットを送る単純な方法は、localhostやループバックアドレス(127.0.0.1)に対してpingを送る方法です。
以下、操作手順です。
このWiresharkでは、送信元と宛先が同じ端末のパケット(自ホストに対して送信したパケット)をキャプチャすることができません。
これを取得できるようにする方法について説明します。
以下は、Windows XP SP2での操作内容です。
(Vista等では異なる可能性があります)
まず、最初に自ホストに対して送信したパケットがWiresharkでキャプチャ出来ないことを確認します。
自ホストに対してパケットを送る単純な方法は、localhostやループバックアドレス(127.0.0.1)に対してpingを送る方法です。
以下、操作手順です。
1.Wiresharkを起動する。
2.パケットキャプチャをスタートする。
1)メニューバーから[Capture]-[Options]を選択する。
2)[Capture File]の[File]にキャプチャファイルを指定する。
3)[Start]ボタンを押す。
→パケットキャプチャをスタートします。
3.コマンドプロンプトを起動する。
4.以下のコマンドを入力する。
この時、[protocol]列にICMPというプロトコルのキャプチャがないはずです。
これにより、自ホストに対して送信したパケットがキャプチャされていないことが確認できます。
次にキャプチャできるようにする方法です。
コマンドプロンプトで、以下の操作を行います。
1.ルーティングテーブルを確認する。
※表示された結果のGatewayとInterfaceが、ループバックアドレス(127.0.0.1)のNetwork Destination(IPアドレス)を確認します。
2.ネットワークアダプタのMACアドレスを確認する。
※表示された結果のPhysical Addresssの部分を確認します。
3.ARPテーブルに自端末のネットワークアダプタの情報を登録する。
例)IPアドレスが「192.168.0.1」、MACアドレスが「00-00-00-00-00-00」を登録する場合
4.ルーティングテーブルに自端末の情報を登録する。
例)IPアドレスが「192.168.0.1」を登録する場合
これで、自ホストに対して送信したパケットをキャプチャすることができるようになります。
試しに自ホストのIPアドレスを使って、pingを送信してみましょう。
ICMPのパケットがキャプチャできていると思います。
【補足事項】
・ARPテーブルは、一時的に利用するIPアドレスとMACアドレスの対応表です。
・ARPテーブルは、相手ホストとの通信が確立した際に対応表が追加され、一定期間経過すると情報が破棄されます。
端末のシャットダウンや再起動を行った場合、ARPテーブルは完全にクリアされます。
・自ホスト宛てに送信したパケットをキャプチャする場合は、起動する度に上記の設定を行う必要があります。
バッチファイルを作成する等して簡単に設定できるようにしておくと楽です。
・localhostは、ループバックアドレス(127.0.0.1)に関連付けられています。
これは、hostsファイルに記載されています。
・hostsファイルは、「システムドライブ:\Windows\System32\drivers\etc」にあります。
→通常は、「C:\Windows\System32\drivers\etc」に存在します。
2.パケットキャプチャをスタートする。
1)メニューバーから[Capture]-[Options]を選択する。
2)[Capture File]の[File]にキャプチャファイルを指定する。
3)[Start]ボタンを押す。
→パケットキャプチャをスタートします。
3.コマンドプロンプトを起動する。
4.以下のコマンドを入力する。
C:\< ping localhost
この時、[protocol]列にICMPというプロトコルのキャプチャがないはずです。
これにより、自ホストに対して送信したパケットがキャプチャされていないことが確認できます。
次にキャプチャできるようにする方法です。
コマンドプロンプトで、以下の操作を行います。
1.ルーティングテーブルを確認する。
C:\< route print
Network Destination Netmask Gateway Interface Metric
:(中略)
xxx.xxx.xxx.xxx 255.255.255.255 127.0.0.1 127.0.0.1 20
:(省略)
※表示された結果のGatewayとInterfaceが、ループバックアドレス(127.0.0.1)のNetwork Destination(IPアドレス)を確認します。
2.ネットワークアダプタのMACアドレスを確認する。
C:\< ipconfig /all
:(省略)
Description . . . . . . . . : xxxxxxxxxxxxxxxxxxxx
Physical Address . . . . . . : XX-XX-XX-XX-XX-XX
Dhcp Enabled . . . . . . . . : Yes(またはNo)
:(省略)
※表示された結果のPhysical Addresssの部分を確認します。
3.ARPテーブルに自端末のネットワークアダプタの情報を登録する。
C:\< arp -s [IPアドレス] [MACアドレス]
例)IPアドレスが「192.168.0.1」、MACアドレスが「00-00-00-00-00-00」を登録する場合
C:\< arp -s 192.168.0.1 00-00-00-00-00-00
4.ルーティングテーブルに自端末の情報を登録する。
C:\< route add [IPアドレス] mask 255.255.255.255 [IPアドレス]
例)IPアドレスが「192.168.0.1」を登録する場合
C:\< route add 192.168.0.1 mask 255.255.255.255 192.168.0.1
これで、自ホストに対して送信したパケットをキャプチャすることができるようになります。
試しに自ホストのIPアドレスを使って、pingを送信してみましょう。
ICMPのパケットがキャプチャできていると思います。
【補足事項】
・ARPテーブルは、一時的に利用するIPアドレスとMACアドレスの対応表です。
・ARPテーブルは、相手ホストとの通信が確立した際に対応表が追加され、一定期間経過すると情報が破棄されます。
端末のシャットダウンや再起動を行った場合、ARPテーブルは完全にクリアされます。
・自ホスト宛てに送信したパケットをキャプチャする場合は、起動する度に上記の設定を行う必要があります。
バッチファイルを作成する等して簡単に設定できるようにしておくと楽です。
・localhostは、ループバックアドレス(127.0.0.1)に関連付けられています。
これは、hostsファイルに記載されています。
・hostsファイルは、「システムドライブ:\Windows\System32\drivers\etc」にあります。
→通常は、「C:\Windows\System32\drivers\etc」に存在します。
- カテゴリ:
- ネットワーク