在具有相同 IP 地址的两个网络接口之间路由?

Joh*_*nst 3 networking linux router nat traffic-filtering

我想暂时监控/记录/分析进出我家的流量。我还想保持我当前的路由器配置不变。路由器是 WiFi 家用路由器,所以我不能轻易破解它。所以我正在考虑以下设置:

  • “剪断”家用路由器和宽带调制解调器之间的以太网电缆
  • “插入”一个带有两个以太网卡的 Linux 盒子,其中一个连接到宽带调制解调器,一个连接到家庭路由器。

如果我将两个以太网卡设置为网桥,我如何监控/记录/分析通过它的所有流量?

如果我将它设置为路由器,是否可以将相同的 IP 地址分配给两个以太网卡(我从宽带提供商那里获得的那个),并且来自一个 eth0 的流量在 eth1 上发送,反之亦然? 我将如何在该配置中监控/记录/分析?

我对以下事情感兴趣:

  • 我家与哪些 IP 地址通信(即我家中的所有设备总计),以及有多少流量流向那里?
  • 什么时候发生什么交通?
  • 正在使用哪些端口?
  • 我家里有一些“密封”的互联网设备(例如 WiFi 秤、AppleTV 等)。如果我发现他们做了一些我不希望他们做的事情——比如将数据发送到我不喜欢的 IP 地址——我可以使用这个配置来“修补”他们的网络流量,例如丢弃这些数据包或重新将它们路由到我控制的其他一些盒子。理想情况下,我可以在 DNS 级别(例如,通过将一些 DNS 查询路由到本地 DNS 服务器)和 IP 级别执行此操作。

当然,我可以在盒子上设置 NAT,但这会产生开销并改变我的网络配置。如果连续有两个 NAT,谁知道像 UPnP 之类的东西是否仍然有效。我知道如何用 NAT 做我想做的事情,但我希望有人可以指出一种更聪明的方法。

(这是从 serverfault.com 移过来的)

Law*_*ceC 5

在具有相同 IP 地址的两个网络接口之间路由?

这是一个荒谬的说法。IP 地址在网络中必须是唯一的 - TCP/IP 依赖​​于这一事实才能正确运行。

然而 -

在两个网络接口之间透明地桥接

听起来更像是你正在尝试做的事情。

我相信 Linux 支持透明桥接。连接到网桥的接口将起到交换机的作用。当然,您可以使用 Wireshark 或等效的命令行来嗅探通过桥的流量tshark。我从来没有用物理网卡做过(通常是 1 个物理网卡和类似 VPN 的虚拟适配器) - 这是我一直想做的一个实验(一个有 4 个网卡的旧盒子 - 转动它变成了一个软件开关),但它应该可以工作。 brctl是您要查看的命令。

因此,在“中间”Linux 机器中,您需要创建一个网桥,将您的网卡添加到其中,仅此而已。NIC 是网桥的一部分,不接收单独的 IP 地址(很像交换机上的端口)。就像交换机一样,它会在第 2 层而不是第 3 层转发流量,两边的设备都不知道中间有什么东西。

iptables,Netfilter 的 Linux 接口(负责路由、包过滤和包处理(修改))非常通用,您可能可以做一些等效的事情,即使它适用于第 3 层。

至于可以分析您捕获的流的软件,有很多工具可以做到这一点。这不是我深入研究的内容,但是一旦您能够使用 Wireshark 之类的工具捕获数据包,您就会有很多选择。