加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 如何以编程方式访问iptables?

发布时间:2020-12-14 00:34:18 所属栏目:Linux 来源:网络整理
导读:有没有办法我们可以在不使用 shell脚本的情况下以编程方式查询iptables?我没有自由使用shell脚本来运行iptables命令和grep输出.使用GNU C是否存在对iptables的本机(API)级别访问?至少我想查询iptables的默认策略. 我希望使用/ proc文件系统,但我不认为它是
有没有办法我们可以在不使用 shell脚本的情况下以编程方式查询iptables?我没有自由使用shell脚本来运行iptables命令和grep输出.使用GNU C是否存在对iptables的本机(API)级别访问?至少我想查询iptables的默认策略.

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

解决方法

您可以与名为libiptc的iptables库进行交互.

这就是我为iptables创建我的Perl接口的方法:CPAN IPTables::libiptc

但是libiptc库只为您提供了基本链结构的API.
访问和解析各个规则有点复杂,因为它依赖于dyn加载各个目标/匹配模块的共享库.

我在CPAN module中的方法是我从iptables.c链接了do_command()来进行规则更改.

您需要知道的另一件事是:

单个iptables调用,执行以下操作:

>将整个规则集从内核复制到用户空间
>用libiptc解析它
>执行一项或多项更改(通常只需通过iptables cmd进行一次更改)
>通过libiptc将其转换为内核blob格式
>将整个(新)规则集从用户空间复制到内核.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读