问题标签 [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 投票
1 回答
662 浏览

linux-kernel - 从内核符号表中获取符号地址

现在如果我想使用这个函数,我需要初始化一个指向这个函数的指针。

为了能够做到这一点,我需要函数的地址。

我已经看到,从用户空间我可以读取/proc/kallsyms以获取符号的地址。他们是否存在任何类似的机制,我可以读取符号表以从内核空间中提取符号的地址?

0 投票
1 回答
3268 浏览

linux - 如果 Netfilter 钩子都指定 NF_IP_PRI_LAST 或 NF_IP_PRI_FIRST,它们的顺序是什么?

如果我编写了几个内核模块,并且在所有模块中都指定它们应该是第一个(或最后一个)调用的 netfilter 钩子,那么它们实际上会以什么顺序被调用?

实验性地,我制作了两个模块,insmod以两种不同的顺序编辑它们——但它们给出了相同的结果,这意味着存在一些不只是“先到先得”的子顺序。(它也不是按字母顺序排列的......)

0 投票
2 回答
971 浏览

linux - iptables:什么是链?

我已经阅读 iptables 几个小时了,但我仍然不明白他们所说的“链”是什么。我在文档和教程中随处可见这个词,但他们在说什么对我来说仍然很模糊。什么是链子?

0 投票
0 回答
289 浏览

hook - 使用 netfilter 框架在 OUTPUT 链中实现 DNAT

我正在尝试在 OUTPUT 链中实现 DNAT,但数据包没有到达目标目的地。我正在尝试做的是,例如,如果消息发送到 192.168.56.17,我将其更改为 192.168.56.1,并且此 ip 在我的网络中,因此应该发送。

代码是:

有谁知道问题出在哪里。我的猜测是优先级,但即使 NF_INET_PRI_FIRST 也不起作用。

非常感谢您的意见和帮助。

托马斯

0 投票
2 回答
685 浏览

networking - 如何获取有关无线网络设备的信息

我正在使用NF_INET_PRE_ROUTING钩子的 Linux 内核模块中工作。在那个钩子中,我需要知道我所有的 net_devices 的状态,特别是无线设备。我可以从net_device->flagsIFF_UP设备启动或关闭中获取有关设备的一些信息。但我需要更多关于无线的细节net_device

  1. net_device 是无线/有线的吗?
  2. 无线设备是否连接到无线接入点?
  3. 如果是,哪个无线接入点(接入点名称)?
  4. 与该设备关联的网关地址(我认为,我需要从路由表中获取此地址?)。
0 投票
0 回答
1751 浏览

linux - 在 iptables 中匹配 PREROUTING 链中的数据包

我正在尝试配置一个防火墙,它将根据数据包的内容阻止或更改数据包的目的地,具体来说 - 对某些主机上某些页面的 HTTP 请求(是的,这是另一个“伟大的防火墙”)。我对阻塞没有问题,它很简单:

问题在于更改目标地址。只有在 nat 表中的 PREROUTING 链中才有可能。但规则如

只是永远不会触发。我试图在 mangle 表中标记 PREROUTING 链中的数据包并检查 nat/PREROUTING 中的标记。数据包被标记但从未在 nat/PREROUTING 中捕获。

我做错了什么(当然,除了这整件事)?

0 投票
0 回答
1162 浏览

iptables - nfq_create_queue():资源暂时不可用

当我尝试在我的应用程序中创建多个 nf_queue 时出现错误“资源暂时不可用”。我找不到有关此错误的任何文档。

我正在尝试使用 NFQUEUE 实现多线程应用程序。我打开库并在主线程中绑定到 AF_INET 并尝试创建多个 NFQUEUE。它正在成功创建 5 个队列,下一个 nfq_create_queue 返回“资源暂时不可用”。

我也试过 sleep(1); 在调用 nfq_create_queue() 之间但得到了同样的错误。

全局变量:

主线程:

工作线程:

0 投票
1 回答
2337 浏览

c - 网络过滤队列数

我正在用 netfilter 的钩子编写一些内核模块。钩子函数:

我可以指定队列的数量吗?如果没有,我怎么能找到这个号码?

0 投票
1 回答
1370 浏览

linux - 了解 netfilter REDIRECT 目标

只是在玩 netfilter REDIRECT-Target 。我想知道使用“--to-ports”(复数)时如何更改目标端口。

第一场比赛/命中 2800 -> 2900 ?
第二场比赛/命中 2800 -> 2901 ?
第三场比赛/命中 2800 -> 2902 ?

在我的测试中,唯一使用的端口是第一个: 2900 。在这种情况下,范围参数“--to-ports”让我感到困惑。原始端口会影响范围内正在使用的端口吗? 使用“--to-ports”指定范围,使用哪个端口?“--to-port” 也可以,但手册页中没有提到。

谢谢。

0 投票
0 回答
2057 浏览

c - sem_wait() 挂起

我有一个多线程应用程序。这是主要功能的一部分:

这是线程的功能:

此应用程序始终适用于 PC。我已将此应用程序放在某些路由器上(固件中的 linux 内核版本为 2.6.30)。它有时工作正常,但有时工作不正确。:)

线程有时会挂起调用sem_wait(&sem);,但信号量值高于零(1、2、3 等)。为什么?

PS 我试图检查它的返回值sem_wait(&sem);但没有得到它。