![Iperf2 捕获接收到的混杂模式流量非多播](https://linux22.com/image/719009/Iperf2%20%E6%8D%95%E8%8E%B7%E6%8E%A5%E6%94%B6%E5%88%B0%E7%9A%84%E6%B7%B7%E6%9D%82%E6%A8%A1%E5%BC%8F%E6%B5%81%E9%87%8F%E9%9D%9E%E5%A4%9A%E6%92%AD.png)
我想捕获我 Iperf 服务器中我混杂监听的所有流量,即使我不是预期的 IP。
我知道你可以用多播地址来做到这一点,但我不想那样做:在 Wifi 上进行多播会导致吞吐量损失
我目前的设置是:3 台主机,每台都有自己的 wifi NIC,处于混杂模式。我想知道只需混杂监听就能收到多少个 UDP 数据包。
例如:
主机 1 正在运行 iperf 客户端:iperf -c 192.168.4.197 -B 192.168.4.142 -b 100M -u
主机 2 正在运行 iperf 服务器:iperf -s -u -B 192.168.4.197
主机 3 也正在运行 iperf 服务器:iperf -s -u -B 0.0.0.0
绑定地址是wlan0接口的本地地址。
我理解为什么主机 3 上的 iperf 不会将混杂监听的数据包读取为其自己的数据包:数据包中的 IP 不是本地 wlan0 接口的地址。
但是,主机 3 上的 iperf 有没有办法接收这些数据包?是使用 iptables/ebtables 还是使用 tcpdump 重写?
如果 iptables 可以将随机监听的数据包重新路由到任何本地 IP 地址,我就可以使用 iperf 捕获它。
我知道我可以在主机 3 上接收数据包 - 如果我执行 tcpdump,我可以看到主机 1 和主机 2 之间的数据包。
我知道数据包仅在开放(未加密)的 Wifi 网络上可见。我已按此方式设置。此网络仅用于测试目的,因此目前安全性无关紧要。
有什么想法吗?如果您需要更多信息,请告诉我。
编辑:将主机 3 绑定地址更改为 0.0.0.0。但是,这并没有解决我的问题。
答案1
您将iperf
Host3 上的 IP 绑定到 IP 192.168.4.121
,这样它只会接收发送到此 IP 的数据包。您可以尝试将其绑定到 IP 0.0.0.0
,将网络接口设置为混杂模式并检查。