【问题标题】:PF header net/pfvar.h on OSX missingOSX 上的 PF 标头 net/pfvar.h 丢失
【发布时间】:2019-10-30 17:03:24
【问题描述】:

PF(包过滤器)是内核级防火墙,包含在类 BSD 内核中(达尔文内核基本上是 BSD),BSD 手册页提供了有关这些标头的详细 documentation,让以编程方式控制 PF。 PF 包含在 OSX 内核中,即使它默认被禁用。

我知道在 OSX 中控制 PF 是可能的,因为存在像 Murus 这样的应用程序,为这个低级“防火墙之王”提供用户友好的 GUI,而这个 API 不是不是手动 /etc/pf.conf 解析,正如我首先怀疑的那样。

有什么方法可以在我的 OSX 应用程序中添加这些标头并控制 PF?

MacOS Sierra 10.12.6

Xcode 9.2 (9C40b)

更新了一些information,不过有点过时了

【问题讨论】:

  • This 似乎可以解释,但不确定。

标签: macos firewall bsd darwin


【解决方案1】:

您正在寻找的<net/pfvar.h> 位于下面的链接中(适用于 MacOS Mojave 和 Catalina)- 还提供旧版本。

https://opensource.apple.com/source/xnu/xnu-4903.221.2/bsd/net/pfvar.h.auto.html


这是 MacOS Sierra 的 <net/pfvar.h>

https://opensource.apple.com/source/xnu/xnu-3789.70.16/bsd/net/pfvar.h.auto.html


如果您需要一个完整的工作应用程序示例,我将 pfctl 从 BSD 移植到 MacOS,并使用所有 MacOS 内核头文件和系统库对其进行编译。我可以为您在 GitHub 上上传完整的工作源代码树。目前我在 Catalina 上使用它,我可以控制 PF 子系统上的任何东西。然后,您可以从中学习并在您的应用程序上使用例程。代码、函数和参数简单易懂,可以轻松满足您的需求。

【讨论】:

  • 是否可以在 macos 内核扩展中使用 ioctl 控制 pf?
  • 考虑到可以使用 ioctl 从任何普通应用程序控制它,我认为从 macos 内核扩展控制它没有问题。所以答案是肯定的。
  • 你是对的,但是ioctl在内核模式下不存在,这是一个奇怪的东西,叫做vnop_ioctl,使用起来有点吓人!
  • 你确定吗? vnop_ioctl 似乎是在 sys/vnode_if.h 中定义的文件系统 ioctl,主要由 SMB 使用,但也用于 devfsfifofs.. 可能是,我不确定,我也告诉您错了。这是我研究的东西。谢谢
  • @Prado 是的,我刚刚回到那个项目,将感谢工作示例
猜你喜欢
  • 2019-11-25
  • 1970-01-01
  • 2013-11-13
  • 2018-03-17
  • 2016-04-27
  • 2018-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多