3

アプリで VPN プロファイルを作成しています。次のルールと設定があります。

    let newIPSec = NEVPNProtocolIPSec()

    newIPSec.serverAddress = AppConfiguration.getVPNEndPoint()
    newIPSec.authenticationMethod = NEVPNIKEAuthenticationMethod.sharedSecret
    newIPSec.username = VPNCredentialsModel.instance.vpnUserName()
    newIPSec.passwordReference = VPNCredentialsModel.instance.vpnPasswordReference() as Data?
    newIPSec.sharedSecretReference = VPNCredentialsModel.instance.vpnPresharedKeyReference() as Data?
    newIPSec.useExtendedAuthentication = true
    newIPSec.disconnectOnSleep = false
    self.manager.protocolConfiguration = newIPSec

    let connectRule = NEOnDemandRuleConnect()
    connectRule.interfaceTypeMatch = .any

    let ignoreRule = NEOnDemandRuleIgnore()
    ignoreRule.interfaceTypeMatch = .any
    ignoreRule.probeURL = URL(string:probeURL)

    self.manager.onDemandRules = [ignoreRule,connectRule]
    self.manager.isOnDemandEnabled = true
    self.manager.isEnabled = true

Update
My probeURL は、バックエンドを更新し、ユーザー ステータスに基づいて 200 または 500 を返す残りの API 呼び出しです。いくつかの SQL クエリが実行されているため、多少の待ち時間があります。probeURL は 200 OK を予期します。それ以外の場合は、無視ルールが無効になります。無視ルールが無効になり、VPN に接続しようとしますが、VPN がユーザーをブロックしたため、ユーザーは接続できなくなります。iOS デバイスは無限ループで試行を続け、他のアプリケーションからのインターネット アクセスをブロックして、デバイスをブリック状態にします。このケースを処理するためのより良い方法はありますか?

提案
フラグのようなユーザーステータスを指すファイルエンドポイントでDBを更新できます-(各ユーザーにはファイルエンドポイントがあります)。ファイルが利用可能な場合は 200 OK を返し、ファイルが削除された場合は 404 を返します。このようにして、プローブ URL は必要なときに待機時間なしで 200 OK を受け取ることができます。ただし、これは実装とファイル管理の追加レイヤーになる可能性があります。これについてどう思いますか?このテストケースを処理するためのより良い方法を誰かが推奨できますか?

テスト
次のプローブ URL を使用して、成功するシナリオをテストしていました。

httpstat.us/500 は ignoreRUle を無効にし、VPN への接続を続行します。

4

0 に答える 0