【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

図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が確認できるはずです。

図2 Windows10側で起動したWiresharkの画面

今回は説明を簡易にするためにICMPでしたが、筆者はNetFlowのpcapファイルをリプレイするのに使っています。使い勝手が良いコマンドなのでぜひ活用してください。

(Visited 12,081 times, 1 visits today)
The following two tabs change content below.
【好きなもの】 インフラ技術が好き。古いものが好き。 【生きてきたフィールド】 システム運用、ソフトウェア開発、ミドルウェア検証、OSSサポート、プリセールスエンジニア、プロジェクトマネジメント 【このサイトでの役割】 サイト管理者。