NEVPNManager с протоколом L2TP - PullRequest
0 голосов
/ 14 декабря 2018

Я работаю с VPN и задаю этот вопрос , но теперь я хотел бы создать профиль VPN с использованием протокола L2TP, а не протокола IPSec.

У меня есть вся необходимая информация (пользователь, сервер, пароль, pre sharedKey), и служба правильно включена.Я пытаюсь создать приложение, которое просто подключается к VPN, создав правильный профиль настройки, например приложение «1.1.1.1» в App Store.

Я использую класс NEVPNProtocolIPSec, но думаю,неправильно.Нет класса для протокола L2PT?

В настройках устройства я могу вручную настроить VPN для L2PT, но как мне это сделать с помощью NEVPNManager ??

Вот мой код:

class VPN {

let vpnManager = NEVPNManager.shared();

private var vpnLoadHandler: (Error?) -> Void { return
{ (error:Error?) in
    if ((error) != nil) {
        print("Could not load VPN Configurations")
        return;
    }
    let p = NEVPNProtocolIPSec()
    p.username = "myUsername"
    p.serverAddress = "myAddressServer"
    p.authenticationMethod = NEVPNIKEAuthenticationMethod.sharedSecret

    let kcs = KeychainService();
    kcs.save(key: "SHARED", value: "sharedPsw")
    kcs.save(key: "VPN_PASSWORD", value: "password")
        p.sharedSecretReference = kcs.load(key: "SHARED")
        p.passwordReference = kcs.load(key: "VPN_PASSWORD")
        p.useExtendedAuthentication = true
        p.disconnectOnSleep = false
        self.vpnManager.protocolConfiguration = p
        self.vpnManager.localizedDescription = "myDescription"
        self.vpnManager.isEnabled = true
        self.vpnManager.isOnDemandEnabled = true
        self.vpnManager.saveToPreferences(completionHandler: self.vpnSaveHandler)
        }

}

private var vpnSaveHandler: (Error?) -> Void { return
{ (error:Error?) in
    if (error != nil) {
        print("Could not save VPN Configurations")
        return
    } else {
        do {
            try self.vpnManager.connection.startVPNTunnel()
        } catch let error {
            print("Error starting VPN Connection \(error.localizedDescription)");
        }
    }
    }
}

public func connectVPN() {
    //For no known reason the process of saving/loading the VPN configurations fails.On the 2nd time it works
    do {
        try self.vpnManager.loadFromPreferences(completionHandler: self.vpnLoadHandler)

    } catch let error {
        print("Could not start VPN Connection: \(error.localizedDescription)" )
    }
}

public func disconnectVPN() ->Void {
    vpnManager.connection.stopVPNTunnel()
}

Я не работаю, но он создает конфигурацию VPN для IPSec, но я хочу L2PT.Может ли кто-нибудь еще помочь мне, пожалуйста?

Может быть, кто-то сталкивается с той же проблемой.

...