iOS 网络扩展错误创建 TUN/TAP 接口 SIOCGIFMTU 失败:设备未配置

iOS Network Extension error creating TUN/TAP interface SIOCGIFMTU failed: device not configured

目前正在开发一个网络扩展,它允许我使用 .ovpn 文件通过 OpenVPNAdapter 库使用 VPN 建立连接。我已将我的配置正确保存到系统设置中,当 运行 执行调试的扩展时,我的扩展状态从断开连接更改,保持连接一段时间然后断开连接。通过网络扩展进一步检查设备 anf 过滤的控制台日志,我收到三个主要错误消息。

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 class 中出现了问题。它没有崩溃,所以设置调试器 class 是不值得的。我 运行 我的目标并启动了我的应用程序并在函数中设置了几个 NSLog,这样我就可以在设备的控制台中看到发生了什么。我的问题是我试图在字典中为一个键设置一个 nil 值,从而终止扩展。在控制台中可以很容易地看到该崩溃消息。

问题是在函数中使用 OpenVPNAdapterDelegate 扩展 PacketTunnelProvider 以配置隧道

func openVPNAdapter(_ openVPNAdapter: OpenVPNAdapter, configureTunnelWithNetworkSettings networkSettings: NEPacketTunnelNetworkSettings?, completionHandler: @escaping (OpenVPNAdapterPacketFlow?) -> Void) {
    networkSettings?.dnsSettings?.matchDomains = [""];
}

之前我有 networkSettings.dnsSettings?.matchDomains = [""];,所以 networkSettings 被解包,nil 导致扩展崩溃,隧道无法连接。