有没有一种方法可以在不使用shell脚本的情况下以编程方式查询iptables?我没有使用shell脚本来运行iptables命令和grep输出的自由。是否有使用GNU C的本地(API)级别访问iptables?至少我想查询iptables的默认策略。如何以编程方式访问iptables?
我希望能使用/ proc文件系统,但我不认为它implemented yet.
有没有一种方法可以在不使用shell脚本的情况下以编程方式查询iptables?我没有使用shell脚本来运行iptables命令和grep输出的自由。是否有使用GNU C的本地(API)级别访问iptables?至少我想查询iptables的默认策略。如何以编程方式访问iptables?
我希望能使用/ proc文件系统,但我不认为它implemented yet.
所以它看起来没有任何办法,它已被Netfilter组织承认。
看到如此问题,How can I programmatically manage iptables rules on the fly?
正如我在评论说,通过ltrace
-ing iptables -L
,我富尔德,有一个iptables-dev
包在我的Debian/Sid与libipq和相关的库。你可能会想使用它。
我会用下PROC-fileystem的/ proc /净/ 看一看http://www.netfilter.org/documentation/FAQ/netfilter-faq-3.html#ss3.9,寻找PROC(在不同的问题)
嗯,他为什么shouln't看看iptables来获得的来源一个主意?我不明白为什么要使用strace来判断源代码是否包含所需的代码。
您可以用iptables
库接口称为libiptc
。
那怎么我创建了我的Perl接口iptables
:CPAN IPTables::libiptc
但libiptc
库只给你一个API基本链结构。 访问和解析个人规则是有点复杂,因为它取决于个人目标/匹配模块的共享库的dyn-loading
。
我在我的CPAN module的做法是,我曾与do_command()
从iptables.c
链接,这样做规则变化。
你需要知道的另一件事是:
单个iptables
呼叫,请执行以下操作:
libiptc
解析它因此,一个沉重的过程,如果你只是每次都做一个单独的更改。 但是你也可以使用它来获得优势,并且一次执行许多更改,并且通过/为内核显示为单个原子更改。
请注意,命令:'iptables-restore'使用智能方法在将更改提交到内核之前进行许多更改。 – NetOptimizer 2012-10-01 19:01:30
这种问题的常见答案是尝试“strace”或“ltrace”命令,例如, 'strace iptables -L' – 2011-12-22 11:24:03
可能重复的[我怎样才能以编程方式管理iptables规则?](http://stackoverflow.com/questions/109553/how-can-i-programmatically-manage-iptables-rules-在运行中) – 2015-03-06 23:24:43