问题标签 [networkextension]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
382 浏览

ios - iOS VPN 按需从设置应用程序中关闭

从设置应用程序关闭 VPN 不会关闭按需功能。尝试访问 NETunnelProviderManager 并将 ondemand 设置为 false 会导致日志消息 NEVPNManager 对象无法从 NEProvider 进程中实例化。但是,如果用户从设置应用程序手动关闭 VPN,我想提供关闭按需选项的选项。

如果 UI 在后台仍然存在,则在扩展内部使用 var targetManager: NEVPNManager = NEVPNManager.sharedManager() 的实例确实有效。

有谁知道容器应用程序死机时的解决方法?

0 投票
0 回答
1095 浏览

ios - 支持网络扩展的应用程序的开发部署

我有一个包含网络扩展的应用程序,当我从 XCode 中运行它时,它使用我创建的具有适当权利的配置文件,并且可以正常工作而没有问题。

但是,当我存档项目并选择同一个团队时,当我安装并运行该 IPA 文件时,网络扩展无法启动:

我很确定这是因为某些东西弄乱了权利。

我返回了“导出”过程,它显示的配置文件不是我想要使用的配置文件,它是一个显示“iOS Team Provio ...”的配置文件,我无法将其更改为我想要使用的配置文件。

我知道还有其他关于这个的帖子(比如这个),但是那里的解决方案似乎都不起作用。特别是,涉及命令行命令的解决方案只接受一个永远不会工作的配置文件,因为我需要选择两个不同的配置文件:一个用于主应用程序,一个用于扩展程序。

更新:我检查了 IPA 文件中的 embedded.mobileprovision 文件,它实际上似乎使用正确的配置文件进行了签名。所以它可能毕竟不是个人资料问题。但如果是这样,为什么我会收到“Permission Denied”错误?

我再次进行了全面清理,并确认在生成 IPA 文件之前显示的列表中的主应用程序和扩展程序都看到了“com.apple.developer.networking.vpn.api”(allow-vpn)。

在我收到“权限被拒绝”错误之前,我看到了以下神秘错误:

更新 2:我创建了两个企业分布配置文件(我以前使用过开发配置文件),当我做临时的现在扩展工作时。

我目前没有被阻止,但想确定为什么这最初不起作用,因为这将是有价值的信息,所以让这个问题保持开放。

0 投票
1 回答
105 浏览

ios - 在 iOS 8 上向后兼容使用 NETunnelProviderManager 的应用程序

我有一个应用程序目前在 iOS 8 上运行良好,我们正在通过 NETunnelProviderManager 添加对设备级 VPN 的支持。带有 VPN 扩展的应用程序在 iOS 9 和 10 上运行良好,但现在不再安装在 iOS 8 中,并出现以下错误:

我计划在运行时检查 iOS 版本,只是不调用这些 API,但由于这次失败,应用程序甚至没有进入运行时。

无论如何我可以在运行时安装和处理它吗?只为 iOS 8 制作一个单独的应用程序对我来说是不可行的。

虽然我的应用程序使用 VPN 扩展,但它可以在没有它的情况下做一些事情,所以我想保持对 iOS 8 的支持,至少在一段时间内。

0 投票
1 回答
789 浏览

ios - iOS 网络扩展中的内置 VPN 类型

经过一番研究,我发现 IPSec 是内置在iOS Network Extension中的。不幸的是,IPSec 不能满足我们的需要。

OpenVPN 可以很好地满足我们的需求,但它需要自定义实现OpenVPN 源代码——这是我们希望避免的,因为难以估计工作量和许可证问题。

这就是为什么我想知道iOS网络扩展中是否有除IPSec之外的其他内置VPN协议,以便我可以检查它是否能满足我们的需求。

在网络扩展中,有类NEVPNProtocol。在这个类的描述中,我们可以看到NEVPNProtocolIPSec这个类实现了IPSec VPN。但我看不到任何其他 VPN 内置协议。

如果他知道除 IPSec 之外的其他 VPN 内置实现,谁能给我打电话?

提前致谢,

0 投票
0 回答
169 浏览

ios - NEVPNManager.shareManager 在应用程序和小部件之间共享?

我正在开发一个还包括小部件的 vpn 应用程序。当我在应用程序和小部件中调用时,我发现 NEVPNManager.shareManager 是不同的对象,因此连接状态和配置不共享。

我怎样才能得到真正的共享经理?

0 投票
1 回答
1740 浏览

ios - Swift 获取可用 wifi 网络列表并连接到其中一个

