9

:)

我希望能够在命中 IPTable 规则时运行系统命令,将远程设备的 IP 地址传递给它。

我环顾四周,但一无所获。我想到了 grepping 日志,但我预计会有很多流量..

任何帮助都会很棒!

谢谢

(如果有帮助,Ubuntu Linux 是我的首选平台)

4

3 回答 3

5

这是您的操作方法:

iptables -I FORWARD -p tcp --dport 80 -d a.b.c.d -j LOG --log-prefix="TRIGGER ME NOW !!!"

tail -f some-logfile | awk '/some-pattern/ {system("run-some-command")}'

应该足够直接并且应该能够处理大量流量,tail 命令应该足够快......只要确保文件不会增长太多。

于 2012-07-20T19:08:24.333 回答
1

用 knockd 代替。您只配置一个端口的端口敲门序列,然后告诉敲门您要运行的命令。通常它用于添加/删除 iptables 规则——在某个敲门序列之后打开一个服务(例如 ssh 访问),但我不明白为什么你不能在一个非常简单的之后使用它来运行命令,一个一个预期端口规则上的数据包。

在您的 Ubuntu 系统上安装“apt-get install knockd”,并且手册页中有一些示例,您可以轻松地适应这一点。

于 2012-07-20T19:44:57.590 回答
0

这实际上很容易。我们有两种方法可以做到这一点。如果您使用尾日志,那么 iptables 将不依赖于日志结果。

  1. 你可以使用NFQUEUE。如果你有时间,请阅读我的文章。 https://medium.com/@farizmuradov/useful-notes-about-nfqueue-80a2c271db1a 同一篇文章我添加了我的linkedin页面。

  2. 您可以在应用程序级别编写简单的路由器并将数据从 iptables 发送到侦听端口。在编程级别,您可以执行脚本并在某个端口再次发送数据。然后你可以通过 iptables 继续。

于 2018-08-01T20:35:28.210 回答