我正在参加一门计算机网络课程。出于学习目的,我想在 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 不会给您这个功能。