我想暂时监控/记录/分析进出我家的流量。我还想保持当前路由器配置不变。该路由器是 WiFi 家庭路由器,因此我无法轻易破解它。因此,我考虑以下设置:
- “剪断”家用路由器和宽带调制解调器之间的以太网电缆
- “插入”一个带有两张以太网卡的 Linux 盒,其中一个连接到宽带调制解调器,另一个连接到家庭路由器。
如果我将两张以太网卡设置为网桥,我该如何监控/记录/分析通过它的所有流量?
如果我将其设置为路由器,是否可以为两个以太网卡(从宽带提供商处获得的)分配相同的 IP 地址,并让来自 eth0 的流量通过 eth1 发送出去,反之亦然?我如何在该配置中监控/记录/分析?
我对以下事物感兴趣:
- 我的房子与哪些 IP 地址通信(即我房子里的所有设备总计),以及有多少流量通过那里?
- 哪些交通情况是什么时候发生的?
- 哪些端口正在被使用?
- 我家里有一些“密封”的互联网设备(例如 WiFi 秤、AppleTV 等)。如果我发现它们做了一些我不想让它们做的事情——比如将数据发送到我不喜欢的 IP 地址——我可以使用此配置来“修补”它们的网络流量,例如丢弃这些数据包或将它们重新路由到我控制的其他盒子。理想情况下,我可以在 DNS 级别(例如通过将一些 DNS 查询路由到本地 DNS 服务器)和 IP 级别执行此操作。
当然,我可以在盒子上设置 NAT,但这会产生开销并更改我的网络配置。如果连续有两个 NAT,谁知道 UPnP 等东西是否还能正常工作。我知道如何用 NAT 做我想做的事情,但我希望有人能给我指出一种更聪明的方法。
(此内容来自 serverfault.com)
答案1
具有相同 IP 地址的两个网络接口之间的路由?
这是无意义的陈述。IP 地址在网络中必须是唯一的 - TCP/IP 依赖这一事实才能正常运行。
然而 -
透明地桥接两个网络接口之间
听起来更像您正在尝试做的事情。
我相信 Linux 支持透明桥接。连接到桥接器的接口将像交换机一样工作。当然,您可以使用 Wireshark 或它的命令行等效程序嗅探通过桥接器的流量。tshark
我从未使用物理 NIC 做过这件事(通常是 1 个物理 NIC 和类似 VPN 的虚拟适配器)——这是我很久以来一直想做的一个实验(一个带有 4 个 NIC 的旧盒子——将其变成软件交换机)但它应该可以工作。 brctl
是您要查看的命令。
因此,在“中间”Linux 机器中,您需要创建一个网桥,将 NIC 添加到其中,就这样。NIC 是网桥的一部分,不会接收单独的 IP 地址(很像交换机上的端口)。像交换机一样,它将在第 2 层而不是第 3 层转发流量,并且两边的设备都不知道中间有什么东西。
iptables
,Linux 的 Netfilter 接口负责路由、数据包过滤和数据包修改,它非常灵活,您可能可以用它做一些等效的事情,即使它在第 3 层工作。
至于可以分析捕获流的软件,有很多工具可以做到这一点。我并没有深入研究过这个问题,但是一旦你能够使用 Wireshark 之类的工具捕获数据包,你就有很多选择。