gpt4 book ai didi

macos - 使用 NKE 更改数据包接口(interface)

转载 作者:行者123 更新时间:2023-12-04 12:46:17 25 4
gpt4 key购买 nike

我正在开发一个 VPN 应用程序,我正在寻找从默认 en0 路由特定于应用程序的数据包界面。我想知道我可以通过使用 NKE 来实现这一点吗?

假设来自 Safari 的所有数据都通过 ppp0 接口(interface),来自 Chrome 的所有数据都通过 en0。

最佳答案

我不能给你一个 100% 明确的答案,因为我以前从来没有解决过这个特定的问题,而且它似乎没有在任何地方记录。我可以向您指出一些事情,如果我的任务是实现此类功能,我将重点研究这些事情。

  • 从 WWDC 2017 开始,不推荐使用网络内核扩展。 Apple 希望您改为创建用户空间“网络扩展”。您可以实现一些特殊的 VPN 类。理论上,这些允许每个应用程序规则 (see "Per-App VPN"),但实际上它们似乎与 MDM 相关联,这似乎是一个奇怪的决定。如果这与您尝试做的事情相冲突,您可能想与 Apple 联系以进行更改。他们正在积极征求有关网络扩展 API 的意见。
  • 网络内核扩展 (NKE) 是更成熟的 API。路由发生在“IP 过滤器”和“接口(interface)过滤器”阶段之间。我不确定您是否可以通过任何一个过滤阶段直接影响它们。也许通过使用默认接口(interface)上的接口(interface)过滤器删除数据包,并将它们注入(inject)您的 VPN 接口(interface)?不过,我不确定这是否明智,并且您可能无法将数据包与在网络堆栈的那个阶段发送它们的进程匹配。
  • 您可以尝试从套接字过滤器 NKE 将套接字绑定(bind)到特定的接口(interface)设备(使用 IP_BOUND_IF)。
  • Berkeley Packet Filter (BPF) 也是一种可能的解决方案。
  • 关于macos - 使用 NKE 更改数据包接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38138414/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com