问题标签 [netfilter]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
9 回答
51362 浏览

linux - 如何以编程方式即时管理 iptables 规则?

我需要查询现有规则,以及能够轻松添加和删除规则。我还没有找到任何用于执行此操作的 API。有什么我想念的吗?

我最接近的解决方案是iptables-save | iptables-xml用于查询和手动调用 iptables 命令本身来添加/删除规则。我考虑过的另一个解决方案是简单地从我的应用程序的数据库中重新生成整个规则集并刷新整个链,然后再次应用它。但我想避免这种情况,因为我不想丢弃任何数据包——除非有办法自动执行此操作。我想知道是否有更好的方法。

C 中的 API 会很棒;但是,由于我打算将其构建到一个独立的 suid 程序中,因此可以使用任何语言执行此操作的库也可以。

0 投票
1 回答
191 浏览

linux - 在netfilter中编译多个文件

如何在内核模块中编译多个文件(调用其他文件中的函数的文件)?

0 投票
6 回答
14599 浏览

c - 来自 sk_buff 的 IP 地址

我正在编写一个注册 netfilter 钩子的内核模块。我正在尝试通过使用sk_buff->saddr成员来获取调用者的 IP 地址。有没有办法以人类可读的 iexxxx 格式获取 IP?

我找到了这个函数inet_ntop(),但它似乎在内核头文件中不可用。如何将 \xC0\xA8\x00\x01 转换为 192.168.0.1 ?

0 投票
3 回答
1092 浏览

linux-kernel - Netfiler 钩子没有被调用

我正在编写一个内核模块,它使用 netfilter 注册一个钩子。如果我 ssh/telnet 进入加载模块的机器,则不会调用处理程序。

处理函数:

正在为协议 8(外部网关协议)调用钩子。第二个 printk 永远不会被打印。我错过了什么吗?

0 投票
1 回答
751 浏览

linux - 内核中 sk_buff 的数量是否有限制

我需要在我的 NetFilter 挂钩中窃取一些 SKB,并将它们保留一段时间。

内核对我一次可以使用多少个 SKB 有限制吗?在我的内核模块中保存大约 100,000 个甚至更多的 SKB 会有什么后果?如果我可以有很多很多 SKB,我可以避免复制我的数据包两次。

问候, 丹尼斯

0 投票
4 回答
3207 浏览

linux - linux netfilter 将数据包内容传递给用户空间套接字应用程序

我想写一个Linux2.6 netfilter module,可以检查传入的IP数据包信息,例如dest-ip,source-ip。之后将这些信息传递给应用程序,一旦数据包到达 HOOK ,user space应用程序(即应用程序)将处理这些信息。Socket

我想尝试两种方法:

1. 在netfilter模块内部,做一个fifostruct line,每次数据包到达时hook,将数据包信息放入fifo。并在/proc/examplefilesystem 的帮助下。每次用户空间应用读取/proc/example文件时,都会从fifo头获取一个数据包信息。

我是kernel程序的新手,这个程序使我的内核崩溃了好几次。-_-!我想知道这种方式可能吗?

2. 在 netfilter 模块内部,制作一个 char 设备,用户空间应用程序从这个 char 设备中读取数据包信息。但是我仍然不知道如何确保尽快得到数据包,有什么办法当数据包到达netfilter钩子时,内核会向info用户空间应用程序发送一些信号,然后用户空间应用程序来选择数据包信息?

非常感谢你。

0 投票
2 回答
1261 浏览

linux - 你如何将被盗的数据包返回给 Netfilter

假设我从 Netfilter 截获了一个数据包,随后返回了 NF_STOLEN。在某些时候,我想将该数据包重新注入到它来自的 TCP 流中。我想从内核空间做到这一点。到目前为止,我一直无法找到一种方法来做到这一点。谢谢您的帮助。

0 投票
1 回答
622 浏览

android - Android SDK avd 模拟器内核不包含 netfilter/iptables

  1. 我在哪里可以找到包括 netfilter/iptables 在内的内核?
  2. 我可以假设大多数市场手机的内核中都包含 netfilter 吗?
0 投票
1 回答
322 浏览

c - 是否有任何带有 netfilter 的 c 演示?

我想通过netfilter转发数据包,所以我想获得一些c演示开始,谢谢

0 投票
2 回答
5289 浏览

networking - 使用 libnetfilter_queue 即时重写网络数据包

我正在尝试编写一个用户空间应用程序,它可以连接到操作系统的网络堆栈,嗅探飞过的数据包并编辑它感兴趣的数据包。

经过多次谷歌搜索,在我看来,最简单(但相当健壮)的方法(在任何平台上)是 Linux 的libnetfilter_queue项目。但是,除了有限的官方文档之外,我很难找到该项目的任何合理文档。它的主要特点(如第一个链接所述)

  • 从内核 nfnetlink_queue 子系统接收排队的数据包
  • 向内核 nfnetlink_queue 子系统发布判决和/或重新注入更改的数据包

重点是我自己的。我到底是什么意思?我试过修改提供的示例代码,但也许我误解了一些东西。代码在NFQNL_COPY_PACKET模式下运行,所以我收到了整个数据包——但我对它的修改似乎仅限于我自己的应用程序——正如人们所期望的那样,考虑到“复制”语义。

我的感觉是我注定要以NF_QUEUE某种方式利用它,但我还没有完全理解它。任何指针?

(如果有更简单的机制可以做到这一点,它也是跨平台的,我很想听听!)