我正在寻找一种解决方案,至少可以获取可用 SSID 列表以及下一步通过应用程序连接到 WiFi SSID。

我找到CaptiveNetwork了,但它在 iOS9 中已经贬值了。

有没有使用NetworkExtension的选项?我是否有机会使用此功能将应用程序上传到 App Store。

0 投票
2 回答
3428 浏览

ios - 重启应用后NEVPNManager检查是否连接?

我使用该框架编写了一个VPN工具。NetworkExtension我可以通过连接IPSec ,并且可以在VPN连接状态发生变化NEVPNManager.sharedManager时获取通知。但是当我杀死应用程序并重新打开它时,总是零,意味着无法显示正确的连接状态。如何解决?NEVPNManager.Connect.Status

0 投票
0 回答
1414 浏览

ios - 如何使用字符串证书配置 NEVPNProtocolIKEv2 的 identityData?

我使用 NetworkExtension 框架来创建一个应用程序,它通过 NEVPNProtocolIKEv2 连接到 VPN 服务器。

经过研究,我找到了有关使用 NetworkExtension 框架的教程,并尝试遵循它。(http://ramezanpour.net/post/2014/08/03/configure-and-manage-vpn-connections-programmatically-in-ios-8/

但是,当我配置这个协议的 identityData 时,我卡住了。这是m代码:

}

在教程中,p.identityData 是从 P12 文件加载的 NSData。但我只有一个字符串调用:server.certificate

此 server.certificate 具有这样的值

这是一个非常长的字符串,调用 x509Certificate... 或类似的东西,我不记得了。


我发现一个库支持将字符串写入文件 p12,它是“openssl”。

但是演示代码是Objective-C。我一直在尝试将此代码移植到 Swift,但这太难了。(演示代码:iOS:如何以编程方式从应用程序中的私钥和 x509 证书创建 PKCS12(P12)密钥库?


最后,我只有一个字符串证书,我想为我的应用程序配置 p.identityData。我怎么做?

0 投票
1 回答
161 浏览

ios - 如何在 NETunnelProviderManager 中找出 IP 流量的源进程

我在“按目标 IP 路由”模式下使用 NETunnelProviderManager,并且能够从设备上的各种应用程序获取 IP 流量。

问题是我需要确定每个 IP 数据包来自哪个应用程序,以便我可以根据需要过滤和阻止流量,以防止流氓应用程序访问内部位置。因为我没有使用 MDM,所以使用 NETunnelProviderManager 的“per-app”模式对我来说是不可行的。不幸的是,Apple 的应用代理提供商也需要 MDM。

似乎如果我可以访问系统的 TCB 表(或访问每个进程的 TCB 表)我可以这样做,但看起来 iOS 没有发布此信息,我也没有找到任何私有 API 来获取此信息在非越狱设备上。

有谁知道我可以使用的任何技术?

0 投票
0 回答
594 浏览

ios - 如果启用了 VPN,使用网络扩展的 iOS 应用程序将挂起升级

每当我尝试将具有网络扩展 (NEPacketTunnelProvider) 的应用程序升级到新版本并且 VPN 处于“正在连接”或“已连接”状态时,升级将始终挂起并在控制台日志中显示以下消息:

即使我等了很长时间,它也永远不会完成,有时会显示大约 55% 的完成度,有时图标是黑色的。如果我单击图标并重新启动升级,有时它会起作用,但我必须返回并再次设置 VPN。有时我会看到一条错误消息,询问我是否要重试升级。

这对客户来说将是一个严重的问题,因为它似乎每次都会发生,至少在 iOS 10 上是这样。我无法找到任何合理的解决方法。

我已经与 Apple 编写了一个错误,但他们所传达的只是它是现有 Open 问题 (27872696) 的副本。他们还无法提供任何解决方法。

在升级时间之前停止 VPN 确实可以让升级正常工作,但这是一个非常糟糕的用户体验。

如果有人看到此问题或可以提供解决方法或其他信息,请告诉我。

顺便说一句,我已经用 Apple 最新的 Simple Tunnel 应用程序重新制作了它,所以我的应用程序正在做的事情并不奇怪。我可以通过使用 XCode 中制作的 IPA 对 Intunes 进行初始下载和升级来重现,但我在从应用商店升级时也看到了这一点,这是最大的问题。

更新:该线程讨论了 Apple 所说的已知问题。如果此问题影响到您,请考虑添加回复,因为该线程中有 Apple 人员。

https://forums.developer.apple.com/thread/61659