我的目标是能够捕获家庭网络上的所有数据包。本地机器生成的或从互联网接收的每个数据包。(不,我不是想监视任何人。这是我的家庭网络,我希望捕获数据包,用于开发网络监控软件。正如他们所说,我只是想“吃自己的狗粮”。是的,我明白将所有流量强制到单个端口的性能限制。)
但我不知道如何/在哪里可以访问所有数据包。我有一个带端口镜像的 8 端口交换机。我试过这个:
CableModem = Switch = WifiRouter = { Machines-On-My-Network }
||
MonitoringMachine
大部分Machines-On-My-Network
都是 wifi 专用的,但有几个直接连接到 WifiRouter。此配置工作正常。但是,显然我的监控机器只能看到从我内部网络中的机器到互联网或反之亦然的数据包(使用 NAT 地址);我没有得到仅限内部的流量。
我也尝试过这个配置:
CableModem = WiredRouter = Switch = WifiRouterInAccessPointMode = { Machines-On-My-Network }
||
MonitoringMachine
这会在“有线路由器”(实际上是禁用了无线电的旧 wifi 路由器)中启用 DHCP,并在 wifi 路由器中禁用 DHCP。我在这里说的是“InAccessPointMode”,但我的路由器配置没有实际的接入点模式——我只是禁用了 DHCP——这有什么不同吗?但无论如何,配置效果不佳。我的大多数内部机器都可以通过 DHCP 获取地址,但有几台启用了 wifi 的机器没有收到 DHCP 提供,原因我无法确定(监控机器上的 wireshark 显示路由器之间发送了 DHCP 提供,但在终端机器的 wifi 端口上没有显示 DHCP 提供)。此外,其他机器上的 DHCP 租约没有像我预期的那样自动续订,原因不明。整个事情都很不稳定,我的 SO 抱怨网络不工作,所以我恢复了。
但即使这种方法更加可靠,我相信我仍然不会看到数据包之间我本地网络中启用 wifi 的机器或 wifi 路由器有线端口之间的机器。所以我不知道这是否真的比第一个配置有很大改进。我只会看到内部-外部流量加上 DHCP 和内部广播流量。
我曾想过,也许可以用 OpenWRT 或 DD-WRT 来镜像一切直接连接到 wifi 路由器的有线端口,但我仍然不完全确定我是否能够访问所有数据包(我不太熟悉 wifi 路由器的内部架构)。另外,我没有使用过 OpenWRT/DD-WRT,现在也没有安装它们,但如果我认为我可以实现预期的结果,我愿意去学习。
不管怎样,我目前拥有所有带有库存固件的 TP-Link 网络设备(TC-7610 电缆调制解调器、用于“有线”路由器的 TL-WDR3600、TL-SG108E 镜像交换机和 Archer C50 wifi 路由器)。
如果有必要,我甚至愿意再买一台设备。但我找不到任何声称支持镜像所有流量的 wifi 路由器。
有没有什么办法可以访问我所有的本地流量?