【问题标题】:packet forwarding using iptables and nfqueue使用 iptables 和 nfqueue 进行数据包转发
【发布时间】:2014-12-16 19:29:58
【问题描述】:

我有 3 台机器 - A、B、C,我正在尝试做一些类似于 DNAT 的事情。

1) A 向 B 发送一个数据包。

2) B 收到数据包并修改后发送给 C。

在机器-B,我使用 iptables 和 nfqueue 来接收数据包。

iptables -I INPUT -p tcp -j NFQUEUE --queue-num 1

在机器 B 上,(1)我修改数据包(我们将修改后的数据包称为 new_packet),(2)我使用原始套接字将 new_packet 发送到机器 C,以及(3)丢弃原始数据包机器 B收到了。

我觉得这些步骤是多余的(这会增加延迟),应该有更好的方法。

是否可以将机器B收到的原始数据包破坏,然后简单地将数据包转发给C。

附: iptables 中的 DNAT 功能没有用,因为我需要做更多的修改。

【问题讨论】:

    标签: linux sockets networking iptables


    【解决方案1】:

    我知道这个问题是 7 个月前提出的,但恕我直言,处理任何数据包的最快方法是编写内核模块。在用户空间处理所有这些东西会大大降低速度。顺便说一下,在这种情况下没有零拷贝,所以再一次 - 内核模块是最好的解决方案

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-08
      • 2015-07-27
      • 1970-01-01
      • 1970-01-01
      • 2015-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多