Нужно создать VPN соединение L2TP на OSX
Нужно создать VPN-соединение L2TP на OSX без Shared Secret
NSString *server = @"serverIP";
NSString *username = @"user";
NSString *password = @"pass";
const void* passwordData = [[password dataUsingEncoding:NSUTF8StringEncoding] bytes];
[vpnManager loadFromPreferencesWithCompletionHandler:^(NSError *error) {
if (error) {
NSLog(@"Load config failed [%@]", error.localizedDescription);
return;
}
NEVPNProtocol *p = (NEVPNProtocol *)vpnManager.protocolConfiguration;
if (!p) {
p = [[NEVPNProtocol alloc] init];
}
p.username = username;
p.serverAddress = server;
p.passwordReference = (__bridge NSData * _Nullable)(passwordData);
p.disconnectOnSleep = NO;
vpnManager.protocolConfiguration = p;
vpnManager.localizedDescription = @"L2TPOverIPSec";
vpnManager.enabled = YES;
[vpnManager saveToPreferencesWithCompletionHandler:^(NSError *error) {
if (error) {
NSLog(@"Save config failed [%@]", error.localizedDescription);
}
}];
}];
NEVPNConnection *connect = [vpnManager connection];
NSError *error1;
if ([connect startVPNTunnelAndReturnError: &error1]) {
NSLog(@"connect");
} else {
NSLog(@"not connect");
}
после сборки я получаю эту ошибку Missing protocol or protocol has invalid type
, и другие 2 протокола используют туннель IKE, что вы можете посоветовать мне? Другой вариант - запустить терминал из кода и добавить эту строку networksetup -connectpppoeservice VPNConnect
но я не знаю, возможно ли это
2 ответа
Я знаю, что это старый вопрос, но я здесь, чтобы отметить, что структура Network Extension (откуда NEVPNProtocol) не может работать с протоколами уровня 2 OSI, то есть L2TP. (https://forums.developer.apple.com/thread/29909)
Кажется, что сейчас (начиная с iOS 8 и OS x 10.10) на устройствах Apple рекомендуется использовать встроенные протоколы или реализовать свои собственные, но на L3 / L4: https://developer.apple.com/documentation/networkextension
(И поэтому нет общедоступного API для использования L2TP)
Нет, вам нужно использовать SCNetwork и Helper Tool (чтобы получить root-доступ). С помощью этой ссылки вы сможете создать протокол L2TP и подключиться к нему.
Это работает даже на последней версии MacOS 11 «Big Sure».