配置 Linux 转发引擎

配置 Linux 转发引擎

我正在尝试将我的 Debian 机器配置为简单地将接口 eth0 上的所有传入网络数据包转发到 eth1。我的硬件设置如下:

发送方机器 A (eth0) ----> (eth0) 转发机器 B (eth1) ----> (eth0) 接收方机器 C

机器 A 使用原始套接字简单地生成不同类型的网络数据包(UDP、TCP、ICMP),并通过接口 eth0 发送它们,该接口直接连接到机器 B 的 eth0 接口。

现在,我希望机器 B 将其在 eth0 上接收到的每个传入数据包简单地转发到 eth1,而不管目标 IP 地址如何,以便机器 C 最终将在其接口 eth0 上接收这些数据包。我之所以想做这个,是因为大学里的一个实验。

但是,虽然B机器的默认网关设置为C机器的IP,但是报文并没有被转发。有趣的是,从机器 A 到机器 C 的直接 ping 工作正常(路由设置正确)。另外,/proc/sys/net/ipv4/ip_forward 设置为 1,并且接口 eth0(机器 B 上的“接收”接口)设置为混杂模式,因此目标 MAC 地址不应该成为问题。

有人知道为什么这不起作用吗?有趣的是,如果机器 B 运行 FreeBSD 而不是 Debian,它就可以正常工作......

一些细节:

  • 机器 B 是 Raspberry Pi 2,第二个接口是 USB 以太网适配器
  • 所有发送的数据包都是 IPv4

预先非常感谢您!

相关内容