如何通过第二台计算机将流量从一个网络接口发送到另一个网络接口?

网络工程 pcap
2022-03-03 17:18:43

我有两台电脑,每台都有两个网络接口,都是ubuntu。我想实现波纹管架构:

在此处输入图像描述

我需要通过防火墙机器生成从接口 eth0:192.168.1.1 到接口 192.168.2.1 的流量。如何实现这个架构?

通过考虑在防火墙机器中使用 iptables linux 数据包过滤来过滤流量。

另一个考虑:将此架构用作 pcap 文件的复制器(一个接口上的客户端流量和另一个接口上的服务器流量通过防火墙机器)

4个回答

在此配置中,客户端机器将在其路由表中具有直接连接的路由,适用于两个网络。这些路由属于内核类型,并且始终优先于您可以设置的其他路由。

因此,无论您的配置是什么,在这台机器上发起的发往 192.168.2.1 的流量将始终被视为本地流量,并且永远不会通过 eth0 退出。

我怀疑您是否可以更改内核类型路由上的 Ubuntu 路由决策,但谁知道呢?

您可以使用一个软件,该软件将生成通过 eth0 发送它的流量,而与机器路由表无关

即使您这样做,答案也不会通过防火墙,因为答案将被定向到 192.168.1.1,这又是一个本地地址。

或者

您可以在客户端机器上设置一个虚拟机,并在此虚拟​​机中配置 192.168.2.1 的 IP 地址,然后在客户端机器上设置路由以通过 192.168.1.2 将流量发送到 192.168.2.1

关于 pcap 复制器,我不明白...

一种可能的解决方案是网络命名空间(基本上是路由器供应商称为 VRF 的 linux 等效项)。

每个网络命名空间在逻辑上都是网络堆栈的一个单独实例。因此,如果您将两个网络接口放在单独的网络命名空间中,那么它们将只能通过防火墙进行通信。

如果您希望能够在主网络命名空间中进行监控/注入,那么您可以将物理接口留在主网络命名空间中,并通过网桥和 veth 设备将它们连接到辅助网络命名空间。

您可以使用tcpreplay在特定接口上发送先前捕获的跟踪。

我认为您可以将 192.168.2.1 NAT 到防火墙设备上的不同地址,并将流量发送到该 IP 地址。

例如 NAT 192.168.2.1 到 10.1.1.1。

将流量发送到 10.1.1.1,以便防火墙将 IP 解开到 192.168.1.1 并将其发送到另一个接口上的客户端。