我需要查询现有规则,以及能够轻松添加和删除规则。我还没有找到任何 API 来执行此操作。我缺少什么吗?
我最接近的解决方案是使用iptables-save | iptables-xml
用于查询并手动调用 iptables 命令本身来添加/删除规则。我考虑过的另一个解决方案是简单地从应用程序的数据库中重新生成整个规则集并刷新整个链,然后再次应用它。但我想避免这种情况,因为我不想丢弃任何数据包——除非有一种方法可以原子地做到这一点。我想知道是否有更好的方法。
如果有 C 语言的 API 就太好了;然而,由于我计划将其构建为独立的 suid 程序,因此以任何语言执行此操作的库也很好。
来自网络过滤器常见问题解答 http://www.netfilter.org/documentation/FAQ/netfilter-faq-4.html#ss4.5:
不幸的是,答案是:不。
现在您可能会想“但是 libiptc 呢?”。正如邮件列表中多次指出的那样,libiptc 是NEVER旨在用作公共接口。我们不保证稳定的接口,并且计划在 Linux 数据包过滤的下一个版本中将其删除。 libiptc 太低层,无法合理使用。
我们很清楚这样的 API 存在根本性的缺陷,我们正在努力改善这种情况。在那之前,建议使用 system() 或打开一个管道进入 iptables-restore 的标准输入。后者将为您提供更好的性能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)