目前正在开发一个网络扩展,让我可以使用 .ovpn
文件通过 VPN 建立连接,方法是使用 OpenVPNAdapter图书馆。我已将我的配置正确保存到系统设置中,并且在运行扩展以执行调试时,我的扩展状态从断开连接更改为保持连接一段时间,然后断开连接。进一步检查设备的控制台日志并通过网络扩展进行过滤,我得到三个主要错误消息。
Log message from provider: TUN Error: cannot acquire tun interface socket
SIOCGIFMTU failed: Device not configured
NEVirtualInterfaceAdjustReadBufferSize: interface_get_mtu failed (6), defaulting to max mtu
我现在不知道该去哪里,因为我正在使用设备上的控制台调试网络扩展。
最佳答案
好吧,我自己解决了这个问题。我创建了一个数据包隧道网络扩展,但在我的 PacketTunnelProvider 类中出现了问题。它没有崩溃,因此在该类中设置调试器是不值得的。我运行了我的目标并启动了我的应用程序,并在函数中设置了几个 NSLog,这样我就可以在设备的控制台中看到发生了什么。我的问题是我尝试在字典中为键设置 nil 值,从而终止扩展。该崩溃消息可以很容易地在控制台中看到。
问题是在函数中使用 OpenVPNAdapterDelegate
扩展 PacketTunnelProvider
来配置隧道
func openVPNAdapter(_ openVPNAdapter: OpenVPNAdapter, configureTunnelWithNetworkSettings networkSettings: NEPacketTunnelNetworkSettings?, completionHandler: @escaping (OpenVPNAdapterPacketFlow?) -> Void) {
networkSettings?.dnsSettings?.matchDomains = [""];
}
以前我有 networkSettings.dnsSettings?.matchDomains = [""];
所以 networkSettings
被解开并且它是 nil
导致它崩溃分机和隧道无法连接。
关于swift - iOS 网络扩展错误创建 TUN/TAP 接口(interface) SIOCGIFMTU 失败 : device not configured,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57568826/