草庐IT

c - Netfilter 内核模块拦截数据包并记录它们

我有一个基本代码。此代码丢弃并记录所有传入和传出的数据包。我想写一个netfilter内核模块来拦截数据包并将它们记录在内核日志中。它应该能够检测不同的(以1或2为例)基于TCP的侦察数据包。该模块应检测这些数据包并记录到内核日志中。我不想过滤数据包,只是识别并记录它们。#include#include#include#includestaticstructnf_hook_opsnfho;//structholdingsetofhookfunctionoptions//functiontobecalledbyhookunsignedinthook_func(unsignedinthoo

c - Netfilter 内核模块拦截数据包并记录它们

我有一个基本代码。此代码丢弃并记录所有传入和传出的数据包。我想写一个netfilter内核模块来拦截数据包并将它们记录在内核日志中。它应该能够检测不同的(以1或2为例)基于TCP的侦察数据包。该模块应检测这些数据包并记录到内核日志中。我不想过滤数据包,只是识别并记录它们。#include#include#include#includestaticstructnf_hook_opsnfho;//structholdingsetofhookfunctionoptions//functiontobecalledbyhookunsignedinthook_func(unsignedinthoo

linux - iptable 规则丢弃有效负载中具有特定子字符串的数据包

我正在尝试编写规则来丢弃任何数据包,无论它是传出、传入还是正在转发,它在TCP或UDP有效负载中具有特定的子字符串。我应该怎么做? 最佳答案 您需要一个启用了Netfilter“Stringmatchsupport”的编译内核。那你可以iptables-AINPUT-mstring--algobm--string"test"-jDROPiptables-AOUTPUT-mstring--algobm--string"test"-jDROPiptables-AFORWARD-mstring--algobm--string"test"-

linux - iptable 规则丢弃有效负载中具有特定子字符串的数据包

我正在尝试编写规则来丢弃任何数据包,无论它是传出、传入还是正在转发,它在TCP或UDP有效负载中具有特定的子字符串。我应该怎么做? 最佳答案 您需要一个启用了Netfilter“Stringmatchsupport”的编译内核。那你可以iptables-AINPUT-mstring--algobm--string"test"-jDROPiptables-AOUTPUT-mstring--algobm--string"test"-jDROPiptables-AFORWARD-mstring--algobm--string"test"-

linux - 用于在内核空间中捕获数据包的缓冲区大小?

查看tcpdump的手册页here如果缓冲区已满,内核似乎可以丢弃数据包。我想知道是否1)大小是可配置的和/或2)我在哪里可以看到我的发行版的大小?来自手册页(便于引用):数据包``被内核丢弃''(这是由于缺少缓冲区空间而被丢弃的数据包数量,如果操作系统报告该信息,则运行tcpdump的操作系统中的数据包捕获机制应用程序;如果没有,它将报告为0)。 最佳答案 您可以检查几个区域以减少被内核丢弃的数据包:查看配置/proc/sys/net/core/netdev_max_backlog和/proc/sys/net/core/netde

linux - 用于在内核空间中捕获数据包的缓冲区大小?

查看tcpdump的手册页here如果缓冲区已满,内核似乎可以丢弃数据包。我想知道是否1)大小是可配置的和/或2)我在哪里可以看到我的发行版的大小?来自手册页(便于引用):数据包``被内核丢弃''(这是由于缺少缓冲区空间而被丢弃的数据包数量,如果操作系统报告该信息,则运行tcpdump的操作系统中的数据包捕获机制应用程序;如果没有,它将报告为0)。 最佳答案 您可以检查几个区域以减少被内核丢弃的数据包:查看配置/proc/sys/net/core/netdev_max_backlog和/proc/sys/net/core/netde

c++ - 如何调试丢包?

我编写了一个C++应用程序(在Linux上运行),它提供大约400kbps的RTP流。对于大多数目的地来说,这工作正常,但有些目的地会出现数据包丢失的情况。有问题的目的地似乎有一个共同的较慢的连接,但对于我发送的流来说它应该足够快。由于这些目的地能够接收其他应用程序的类似RTP流而不会丢失数据包,因此我的应用程序可能有问题。我已经验证了一些事情:-在tcpdump中,我看到所有RTP数据包都在发送机器上-有一个UDP发送缓冲区(我尝试了64KB到300KB之间的大小)-RTP数据包大部分保持在1400字节以下以避免碎片发送应用程序可以做什么来最大程度地减少数据包丢失的可能性以及调试这种

c++ - 如何调试丢包?

我编写了一个C++应用程序(在Linux上运行),它提供大约400kbps的RTP流。对于大多数目的地来说,这工作正常,但有些目的地会出现数据包丢失的情况。有问题的目的地似乎有一个共同的较慢的连接,但对于我发送的流来说它应该足够快。由于这些目的地能够接收其他应用程序的类似RTP流而不会丢失数据包,因此我的应用程序可能有问题。我已经验证了一些事情:-在tcpdump中,我看到所有RTP数据包都在发送机器上-有一个UDP发送缓冲区(我尝试了64KB到300KB之间的大小)-RTP数据包大部分保持在1400字节以下以避免碎片发送应用程序可以做什么来最大程度地减少数据包丢失的可能性以及调试这种

linux - 是否可以同时在 iptables 中接受和排队数据包

我也想接受数据包并分析它们。数据包应该转到其预期的应用程序,并且队列中也应该有一个副本 最佳答案 当您对数据包进行排队时,可以使用libnetfilter_queue库通过c程序检索数据包。在那里你可以在回调函数中分析数据包后发出判决NF_ACCEPT。 关于linux-是否可以同时在iptables中接受和排队数据包,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1277492

linux - 是否可以同时在 iptables 中接受和排队数据包

我也想接受数据包并分析它们。数据包应该转到其预期的应用程序,并且队列中也应该有一个副本 最佳答案 当您对数据包进行排队时,可以使用libnetfilter_queue库通过c程序检索数据包。在那里你可以在回调函数中分析数据包后发出判决NF_ACCEPT。 关于linux-是否可以同时在iptables中接受和排队数据包,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1277492