リピーターハブを通過させることでのVLANタグ削除が成功しなかったので代わりにLinuxマシンでVLANタグを削除させることにした。tcpdumpでeth0でスイッチのミラーポートから流れてくるパケットを取り込みtcpreplay-editでvlanタグを削除したパケットをeth1から出力して解析機器に流す。実行にはroot権限が必要。
sudo tcpdump -i eth0 -w - | tcpreplay-edit --enet-vlan=del -t -i eth1 -
tcpreplay-editのオプションは–enet-vlan=delでIEEE802.1qのVLANヘッダを標準的なEthernetヘッダに変換、-t(topspeed)で可能な限り速く出力。パケットの解析はリアルタイムで行うのでtcpdumpで取り込んだパケットをファイルに落とさずそのままtcpreplay-editに渡すのがキモ。稼働させて気になるのがtcpreplay-editを起動するとCPUコアの1つの負荷がパケットの有無に関係なく100%に貼り付いてしまうこと。コマンドが並列処理では無いため最近のCPUコアを複数持つCPUでは他の処理に影響は無いケド長期間の連続運用に耐えられるかは微妙なところ。