问题:为了使用 TunnelKit 的隧道功能并访问互联网,我在实现中缺少什么?
我开始制作 VPN iOS 应用程序并决定使用 TunnelKit 库:https://github.com/passepartoutvpn/tunnelkit
我按照自述文件安装和设置步骤操作,并设法让应用程序运行。 当激活 VPN(调用 connect() 函数)时,我设法在检查 iPhone 设置 -> VPN 设置时将其打开。 问题:我无法访问互联网,无法加载任何网站。
然后我尝试下载 TunnelKit 的存储库:https://github.com/passepartoutvpn/tunnelkit 并使用演示应用程序来测试我的服务器端是否正常工作或者库是否存在问题。还是一样,VPN已连接,但无法访问互联网。
然后我决定使用 WireGuard VPN 应用程序测试服务器端:https://apps.apple.com/de/app/wireguard/id1451685025?l=en-GB&mt=12
还有另一个免费 VPN 应用程序。
他们都设法将 VPN 设置为已连接并可以访问互联网。
现在我不知道该去哪里寻找了。起初我会说库本身存在问题,但他们的 GitHub 页面上没有提出“问题”。
兴趣点:
PacketTunnelProvider:
import Foundation
import TunnelKitWireGuardAppExtension
class PacketTunnelProvider: WireGuardTunnelProvider {
override func startTunnel(options: [String: NSObject]? = nil) async throws {
try await super.startTunnel(options: options)
}
}
我认为你的“选项”(配置)有一些缺失的部分,
带有公钥的 PeerConfiguration 和 allowedIPs 作为数组、端点、preSharedKey(强制)
带有私钥的接口配置以及作为数组的 DNS 服务器、地址 (IPAddressRange)、MTU
必须设置且格式正确。
您还可以使用 Mac 上的 os_log 和控制台应用程序检查您的网络扩展 (PacketTunnelProvider)。它会抛出任何错误吗?