Linux:检测任意端口上的 TCP 连接并执行一些代码

Linux:检测任意端口上的 TCP 连接并执行一些代码

我昨晚有了一个项目的想法,现在正试图找到解决方案来实现它。

我需要一种方法来检测一台机器上任何端口的 TCP/IP 连接,如果检测到连接,我需要运行一些代码(最好是 shell 脚本)来获取一些信息,例如远程主机和连接端口。

此外,我想将所有传入的数据包重定向到另一台机器,就像 NAT 一样 - 但使用脚本来保护连接。

我猜想这可能可以通过一些防火墙黑魔法来实现。遗憾的是,我不是这方面的专家,所以我寻求帮助和/或提示如何实现这样的目标。

答案1

如果您只需要跟踪 TCP(而非 UDP)连接,您的程序可以运行带有过滤器的“tcpdump”副本以仅监控设置了 SYN 标志的数据包。

这样做会使您的 shell 脚本成为一个更被动的监控器,而不是处于这些连接的关键路径中。换句话说,如果您的程序停止或连接过多,正常的网络功能不会中断。

答案2

我认为当数据包与防火墙规则匹配时运行 shell 脚本是不允许的,也是不明智的。

不过,你可以看看iptables QUEUENFQUEUE目标。它们可以将数据包传递到用户空间。然后,您可以编写自己的应用程序以您喜欢的方式处理这些数据包。当然,您必须编写所需的规则,以便仅将感兴趣的数据包传递给您的用户空间应用程序。

相关内容