有没有一种方法可以不用shell脚本就能以编程方式查询iptables?我没有使用shell脚本运行iptables命令和grep输出的权限。是否存在对使用GNU C的iptables的本机(API)级别访问?至少我想查询iptables的默认策略。
我希望使用/proc文件系统,但我不认为它是implemented yet.
发布于 2011-12-23 06:48:11
所以它看起来没有任何方法,并且已经被Netfilter小组确认了。
请参阅SO问题,How can I programmatically manage iptables rules on the fly?
发布于 2012-08-01 18:38:35
您可以与名为libiptc.的iptables库进行交互
这就是我如何创建到iptables的Perl接口:CPAN IPTables::libiptc
但是libiptc库只为您提供了一个基本链结构的应用编程接口。访问和解析各个规则要复杂一些,因为它依赖于dyn-loading各个目标/匹配模块的共享库。
在我的CPAN module中,我的方法是从iptables.c链接到do_command(),以进行规则更改。
你需要知道的另一件事是:
单个iptables调用执行以下操作:
libiptc将整个规则集从内核复制到userspace
因此,如果您每次只做一次更改,那么这将是一个繁重的过程。但您也可以利用这一点,一次执行许多更改,并让这些更改显示为内核的单个原子更改。
发布于 2011-12-22 19:27:41
正如我在ltrace-ing iptables -L的评论中所说的那样,我发现我的Debian/Sid上有一个包含libipq和相关库的iptables-dev包。您可能想要使用它。
https://stackoverflow.com/questions/8603134
复制相似问题