Tshark 无法在 WSL (Windows Subsystem Linux) 下启动 ((socket: 地址系列不受协议支持))

Tshark 无法在 WSL (Windows Subsystem Linux) 下启动 ((socket: 地址系列不受协议支持))

我正在参加一门计算机网络课程。出于学习目的,我想在 Windows 下的 WSL-Debian 中运行 tshark。

我使用以下命令成功安装它:sudo apt-get install tshark

我的版本使用tshark -v-->TShark (Wireshark) 3.4.10 (Git v3.4.10 packaged as 3.4.10-0+deb11u1)

sudo tshark -D输出几个“端口”(?)

但是当我使用简单命令时,tshark 它显示:“在‘eth0’tshark 上捕获:无法在接口‘eth0’上启动捕获会话(套接字:协议不支持地址系列).....”

在 WSL 上运行 tshark 是幻觉吗?我在某处读到过应该可以

-编辑:正在 WSL1 上工作

答案1

我喜欢 WSL,但在这种情况下它可能不是适合您的工具。出于不同的原因,WSL1 和 WSL2 都不适合运行任何数据包捕获:

  • 根据我的经验,WSL1 根本行不通。WSL1 中的网络接口不是“真正的”Linux 网络接口。WSL1 中的所有 Linux 系统调用都经过“转换层”,在那里它们与 Windows API 匹配。这样做有优点也有缺点。虽然,你真的使用 Linux 命令查看 Windows 网络接口(例如ip addr),这些是视窗网络接口,而不是 Linux。

    因此,只有“这么多”被翻译了。而且,恕我直言,WSL1 在如此多的限制下运行如此多的功能做得非常出色,但混杂网络捕获并不是被翻译的内容之一。

  • 另一方面,WSL2 是一个真实的Linux 内核运行在虚拟化环境。 tshark将运行并捕获来自虚拟网络和发往虚拟网络的数据包,但它不会看到(例如)WiFi 网络上您的手机和 Windows 主机之间的流量。WSL2 没有该 WiFi 网络的概念,因为它是在虚拟 Hyper-V 交换机后面进行 NAT 的。

无论如何,至少你应该为此切换到 WSL2。

但是,我建议,对于您的课程来说,更好的选择是使用 VirtualBox 之类的东西运行多个虚拟机(如果您使用的是 Windows Pro 或 Education,甚至可以使用 Hyper-V)。这将使您完全控制虚拟网络;WSL 不会给您这个功能。

相关内容