🦔

WSLでのパケットキャプチャ

2022/06/03に公開

はじめに

Linuxのnetwork namespace内のインターフェイスをパケットキャプチャするにはどうすればいいんだろう?と思って以下の記事にssh越しにパケットキャプチャする方法を書きました。

https://zenn.dev/takai404/articles/972361207a86a8

WSL(Windows Subsystem for Linux)ならWindows用アプリケーションを直接起動できるのでWSLでnetwork namespaceが動作すれば試せるのでは?と思ってやってみました。

Windows用Wiresharkを起動

コマンドライン引数は前の記事を参照してください。
WSLでは/mnt/c/配下にWindowsのCドライブがあるのと、exeファイルもLinuxのバイナリと同様にファイル名を打鍵するだけで起動できます。

ip netns exec router1 tcpdump -U -i e1 -w - | /mnt/c/Program\ Files/Wireshark/Wireshark.exe -k -i - &

うまいことキャプチャできました。

Linux用Wiresharkを起動

WiresharkはLinux版も存在するので、それをWSLから起動してもいいのでは?と思いやってみるとあっさりと起動しました。

apt install wireshark
ip netns exec router1 wireshark -k -i e1 &

ただ、WSLでGUIアプリケーションを起動できるのはWindows11かららしいので、Windows10だとX Serverを用意しないといけないかもしれないです。

https://docs.microsoft.com/ja-jp/windows/wsl/tutorials/gui-apps

前提条件
  この機能にアクセスするには、Windows 11ビルド 22000 以降が必要です。
  vGPU 用のインストール済みドライバー
    Linux GUI アプリを実行するには、まず以下のシステムに一致するドライバーをインストールする必要があります。 これにより、仮想 GPU (vGPU) を使用して、ハードウェア アクセラレータによる OpenGL レンダリングのメリットを享受できます。
    WSL 用 Intel GPU ドライバー
    WSL 用 AMD GPU ドライバー
    WSL 用 NVIDIA GPU ドライバー

参考:動作確認を行った環境について

>wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-22.04    Running         2
# cat /etc/issue
Ubuntu 22.04 LTS \n \l

# uname -r
5.10.16.3-microsoft-standard-WSL2
# dpkg -l frr iproute2 wireshark
要望=(U)不明/(I)インストール/(R)削除/(P)完全削除/(H)保持
| 状態=(N)無/(I)インストール済/(C)設定/(U)展開/(F)設定失敗/(H)半インストール/(W)トリガ待ち/(T)トリガ保留
|/ エラー?=(空欄)無/(R)要再インストール (状態,エラーの大文字=異常)
||/ 名前           バージョン      アーキテクチ 説明
+++-==============-===============-============-===========================================================>
ii  frr            8.1-1ubuntu1    amd64        FRRouting suite of internet protocols (BGP, OSPF, IS-IS, ..>
ii  iproute2       5.15.0-1ubuntu2 amd64        networking and traffic control tools
ii  wireshark      3.6.2-2         amd64        network traffic analyzer - meta-package

Discussion