除了 iptables 之外还有数据包管理实用程序吗? [关闭]

2024-05-06

我正在寻找一个 Linux 实用程序,它可以根据一组规则更改网络数据包的有效负载。理想情况下,我会使用iptablesnetfilter内核模块,但它们不支持通用有效负载修改:iptables会改变各种header字段(地址、端口、TOS 等),它可以match数据包内的任意字节,但它显然无法alter数据包内的任意数据。

内核模块将是一个很大的优势,因为效率是一个问题,但我很乐意探索任何其他可以完成工作的选项。

感谢您的想法!


迟来的更新:

我们选择使用NFQUEUE模块,这是 Robert Gamble 建议的 QUEUE 模块的最新实现。它看起来相当简单,具有安全性,允许我们的代码在用户空间而不是内核空间中运行。

如果我们只是想改变有效负载而不改变其大小,那么实现几乎是微不足道的。在这种情况下,我们定义一个iptables http://netfilter.org/projects/iptables/index.html规则为我们选择“有趣”的数据包并向它们发送NFQUEUE目标。我们编写一个回调函数来检查来自的数据包NFQUEUE,根据需要修改数据,并重新计算其 TCP 和 IP 标头中的校验和。

然而,我们的用例涉及向数据流中注入额外的字符。这具有增加 TCP 流中相应的 SEQ/ACK 编号的明显副作用,以及混淆数据流中的不那么明显的副作用。conntrack http://kalamazoolinux.org/presentations/20010417/conntrack.html模块足够多以至于它完全破坏了 NAT。之后lot经过研究、绞尽脑汁和实验,最权宜的解决方案是禁用这些特定数据包的连接跟踪(使用NOTRACK目标在raw表)并在我们的回调中处理它。保存你的西红柿并讨厌邮件;我一点也不自豪让您了解幕后情况,但这是在下一个冰河时代之前向客户提供可靠产品的唯一方法。这是一个好故事。但我真的很欣赏并分享你的衷心感受。

版本 2 将通过替换我们的回调和几个来利用我们新发现的启示iptables具有自定义 NAT 的规则和/或conntrack helper http://www.netfilter.org/documentation/HOWTO/netfilter-hacking-HOWTO-4.html#ss4.4。我们相信,当前的练习已经为我们提供了足够的经验来创建一个内核模块,该模块将有机地融入 netfilter 架构中,以解决我们遇到的问题。


我没用过,但是QUEUE http://www.wallinfire.net/files/netfilter-packets-alter.htmlnetfilter 目标看起来可能有效。它使用 nflink 套接字和注册到该套接字的用户空间应用程序来执行有效负载修改。

The libipq http://linux.die.net/man/3/libipq手册页包含有关如何使用它的详细信息,并提供了一个简单的示例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

