首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何以编程方式访问iptables?

如何以编程方式访问iptables?
EN

Stack Overflow用户
提问于 2011-12-22 19:21:13
回答 5查看 7.5K关注 0票数 4

有没有一种方法可以不用shell脚本就能以编程方式查询iptables?我没有使用shell脚本运行iptables命令和grep输出的权限。是否存在对使用GNU C的iptables的本机(API)级别访问?至少我想查询iptables的默认策略。

我希望使用/proc文件系统,但我不认为它是implemented yet.

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-12-23 06:48:11

所以它看起来没有任何方法,并且已经被Netfilter小组确认了。

请参阅SO问题,How can I programmatically manage iptables rules on the fly?

票数 3
EN

Stack Overflow用户

发布于 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

  • Parse,然后进行一次或多次更改(通常只需通过iptables将其更改为内核

  • 格式,通过libiptc

  • 将整个(新)规则集从用户空间复制到内核。

因此,如果您每次只做一次更改,那么这将是一个繁重的过程。但您也可以利用这一点,一次执行许多更改,并让这些更改显示为内核的单个原子更改。

票数 6
EN

Stack Overflow用户

发布于 2011-12-22 19:27:41

正如我在ltrace-ing iptables -L的评论中所说的那样,我发现我的Debian/Sid上有一个包含libipq和相关库的iptables-dev包。您可能想要使用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8603134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档