【问题标题】:iOS 9 SimpleTunnel sample - Starting a new tunneliOS 9 SimpleTunnel 示例 - 启动新隧道
【发布时间】:2015-12-12 17:08:10
【问题描述】:

我正在努力遵循 Apple 提供的example of SimpleTunnel。 我试图追踪他们是如何进行定制电话的。 但是我无法将connect 按钮操作与启动新隧道之间的关系联系起来。

我尝试使用PacketTunnelProvider 跟踪它,但没有成功。 我知道它们是覆盖类。我找不到整个 VPN 连接的开始点。

我的目标是创建一个 SSL VPN 隧道。

【问题讨论】:

    标签: ssl networking vpn ios9


    【解决方案1】:

    示例应用程序和数据包隧道提供程序作为单独的进程运行。示例应用程序被称为容器应用程序,数据包隧道提供程序作为应用程序扩展运行。这两个组件使用 IPC 进行通信。

    在示例应用程序中,只要启用连接切换按钮,就会调用 startVPNTunnel() API,并且操作系统会启动数据包隧道提供程序,该提供程序反过来会调用您的覆盖方法 startTunnelWithOptions()。所以这是您开始连接到 VPN 服务器的地方。 要回答您的问题,请将连接操作链接到调用 startVPNTunnel() 的方法,该方法又会触发数据包隧道提供程序。没有容器应用程序,您不能直接调用启动数据包隧道提供程序。 同样适用于停止您的 VPN 隧道

    希望这个答案对你有帮助

    【讨论】:

      【解决方案2】:

      在询问了苹果和一些尝试和错误之后,我终于可以触发扩展部分了。

      先决条件:(网络扩展权限)

      1. 添加新目标 -> 数据包隧道提供程序
      2. 通过

        触发扩展

        NEVPNConnection *conn = [管理器连接];

        NSError *connError;

        [conn startVPNTunnelWithOptions:settingsDict andReturnError:&connError];

      3. 使用以下步骤进行调试

        (1) 构建并运行应用程序 (2) 停止应用程序 (3) 调试 > 通过 PID 或名称附加到进程 > 输入“PacketTunnel” (4) 从您的 iPhone 屏幕启动应用程序,您可以调试扩展程序

      希望我所经历的小步骤可以帮助其他人开始。 但是,还有更多即将出现的问题,我需要检查!

      【讨论】:

      • 自定义隧道的return err如何处理?
      【解决方案3】:

      如果您询问的是 SimpleTunnel 应用程序中的连接/启用按钮,那么 startVPNTunnel() 是 StatusViewController.swift 文件的 startStopToggled() 方法中使用的调用

      如果您询问扩展如何处理 vpn 连接启动(配置完成后),则 OS 网络系统会根据隧道的配置方式调用 PacketTunnelProvider.swift 中的 startTunnelWithOptions()。例如:为此隧道启用了按需,只要有网络活动,操作系统就会尝试设置/启动隧道。如果没有,操作系统将尝试启动隧道,当您转到设置|VPN 并尝试打开配置时。这类似于 iOS8 个人 vpn 连接的东西。

      【讨论】:

      • PacketTunnelProvider 的触发命令在哪里?我知道他们想做什么。但我无法将该功能与用户操作联系起来。其他地方没有 PacketTunnelProvider 的参考。
      猜你喜欢
      • 2021-05-23
      • 1970-01-01
      • 2019-04-13
      • 1970-01-01
      • 1970-01-01
      • 2017-07-15
      • 1970-01-01
      • 2011-10-09
      • 2017-02-07
      相关资源
      最近更新 更多