1

我已经使用 NEVPNManager 在我的应用程序中设置了 IKEv2 VPN 配置。目的是让连接保持活动状态,直到用户将其关闭或被 VPN 服务器终止。为此,我设置了以下配置:

let protocol = NEVPNProtocolIKEv2()
...
protocol.disconnectOnSleep = false

但是,如果 iPhone 使用电池运行,则在设备闲置一段时间后,VPN 仍会断开连接。如果我把它插在充电器上,这似乎不会发生。

我已经研究过设置 OnDemandRules,它会在设备唤醒时重新建立连接,但这会导致另一个问题,即即使 VPN 服务器将其关闭,设备也会继续尝试重新连接。有没有更好的方法来实现我正在寻找的规则(保持连接直到用户或服务器关闭它)?

4

1 回答 1

0

该问题不是由 iOS 进入睡眠模式引起的,纯属巧合。断开连接的原因是 IKEv2 配置意外地将 localIdentifier 设置为固定值。这意味着如果设备尝试连接到 VPN 服务器,任何现有的连接都将被丢弃,因为就服务器而言,它们都来自同一个源,因为它们具有相同的本地标识符。

因此,如果您遇到此问题,请确保每个设备都获得唯一的本地标识符。使用 Apple 设备 ID 是一个不错的选择。

于 2020-06-29T11:52:41.277 回答