小编gut*_*ead的帖子

如何盲目地将所有数据包从一个接口转发到另一个接口?

我想将在 eth0 上接收到的所有 L3 数据包转发到另一个接口,让我们调用 m0(m0 是一个自定义接口,绑定到具有独特 L2 帧机制的自定义硬件)以及反向 m0->eth0。例如,m0 的示例实现可以是 SLIP 接口。我想最好使用用户空间工具来实现这一点。

棘手的部分是我不想路由。我不在乎源或目标 ipv4 地址是什么,也不在乎 MAC 地址是什么。我只想盲目地从接口 0 中抓取所有内容并将其铲到接口 1 上(反之亦然),而无需修改 L3 数据包。

我知道通过 eth0 传入的所有内容(在本用例中)都是适合以太网 mtu 1500 的 ipv4 UDP 数据包,没有碎片。此外,它需要处理多播寻址的数据包。

我担心实现这一目标的唯一方法是使用以混杂模式驻扎在界面上的自定义软件。我想避免这种情况,因为很难避免进入我将数据包循环回其来源的场景。

例如,

  1. 轮询 eth0 和 m0 以查看是否收到数据
  2. 在 eth0 收到的数据包 A
  3. 在 eth0 捕获并发送到 m0 的数据包 A
  4. 在 m0 接收到的数据包 A
    1. 数据包 A 已经被处理了,但是软件怎么知道呢?我将不得不保留某种以前处理过的数据包的表格......讨厌。

至于在 Linux 中的设置,我所做的所有研究都使我使用以下组合,但我认为它们不适合这个用例:

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -i eth0 -o m0 -j ACCEPT
iptables -A FORWARD -i m0 -o eth0 …
Run Code Online (Sandbox Code Playgroud)

linux gateway

7
推荐指数
1
解决办法
2255
查看次数

标签 统计

gateway ×1

linux ×1