Network programming 网络扩展框架与内核扩展

Network programming 网络扩展框架与内核扩展,network-programming,filtering,firewall,macos-catalina,kernel-extension,Network Programming,Filtering,Firewall,Macos Catalina,Kernel Extension,我希望为macOS实现防火墙/网络过滤功能 我正在寻找最安全的方法来做到这一点,即尝试确保没有网络流量丢失,并且我的过滤不能轻易通过 在四处搜索之后,我可以看到苹果已经弃用了网络内核扩展。他们建议现在就使用这个框架 然而,我可以看到,例如,mac的防火墙已经转向使用内核扩展,而不是网络扩展框架 这样做有充分的理由吗?内核扩展是否允许更深入、更安全的过滤 例如,Lulu和Little Snitch已经开始使用内核扩展 我不能代表Lulu说话,但Little Snitch至少是在网络扩展API推出之

我希望为macOS实现防火墙/网络过滤功能

我正在寻找最安全的方法来做到这一点,即尝试确保没有网络流量丢失,并且我的过滤不能轻易通过

在四处搜索之后,我可以看到苹果已经弃用了网络内核扩展。他们建议现在就使用这个框架

然而,我可以看到,例如,mac的防火墙已经转向使用内核扩展,而不是网络扩展框架

这样做有充分的理由吗?内核扩展是否允许更深入、更安全的过滤

例如,Lulu和Little Snitch已经开始使用内核扩展

我不能代表Lulu说话,但Little Snitch至少是在网络扩展API推出之前很久开发的,它肯定没有转移到NKE API。看起来他们正在积极调查转向网络扩展。我怀疑,只要NKE在不限制其支持的所有macOS版本的情况下工作,它们就会继续使用这些版本,以避免同时发布不同的后端。但他们可能已经有了某种内部原型,使用较新的API,以确保为最终从操作系统中删除NKE API做好准备

如果网络扩展支持您的用例,您可能应该使用它们。如果他们不这样做,你应该向苹果公司提交增强请求,否则当NKE停止工作时,你将别无选择


编辑:要部署NKE,基本上需要kext签名证书开发者ID应用程序+kext(如果您还没有)。另一种选择是强制用户禁用SIP的kext签名要求,这在大多数情况下既不明智也不合理。我听说近年来苹果公司让获得这样的证书变得更加困难。

Hi@pmdj谢谢你。网络内核扩展已被弃用。在这篇博文中,小告密者谈论的是转向内核扩展,而不是NetworkExtension框架。这很混乱,因为术语非常接近。不,我想你误解了。重要的一句话是使用网络扩展框架而不是NKE,这很可能使我们能够构建一个不需要任何内核扩展的Little Snitch版本。他们特别谈论的是离开内核扩展;NKE只是一种特定类型的内核扩展。对,你是对的。不过,我相信他们还没有采取行动。因为他们仍然在使用内核扩展;正如我所说,LS是在NE框架出现之前很久创建的。你的问题意味着他们从东北搬到了NKE;这绝对不是真的,这篇博文暗示他们的计划正好相反。此外,LS支持OSX 10.11+,许多关键功能仅在较新版本的macOS中添加,因此他们可能需要放弃对较旧版本的支持,或者如果现在迁移到NE,则需要提供两个后端;如果你使用NKE,如果你想支持10.16或10.17,或者当他们删除NKE API时,希望很快用NE重写它。另一个问题是代码签名:我假设您没有访问kext签名证书的权限。我听说现在很难得到它们。苹果可能会问你为什么需要它,因为他们为NKE提供了一个非kext替代API。