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

我昨天晚上想了一个项目,现在试图find解决scheme来实现它。

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

另外,我想将任何传入的数据包redirect到另一台机器,就像NAT一样 – 但是脚本保护连接。

我想这可能是一些防火墙黑魔法可行的。 可悲的是,我不是这个话题中的一员,所以我要求帮助和/或提示如何实现这样的事情。

如果您只需要跟踪TCP(而不是UDP)连接,则您的程序可以使用filter运行“tcpdump”副本,以仅监视设置了SYN标志的数据包。

这样做会使你的shell脚本成为一个更被动的监视器,而不是这些连接的关键path。 换句话说,如果你的程序停止或者被连接淹没,没有正常的networkingfunction会中断。

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

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