【发布时间】:2010-09-11 16:38:48
【问题描述】:
我需要查询现有规则,以及能够轻松添加和删除规则。我还没有找到任何用于执行此操作的 API。有什么我遗漏的吗?
我最接近的解决方案是使用iptables-save | iptables-xml 进行查询并手动调用 iptables 命令本身来添加/删除规则。我考虑过的另一个解决方案是简单地从我的应用程序的数据库中重新生成整个规则集并刷新整个链,然后再次应用它。但我想避免这种情况,因为我不想丢弃任何数据包——除非有一种方法可以原子地做到这一点。我想知道是否有更好的方法。
C 语言的 API 会很棒;但是,由于我打算将其构建到独立的 suid 程序中,因此使用任何语言的库也可以。
【问题讨论】:
-
显然可以从 XML 转到 iptables-restore
xsltproc iptables.xslt my-iptables.xml | iptables-restore。请参阅iptables-xml的联机帮助页。
标签: linux api kernel iptables netfilter