PF (packet filter) 是内核级防火墙,包含在类 BSD 内核中(Darwin 内核基本上就是 BSD),BSD 手册页提供详细 documentation关于这些标题,让我们以编程方式控制 PF。 PF 包含在 OSX 内核中,即使默认情况下它是禁用的。
我知道可以通过某种方式在 OSX 中控制 PF,因为像 Murus 这样的应用程序存在,为这个低级的“防火墙之王”提供用户友好的 GUI,而且这个 API 不是手动的 /etc/pf.conf
解析,正如我首先怀疑的那样。
有什么方法可以从我的 OSX 应用程序中添加这些头文件并控制 PF?
MacOS 塞拉利昂 10.12.6
Xcode 9.2 (9C40b)
更新一些 information我发现,虽然有点过时
最佳答案
<net/pfvar.h>
您正在寻找的是下面的链接(适用于 MacOS Mojave 和 Catalina) - 旧版本也可用。
https://opensource.apple.com/source/xnu/xnu-4903.221.2/bsd/net/pfvar.h.auto.html
这是<net/pfvar.h>
对于 MacOS Sierra:
https://opensource.apple.com/source/xnu/xnu-3789.70.16/bsd/net/pfvar.h.auto.html
如果你需要一个完整的应用程序示例,我移植了 pfctl 从 BSD 到 MacOS,并使用所有 MacOS 内核头文件和系统库对其进行编译。我可以在 GitHub 上为您上传完整的工作源代码树。目前我在 Catalina 上使用它,我可以控制 PF 子系统上的任何东西。然后,您可以从中学习并使用应用程序中的例程。代码、功能和参数简单易懂,可以轻松满足您的需求。
关于macos - OSX 上的 PF header net/pfvar.h 丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56625607/