基于dest端口的IP /数据包接口路由 - 使用PF或编写NKE的任何提示?

时间:2016-06-26 02:26:45

标签: macos network-programming bsd xnu

希望了解我应该创建哪种类型的NKE的一些提示。我想在OS X上进行iproute2风格的数据包路由,或者我应该说" macOS"。默认情况下,在macOS上," route"命令似乎仅限于IP地址。我希望我的路线基于端口。

要扩展,我在一个只允许端口80和443的企业网络中,但是第二个网络速度很慢但允许所有流量。我希望通过速度更快的企业网络以及速度较慢的网络上的所有其他内容将所有流量引导到80/443上,但有一个例外:尝试通过其本地网络ip范围与公司网络通信的流量。我知道在个案的基础上我可以配置我的应用程序使用某些接口而不是其他接口,我也可以使用附加到接口的代理来转发"转发"如果它在过滤器上匹配,则流量到另一个接口,但我过去在内存/磁盘使用和本地代理方面遇到了问题。

所以我有一个疯狂的想法,因为我无法通过端口修改macOS路由,如果我可以将自己的虚拟网络接口放在服务订单的顶部并引导流量怎么办?据推测,这意味着转发数据包,可能会重新创建它们,所以我不能100%确定这是最好的方法。或者,我可以在现有接口上侦听我想要重定向的流量,只需将这些重定向数据包修改为不同的接口。

阅读NKE文档,例如NKE documentation on Apple's website,我发现自己处于与this un-answered poster to Apple's mailing list相同的位置,在此我试图弄清楚如何"设计自定义路由"。给出的示例倾向于关注防火墙或重写数据包(如NAT),而不是重新分配要使用的接口。即使otherwise nice books也无法帮助我。

如果PF可以实现这一点,我想在那里做,因为不编写内核扩展更安全。我也知道IPNetSentryX,但它应该是生命终结,这意味着它可能毕竟使用了IPFW?它虽然says it used NKE,所以我认为它可能吗?

思考?我已经搜索过Github,但我发现的只有两个用于生成计算机网络流量的存储库,一堆使用TunTap代码的VPN克隆,以及this read-me on building an extension to listen for router advertisements。可悲的是,没有路由或更改流量接口的示例。想法?

更新1:检查了有关BSD 4.3的PF的文档,它似乎没有我们需要的路由。查看IPNetRouterX关于备用路由的帮助页面,看起来我想要使用Apple网络Kext接口过滤器。

更新2:WWDC就Kext开发进行了3次相关会谈,至少自2010年以来大部分都在线:

  • WWDC 2010 Session 203 适用于Mac OS X的I / O Kit设备驱动程序
  • WWDC 2013 Session 707 Kext开发中的新功能(后三分之一涵盖了新的调试标记和10.9中的更改)
  • WWDC 2015会议706 安全性和您的应用(简要提及关键字)

考虑到维护用于测试kexts的第二个VM需要做多少工作,我不确定我是否想要在kext中使用它。在Linux下使用iproute2用户空间工具,它实际上只是一两行,但在没有内核开发的情况下,在Mac中似乎是不可能的。这基本上是我第一次在桌面计算机上通过Linux选择OS X而烦恼。

尽管如此,如果有人在macOS开发指针上有任何kext网络路由,我全都耳朵。这可能是一个有趣的周末项目,只是为了看看我能否做到。

0 个答案:

没有答案