除了 iptables 之外还有数据包管理实用程序吗? [关闭] 的相关文章

  • ioctl 命令的用户权限检查

    我正在实现 char 驱动程序 Linux 并且我的驱动程序中有某些 IOCTL 命令仅需要由 ADMIN 执行 我的问题是如何在 ioctl 命令实现下检查用户权限并限制非特权用户访问 IOCTL 您可以使用bool capable in
  • 执行命令而不将其保留在历史记录中[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在进行软件开发时 经常需要在命令行命令中包含机密信息 典型示例是将项目部署到服务器的凭据设置为环境变量 当我不想将某些命令存储在命令历史记
  • Linux 中 m 标志和 o 标志将存储在哪里

    我想知道最近收到的路由器通告的 m 标志和 o 标志的值 从内核源代码中我知道存储了 m 标志和 o 标志 Remember the managed otherconf flags from most recently received R
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • linux下无法创建僵尸进程

    嗯 我有一个奇怪的问题 我无法在我的项目中创建僵尸进程 但我可以在其他文件中创建僵尸进程 有简单的说明 int main if fork 0 printf Some instructions n else sleep 10 wait 0 r
  • 我们真的应该使用 Chef 来管理 sudoers 文件吗?

    这是我的问题 我担心如果 Chef 破坏了 sudoers 文件中的某些内容 可能是 Chef 用户错误地使用了说明书 那么服务器将完全无法访问 我讨厌我们完全失去客户的生产服务器 因为我们弄乱了 sudoers 文件并且无法再通过 ssh
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的
  • 从 ttyUSB0 写入和读取,无法得到响应

    我对 Linux tty 不太有经验 我的环境是带有丰富 USB 串行的 Raspbian 什么有效 stty F dev ttyUSB0 38400 cu l dev ttyUSB0 s 38400 cu to dev ttyUSB0作品
  • Windows 7 远程关机:访问被拒绝(5) [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我正在尝试强制从我的笔记本电脑远程关闭我的电脑 machine gt shutdown m 192 168 2 10 s f t 0 192 168
  • 使用Powershell在断开的网卡上设置静态IP,可能吗?

    我需要在 Windows 10 上未连接到网络时设置网卡的 IP 地址 我试过了 Set NetIPAddress InterfaceAlias Ethernet IPAddress 192 168 5 10 PrefixLength 24
  • 尽管 if 语句,Visual Studio 仍尝试包含 Linux 标头

    我正在尝试创建一个强大的头文件 无需更改即可在 Windows 和 Linux 上进行编译 为此 我的包含内容中有一个 if 语句 如下所示 if defined WINDOWS include
  • Squid+iptables:如何允许https通过并绕过Squid?

    今天基本上是从 Squid 和 iptables 开始的 google 是你的朋友 这东西会害死我的 我在 Ubuntu 9 04 服务器上设置了 Squid3 作为透明代理 当我使用代理盒作为我的默认网关等时 它工作得很好 此设置的 ip
  • 添加文件时运行 shell 命令

    我的 Linux 机器上有一个名为 images 的文件夹 该文件夹连接到一个网站 该网站的管理员可以向该网站添加图片 但是 当添加图片时 我想要一个命令来运行调整目录中所有图片的大小 简而言之 我想知道当新文件添加到特定位置时如何使服务器
  • 在 Mono 上运行 .Net MVC5 应用程序

    我正在 Windows 上的 Visual Studio 2013 中开发 Net 4 5 1 MVC5 应用程序 现在我想知道 是否可以在Linux Ubuntu 12 04 上运行这个应用程序 可以使用OWIN吗 Owin 可以自托管运
  • 配置tomat的server.xml文件并自动生成mod_jk.conf

    我在用apache 2 2 15 and tomcat6 6 0 24 on CentOS 6 4并希望使用 tomcat 服务器的功能 通过添加以下内容自动生成 mod jk conf 文件
  • Intel 上的 gcc 中的 _mm_pause 用法

    我参考过这个网页 https software intel com en us articles benefitting power and performance sleep loops https software intel com
  • Docker 容器与主机网络的网络性能非常慢

    我遇到了 Docker 容器和主机网络之间网络性能缓慢的问题 我在 Docker 论坛上提出了这个问题 但到目前为止还没有收到答案 Problem 设置 同一本地网络上的两台 Mac 第一个运行 MQTT 代理 mosquitto 第二个运
  • C修改printf()输出到文件

    有没有办法修改printf为了将字符串输出到文件而不是控制台 我尝试在互联网上查找一些内容 发现了类似的电话dup dup2 and fflush这可能与此有关 EDIT 也许我不清楚 问题是这是C考试问题 问题如下 解释一个通常将字符串输
  • 为什么opencv videowriter这么慢?

    你好 stackoverflow 社区 我有一个棘手的问题 我需要你的帮助来了解这里发生了什么 我的程序从视频采集卡 Blackmagic 捕获帧 到目前为止 它工作得很好 同时我用 opencv cv imshow 显示捕获的图像 它也工
  • 绕过 dev/urandom|random 进行测试

    我想编写一个功能测试用例 用已知的随机数值来测试程序 我已经在单元测试期间用模拟对其进行了测试 但我也希望用于功能测试 当然不是全部 最简单的方法是什么 dev urandom仅覆盖一个进程 有没有办法做类似的事情chroot对于单个文件并

随机推荐