swift - iOS 网络扩展错误创建 TUN/TAP 接口(interface) SIOCGIFMTU 失败 : device not configured

标签 swift vpn networkextension

目前正在开发一个网络扩展,让我可以使用 .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/

相关文章:

swift - 使用 preferredStyle : . ActionSheet 更改 UIAlertController 中取消按钮的颜色

ios - 从 NSUserDefaults 检索自定义对象

java - 如何将 OpenVPN 客户端应用程序与另一个安卓应用程序合并?

ios - NEHotspotConfigurationManager 收到此警报 :"Unable to join the network<name of network>"而错误为零

ios - 如何更改边框自定义边的颜色?

ios - Swift - 在 println 中没有得到变量名的建议

ios - 在 ios 中将数据流重定向到 wifi 或蜂窝网络

ios - iOS VPN DNS泄漏

ipad - VPN 仅适用于 iPad 上的某些应用程序

Azure VPN 客户端 (MacOS) 由于错误 : getKeyChainSecret 而无法连接