netfilter相关内容

在不使用环回网络的情况下将数据包转发到同一主机中的服务

我有这个 libnetfilter_queue 应用程序,它根据一些 iptables 规则从内核接收数据包.在直接解决我的问题之前,我提供了一个示例可行的代码和其他工具来设置测试环境,以便我们的问题定义和可能的解决方案可以更加准确和健壮. 以下代码描述了应用程序的核心功能: #include #include #include # ..
发布时间:2022-01-22 17:16:58 服务器开发

如何使用 netfilter 钩子在内核空间中回显数据包?

我想在内核空间回显一个数据包.我在这台机器上用端口 6000 运行一个回显服务器.现在客户端运行在另一台机器上,向回显服务器发送数据.现在,我想要做的是从内核空间回显数据包.我不想用数据包打扰服务器,它会从内核空间静默回响.我在下面展示我的代码: #include #include #include #include #include #include #include #include #in ..
发布时间:2022-01-04 22:46:50 服务器开发

打印 TCP 数据包数据

在 TCP 通信中,当数据包从以太网传输到网络 (IP) 层时,我想打印该数据包中存在的数据? 我在 linux 上工作. 我得到了一些信息,它可以在 linux 内核代码的帮助下完成,即在 linux NAT 防火墙代码中.但是我从哪里得到内核源代码呢?这些编码在哪里完成? 解决方案 如何从 TCP 数据包中打印数据 下面是一个完全符合您需要的示例:挂钩接收到的 TCP ..
发布时间:2021-12-28 12:29:33 其他开发

如何以编程方式动态管理 iptables 规则?

我需要查询现有规则,以及能够轻松添加和删除规则.我还没有找到任何用于执行此操作的 API.有什么我遗漏的吗? 我最接近的解决方案是使用 iptables-save |iptables-xml 用于查询和手动调用 iptables 命令本身来添加/删除规则.我考虑过的另一个解决方案是简单地从我的应用程序的数据库中重新生成整个规则集并刷新整个链,然后再次应用它.但我想避免这种情况,因为我不想丢弃 ..
发布时间:2021-11-15 00:19:53 服务器开发

使用 nfqueue/scapy 更改 TCP Payload

您好,我正在使用 nfqueue 和 scapy,我的目标是在我的 NFQUEUE 接收数据包,更改有效负载并重新发送它们. 我可以毫无问题地更改像 TTL 这样的字段,但是在更改有效负载时,我遇到了问题. 当我更改有效负载时,我使用wireshark 嗅探数据包,显然我发送了修改了有效负载的数据包,但服务器没有应答. 这是我的代码: #!/usr/bin/env python ..
发布时间:2021-09-04 19:52:01 Python

使用 scapy 和 netfilterqueue 进行修改

我使用 Python 2.7 和 scapy/netfilterqueue 运行 Debian. 我在我的 iptables 中添加了以下内容: iptables -A OUTPUT -p tcp --dport 5678 -j NFQUEUE --queue-num 1 这是我获取 HTTP 包和更改 URL 和端口的代码: #!/usr/bin/env python2.7从 sca ..
发布时间:2021-07-16 18:56:23 Python

如何获取有关无线net_devices的信息

我正在使用 NF_INET_PRE_ROUTING 挂钩的Linux内核模块中工作.在那个挂钩中,我需要知道所有net_devices的状态,尤其是无线设备.我可以从 net_device->标记中获取有关设备的一些信息,即 IFF_UP 是设备处于启动状态还是处于关闭状态.但是我需要更多有关无线 net_device 的信息. net_device是无线的还是有线的? 无线设备是否已连接 ..
发布时间:2021-05-30 18:36:49 其他开发

insmod:错误:无法插入模块kernel.ko:无效的参数-与内核模块的命名方案有关的错误

我正在使用C创建一个自定义内核模块,以挂接到我的Ubuntu盒上的netfilter操作.但是,我遇到了一个围绕module_param参数的问题.插入模块时,我尝试添加自定义字段,特别是在指定时,这将丢弃ICMP流量.使用标准的make文件可以很好地编译代码,但是当使用insmod插入文件时,出现错误 insmod:错误:无法插入模块kernel.ko:无效的参数 我正在使用命令 i ..
发布时间:2021-05-30 18:33:50 其他开发

libnetfilter_queue编程,我怎么知道哪个程序发送数据包?

我正在尝试为Linux创建一个应用程序级防火墙,但是现在我只能说ip地址,端口号之类的东西. 是否可以知道哪个程序发送了数据包?如果我不需要放置内核模块. 谢谢! 解决方案 目前不在.三种情况: 输入功能:到xtables运行时,套接字查找尚未完成 转发路径:显然没有本地套接字 (本地)输出路径:尽管存在提出了补丁程序,但没有引起足够的重视. ..
发布时间:2021-05-29 23:09:58 服务器开发

使用netfilter时如何从iph-> frag_offset访问IP_DF和IP_MF

我正在尝试编写一个netfilter模块,并希望访问IPHeader的字段,该字段表示DF和MF字段.我可以根据需要访问大多数其他字段,但我认为我必须从结构中的ipheader提取DF和MF字段并对其进行操作,例如,我想根据接收到的数据包的类型来设置或取消设置DF位. 以下结构具有"frag_off",我如何从中访问/重写IP_DF和IP_MF? struct iphdr { ..
发布时间:2021-02-14 21:10:08 其他开发

哪个进程拥有给定的端口(Linux内核)?

我正在为Linux编写一个简单的应用程序层防火墙(到目前为止,还算是我需要的东西).由于iptables的所有者模块还不够,我决定使用libnetfilter_queue来实现.在防火墙(C/C ++应用程序)的某个时刻,我需要决定是否接受具有给定src/dest端口的数据包.现在出现了问题.是否有任何简便的方法来知道哪个进程拥有给定的端口? 基本上,我需要一个功能 pid_t por ..
发布时间:2020-05-02 03:45:37 C/C++开发

如何在Linux内核中跟踪写系统调用?

我正在尝试这样做: 我正在通过开放源代码工具iperf从一台计算机向另一台计算机发送数据包,我想跟踪写入系统或发送呼叫. 如果有人可以指导Ftrace框架来跟踪系统调用,否则可以通过其他任何跟踪工具进行跟踪. 解决方案 困难的部分是确切地知道要追踪的内容,这样您就只能看到所需的结果,但是追踪本身非常容易: 首先,您的内核必须配置为CONFIG_FTRACE = y 确定要跟踪的 ..
发布时间:2020-05-02 03:40:57 服务器开发

sk_buff的IP地址

我正在编写一个注册了netfilter钩子的内核模块.我正在尝试通过使用sk_buff->saddr成员来获取呼叫者的IP地址.有什么方法可以获取人类可读的IP,即x.x.x.x格式? 我找到了函数inet_ntop(),但是它似乎在内核头文件中不可用.如何将\ xC0 \ xA8 \ x00 \ x01转换为192.168.0.1? 解决方案 在include/linux/kern ..
发布时间:2020-05-02 03:33:45 其他开发

NetFilterHook:显示接口名称

如何在内核空间中过滤和/或显示数据包所来自的接口的名称? 更具体地说,我希望在内核中打印出接口名称,例如eth0,wlan1等. 第二,如何仅从特定接口(例如eth0)过滤数据包? 解决方案 在hook函数中,有参数const struct net_device *in和const struct net_device *out. 您可以通过以下方式打印它: printk( ..
发布时间:2020-04-25 11:44:15 其他开发