【问题标题】:Drop sniffed packet on matching content丢弃匹配内容的嗅探数据包
【发布时间】:2015-05-08 10:10:04
【问题描述】:

我在 C 中使用 rawsockets 制作了一个数据包嗅探器,它可以嗅探指定端口上的所有传出 UDP 流量。

我现在想丢弃与特定负载匹配的某些传出 UDP 数据包,以便可以使用不同的负载重新发送它们。

在这种情况下,嗅探器将不再有用,因为它似乎无法控制它检测到的网络流量。

有没有办法在不修改内核代码的情况下丢弃与 Linux 系统上的特定负载和端口匹配的数据包?我的嗅探器对我的目标毫无用处吗?

【问题讨论】:

    标签: c++ c linux sockets networking


    【解决方案1】:

    变体 1:创建一个TAP 接口(如果原始接口是一种以太网或模拟接口)并将网络地址移动到它。对到达物理接口的数据包进行分析,然后如果允许通过,则将其发送到该 TAP 接口的进程侧。反之亦然,网络堆栈发送到TAP接口的数据包由程序获取并注入物理接口。

    变体 2:使用 iptables 子系统的 NFQUEUE 目标。所有满足规则条件的数据包都将传递给用户空间分析器进行检查,如果允许通过,则重新注入。从某种意义上说,这更好,因为可以将所有数据包中只需要的子集定向到您的过滤器。

    【讨论】:

    • iptables 中使用NFQUEUE 似乎是最优雅的解决方案。正是我想要的。 Here's a useful sample.
    猜你喜欢
    • 2019-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-29
    • 1970-01-01
    • 1970-01-01
    • 2015-04-02
    相关资源
    最近更新 更多