【pcapファイルを使って、再送信できる】tcpreplayでキャプチャファイルを再生する方法
2021年6月5日、題名を変更したよ
今回はWireshark等でキャプチャしたpcapファイルから、トラフィックの再生をするツールを紹介をします。
例えばサーバー側でWiresharkを起動しておき、クライアントからアクセスした時のpcapファイルを保存しておけば、そのpcapファイルを使ってクライアントのアクセスを再現することができます。
pcapファイルを再生して何が嬉しいの?と思うかもしれませんが、ソフトウェア製品の検証や、NICの性能検証、Webサイトの性能検証等に役立つでしょう。
tcpreplayのインストール
pcapファイルからトラフィックを再生するツールは、tcpreplayです。インストールは、Ubuntu18.04であれば以下のコマンドを実行するだけです。
$sudo apt-get install tcpreplay
再生パケットの保存
Ubuntu18.04からWindows10にpingを実行して、そのパケットを再生してみましょう。
ターミナルを2つ立ち上げ、1つはecho requestのみのパケットをキャプチャ、もう一つはpingを5回Windows10に送信します。
タイプ=8がecho requestなので、tcpudmpのオプションを以下のようにすればecho requestのみのパケットがキャプチャできます。
#ターミナル1
$ sudo tcpdump -i br0 '( icmp[0] == 0x08 )' -w /home/demo/icmp5time.pcap
ターミナル2でpingを5回実行してパケットキャプチャを終了します。
#ターミナル2
$ sudo ping -c 5 192.168.1.2
図1が取得したicmp5time.pcapです。残念なことに他のecho request(8.8.8.8宛て)も混ざってしまいました。こんな時は、Wireshark達人への道 第六歩 マークって知ってた?で192.168.1.2宛てのパケットだけ抽出しましょう。
5個のパケットのみ選択して、ファイル名をicmp5time-marked.pcapとして保存してUbuntu18.04に保存します。
パケットの再生
準備が完了したので、echo request 5回を収録したpcapファイルを再生してみましょう。
Windows10側でWiresharkを起動し、表示フィルタに”icmp”と入力してください。最後に、Ubuntu側でtcpreplayを実行してください。
#オプション -iは、Ubuntuのインターフェイス名を指定
$ sudo /usr/bin/tcpreplay -i br0 /home/demo/icmp5time-marked.pcap
Windows10で起動したWiresharkで5つのecho requestが確認できるはずです。
今回は説明を簡易にするためにICMPでしたが、筆者はNetFlowのpcapファイルをリプレイするのに使っています。使い勝手が良いコマンドなのでぜひ活用してください。
最新記事 by 伊集院 (全て見る)
- 【暗号化通信(TLS)を復元できる】WIRESHARK達人への道 第二十五歩 暗号化通信(TLS)を復号する方法 - 1月 1, 2023
- 【詳細版】NSM(ネットワークセキュリティモニタ)、Zeekとは? - 9月 1, 2022
- 【簡易版】OSSネットワークセキュリティモニタZeekとは? - 8月 26, 2022