问题标签 [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.
ios - NetworkExtension VPN iOS 将蜂窝网络更改为 Wifi
我正在编写一个管理 VPN 的 NetworkExtensions 应用程序。当从 wifi 切换到蜂窝时,管理 VPN 的正确方法是什么?反之亦然?
目前,我正在检测具有可达性(https://github.com/ashleymills/Reachability.swift)并使用 NEVPNStatus.reasserting 的网络变化。那是最好的方法吗?
谢谢!
ios - 有没有办法使用 NetworkExtension 框架“注入”基本授权标头?
我希望能够为 HTTP 端点提供凭据,并考虑到以下约束
- 没有用户交互。不应提示用户输入用户名/密码。凭据将由应用程序本身管理。
- 在应用程序的进程之外。例如,对域“foo.com”的任何请求都必须定义一个授权标头。
- 不得监督该设备。
NetworkExtension框架可以实现这样的事情吗?
ios - NEHotspotConfigurationErrorDomain Code=5“无效的 EAP 设置。”
我在 iOS 11 iPhone 上使用 NEHotspotConfigurationManager 连接到特定的 Wi-Fi 点,然后断开连接。
这是代码:
问题是:发生了什么?为什么它提示我错误“无效的 EAP 设置”,以及这个错误是什么意思?
ios - 在 iOS 上,是否可以仅为包含应用程序设置 NEPacketTunnelProvider VPN?
我目前正在编写一个可供不同应用程序使用的库。我想为我的图书馆的客户提供的功能之一是能够使用仅由客户端应用程序使用的自定义隧道协议设置 VPN。即设备上的所有其他应用程序不应通过 VPN 路由。我知道Per-App VPN允许一个或多个应用程序通过 VPN 路由。但是,我不喜欢处理 MDM 限制。就我而言,我只需要包含应用程序的隧道,但没有 MDM 要求。这可能吗?如果没有,除了使用网络扩展之外还有其他选择吗?
ios - 如何从钥匙串中获取 NEPacketTunnelProvider Networkextension 的身份?
我正在使用 NEPacketTunnelProvider 进行网络扩展。我正在使用带有 com.apple.vpn.managed 有效负载的配置文件。此外,我使用带有 com.apple.security.pkcs12 有效负载的 ClientCertificate 身份验证。根据NETunnelProviderManager文档,我的扩展应该可以使用 com.apple.managed.vpn.shared 钥匙串访问组检索此身份。
如果我查询钥匙串的身份,我总是得到错误代码-25300
。根据www.osstatus.com ,这意味着:“找不到该项目。”
代码 1:我尝试使用 protocolConfiguration 提供的持久引用来检索身份。
输出是:
代码 2:如果我尝试在没有引用的情况下检索所有身份,我-25300
也会得到。
我重新检查了构建结果是否获得了钥匙串访问组:
codesign -d --ent :- build/Debug-iphoneos/agent.app/PlugIns/vpn.appex/
如何从钥匙串中获取 NEPacketTunnelProvider Networkextension 的身份?
ios - 如何使用 swift 将 VPN 服务器与我们的 iOS 应用程序连接
我想将 VPN 服务器与我的 iOS 应用程序连接。我无法与 VPN 服务器建立连接。我对此进行了很多搜索,但没有得到任何解决方案。
这是我的代码:
macos - Cisco Anyconnect VPN 如何在 OSX 上创建网络接口?
Cisco AnyConnect 建立 VPN 连接时未添加接口SystemPrefernecs -> Network
,但ifconfig
在终端上运行时会显示utun1
Cisco VPN 创建的接口。
不使用SystemConfiguration
调用VPNConfiguration
的apiVPNTunnel
或NetworkExtension
api 如何在 MAC OS 上建立 VPN 连接?或者有没有其他方法可以在不使用 VPNConfiguration,VPNTunnel/NetworkExtension
Mac OS 上的 api 的情况下建立 VPN 连接?
谢谢
ios - NEPacketTunnelProvider 嗅探器 iOS
当我最近发现这篇论文描述了iOS
使用 Apple 的NEPacketTunnelProvider扩展的嗅探机制时,我很好奇,它让我想从技术角度理解它。由于我通常不在这样的深层网络层工作,因此我无法详细理解它。由于iOS 版Charles Proxy必须在不需要受监督设备的情况下做一些非常类似的事情,我认为作者在 2016 年提出的方法现在可能仍然有效。
作者声称“像 IP 数据包解析、构建 IP 数据包或解析 DNS 响应等一切都必须自己实现。” 因为我想完全理解这一点,所以我尝试自己构建它。我NetworkExtension
为. packetFlow
_ NEPacketTunnelProvider
我能够获取 ip 数据报并尝试解析它们。我为源和目标ip、传输协议和ip版本使用了相应大小的无符号整数,但我不确定如何处理payload。我的解析器使用ptr.load(fromByteOffset: <offset>, as:<DataType>.self)
where ptr
is aUnsafeRawPointer
来访问数据包流信息。由于data
可能超出 的存储UInt64
,我不知道如何以正确的方式访问和存储有效负载。
此外,我认为源 IP 始终是192.168.20.1
(设置为我的接口的NEIPv4Settings地址),而我的目标 IP 始终是192.168.2.1
(我的虚拟NEDNSSettings服务器)。这引出了我的第一个问题:这些是 DNS 查询吗?数据报包会要求有关实际目标的任何进一步信息吗?这是否意味着我必须以某种方式执行对 DNS 服务器的请求并将数据包重新路由到我将从该 DNS 查询中获得的目标?
下一步将是实现 TCP / UDP 处理,对吧?我目前的解析方法能够区分UDP
,TCP
和ICMP
(尽管我还没有研究过最后一个)。因此,我将遍历数据报并查找它们是否需要UPD
会话TCP
/连接并传输数据报。我目前从概念的角度看到的问题:我如何知道哪个源/目标端口用于 TCP/UPD 连接/会话?据我所知,这些信息不是 IP 数据包本身的一部分(因为它是我们需要的传输层级别的一些信息,而不是网络层级别的信息)。
此外,我在 github 上找到了一个名为Specht的项目。它使用了一个名为NEKit的自写库,不知何故也使用了这种NEPacketTunnelProvider
方法。当我正确理解他们的方法时,他们设法通过编写一些观察者机制来构建本地代理服务器以处理请求,但由于我对网络和 swift 比较陌生,我不确定我是否完全理解正确还是我只是没有找到所有那些 TCP/UDP 和/或 DNS 逻辑。这个项目可以与论文和查尔斯代理的方法相媲美吗?
最后一个问题:Charles 代理在大多数情况下能够显示目标的主机名。我目前只能看到目标 IP 地址(不是真正的目标 IP 地址,而是我的 DNS 服务器的地址)。我如何能够将主机名视为人类可读的文本?查尔斯会以nslookup
某种方式进行吗?Charles 是否从数据报中获取这些信息?
我知道我很有野心,因为我在这个主题上缺少很多知识,为了测试原因构建类似的东西,但我仍然有动力去更深入地研究这个主题,并且感觉我已经理解了一些关键点,但是不幸的是,还不足以解决这个难题……也许您可以给我更多提示以更好地理解。如果可能有更简单的方法来存档类似的行为(查看主机名级别的传出连接),我也会对这些感兴趣:-)
ios - wifi不存在时NEHotspotConfigurationManager报错问题
当我尝试连接一个不存在的 wifi 时发现了一个问题,这是我的代码:
如果 wifi 不存在,我会看到并与之对话
“无法连接网络“wifi-nam””
但是中的错误NEHotspotConfigurationManager
是nil,那么如何控制特定的ssid wifi是否存在?
ios - 以前有没有人实现过 NEDNSProxyManager ?
我尝试使用 NEDNSProxyManager 将 dns 重定向到我自己的服务器,但未能做到这一点。它应该能够根据 Apple 文档做到这一点
DNS 代理允许您的应用拦截设备上生成的所有 DNS 流量。您可以使用此功能来提供 DNS 流量加密等服务,通常是通过将 DNS 流量重定向到您自己的服务器。您通常在托管设备的上下文中执行此操作,例如学校或企业拥有的设备。
任何帮助深表感谢。