我需要在C ++程序中控制进出linux框的入站和出站流量。我可以打电话 iptables
从我的程序中,但我更倾向于切断中间人并自己访问内核API函数。
我相信我需要使用 libnfnetlink但是,我无法找到任何API文档或示例程序。
我需要构建的规则非常简单 - 例如丢弃目标端口等于X的数据包等。我不打算编写完整的防火墙应用程序。
任何人都可以建议更好的方法,或提供一些文档或示例应用程序的链接?我宁愿避免阅读iptables代码,但我想我可能不得不,如果我找不到更好的资源。
我需要在C ++程序中控制进出linux框的入站和出站流量。我可以打电话 iptables
从我的程序中,但我更倾向于切断中间人并自己访问内核API函数。
我相信我需要使用 libnfnetlink但是,我无法找到任何API文档或示例程序。
我需要构建的规则非常简单 - 例如丢弃目标端口等于X的数据包等。我不打算编写完整的防火墙应用程序。
任何人都可以建议更好的方法,或提供一些文档或示例应用程序的链接?我宁愿避免阅读iptables代码,但我想我可能不得不,如果我找不到更好的资源。
一年前,我有相同的要求并进行了探测。但在联系了一些开源内核人员之后,这就是我所知道的 -
iptables的内核API没有外部化,也就是说,它们不是文档化的API。从某种意义上说,API可以随时改变。它们只能由iptables工具使用。它们不应该被应用程序开发人员使用。
-satish
您通常不需要定期更改IP表规则(即经常在运行时)。因此调用/ sbin / iptables应该没问题。
如果您正在尝试这样做,那么您可能需要查看包含其自身智能的替代匹配或目标模块,或者使用NFQUEUE将数据包排入用户空间程序,该程序可以根据可以根据标准做出自己的决策随心所欲地改变(谨防向用户空间发送太多数据包,这是一个潜在的性能问题)
为什么不直接获取iptables的源代码并像他们那样做呢?既然它是开源的......