我昨天晚上想了一个项目,现在试图find解决scheme来实现它。
我需要一种方法来检测TCP / IP连接到一台机器上的任何端口,如果检测到连接,我需要运行一些代码(最好是一个shell脚本),获取远程主机和连接端口等信息。
另外,我想将任何传入的数据包redirect到另一台机器,就像NAT一样 – 但是脚本保护连接。
我想这可能是一些防火墙黑魔法可行的。 可悲的是,我不是这个话题中的一员,所以我要求帮助和/或提示如何实现这样的事情。
如果您只需要跟踪TCP(而不是UDP)连接,则您的程序可以使用filter运行“tcpdump”副本,以仅监视设置了SYN标志的数据包。
这样做会使你的shell脚本成为一个更被动的监视器,而不是这些连接的关键path。 换句话说,如果你的程序停止或者被连接淹没,没有正常的networkingfunction会中断。
当数据包与防火墙规则匹配时,我认为不允许或明智地运行shell脚本。
不过,你可以看看iptables的 QUEUE和NFQUEUE目标。 他们可以将数据包传递给用户空间。 然后,您可以编写自己的应用程序,以您喜欢的方式处理这些数据包。 当然,你必须编写所需的规则,只将有趣的数据包传递给你的用户空间应用程序。