iptables c ++控制

我需要在一个C ++程序中控制进/出Linux机器的入站和出站stream量。 我可以从我的程序中调用iptables ,但我宁愿删除中间人,自己访问内核API函数。

我相信我需要使用libnfnetlink ,但是,我一直无法find任何API文档或示例程序。

我需要构build的规则相当简单 – 例如丢弃目标端口等于X的数据包等。我不打算写一个完整的防火墙应用程序。

任何人都可以提出更好的方法,或者提供一些文档或示例应用程序的链接? 我宁愿避免阅读iptables代码,但我想我可能不得不,如果我找不到更好的资源。

一年前,我有相同的要求和探讨。 但是在联系了一些开源的内核人之后,这就是我所了解的 –

iptables的内核API不是外部的,意思是说,它们不是记录的API。 从某种意义上说,API可以随时改变。 它们只能由iptables工具使用。 他们不应该被应用程序开发人员使用。

-satish

您通常不需要定期更改IP表规则(即经常在运行时)。 所以调用/ sbin / iptables应该没问题。

如果你正在尝试这样做,那么你可能需要查看一个包含自己智能的替代匹配或目标模块,或者使用NFQUEUE将数据包排队到一个用户空间程序中,该程序可以根据标准做出自己的决定随意更改(注意将太多数据包发送到用户空间,这是一个潜在的性能问题)

为什么不直接从iptables获取源代码并像这样做呢? 由于它是开源的….