openVPN провайдер пакетного туннеля расширения сети не запускает VPN-туннель

Open vpn не работает должным образом. После запуска функции configureVPN часть connection.startVpn запускается, но ничего не происходит, но я бы добавил ниже

Я также проверил, что Plist PacketTunnelProvider кажется идеальным.

Функция readFile возвращает данные, полученные из файла ovpn.

Также добавлены права на расширение сети. Любая помощь была бы замечательной.

<dict>
    <key>NSExtensionPointIdentifier</key>
    <string>com.apple.networkextension.packet-tunnel</string>
    <key>NSExtensionPrincipalClass</key>
    <string>$(PRODUCT_MODULE_NAME).PacketTunnelProvider</string>
</dict>

class ViewController: UIViewController {

     var providerManager: NETunnelProviderManager!

     override func viewDidLoad() {
         super.viewDidLoad()
         self.loadProviderManager {
             self.configureVPN(serverAddress: "127.0.0.1", username: "uid", password: "pw123")
         }
      }

     func loadProviderManager(completion:@escaping () -> Void) {
        NETunnelProviderManager.loadAllFromPreferences { (managers, error) in
            if error == nil {
                self.providerManager = managers?.first ?? NETunnelProviderManager()
                completion()
            }
        }
     }


     func configureVPN(serverAddress: String, username: String, password: String) {
       guard let configData = self.readFile(path: "serverfile.ovpn") else { return }
        print("configData\(configData)")
       self.providerManager?.loadFromPreferences { error in
          if error == nil {
             let tunnelProtocol = NETunnelProviderProtocol()
             tunnelProtocol.username = username
             tunnelProtocol.serverAddress = serverAddress
             tunnelProtocol.providerBundleIdentifier = "com.bgnmobi.openDeneme.Packet" // bundle id of the network extension target
             tunnelProtocol.providerConfiguration = ["ovpn": configData, "username": username, "password": password]
             tunnelProtocol.disconnectOnSleep = false
             self.providerManager.protocolConfiguration = tunnelProtocol
             self.providerManager.localizedDescription = "GuardillaVPN" // the title of the VPN profile which will appear on Settings
             self.providerManager.isEnabled = true
             self.providerManager.saveToPreferences(completionHandler: { (error) in
                   if error == nil  {
                      self.providerManager.loadFromPreferences(completionHandler: { (error) in
                          do {
                            print("aSDFs34dasdsadsa")

                            try self.providerManager.connection.startVPNTunnel() // starts the VPN tunnel.
                          } catch let error {
                              print(error.localizedDescription)
                           }
                      })
                   } else {
                    print("asdasdsadsa")
                          print(error)
                }
             })
           }

         }
     }


  func readFile(path: String) -> Data? {
     let mypath = Bundle.main.path(forResource: "serverfile", ofType: ".ovpn")

    if let dir = FileManager.default.urls(for: .downloadsDirectory, in: .userDomainMask).first{
        let fileURL = dir.appendingPathComponent(mypath!)
     //reading
    do{
        let text2 = try String(contentsOfFile: mypath!,encoding: String.Encoding.utf8)
        print(text2)
        let gerekliURL = URL(fileURLWithPath: mypath!)
        print(gerekliURL)
        return try Data(contentsOf: gerekliURL, options: .uncached)
       }catch{
    //    print("can t read")  
    }
    }

    return nil

  }
 }

person Bartu Akman    schedule 16.03.2020    source источник
comment
у вас все еще есть проблема? ты это починил?   -  person Omarj    schedule 23.06.2020
comment
@Omarj я буду искать тебя   -  person Bartu Akman    schedule 24.06.2020
comment
@Omarj Я отвечу на свой вопрос ниже   -  person Bartu Akman    schedule 24.06.2020


Ответы (1)


Эти части будут соответствовать вашему целевому файлу. Будьте осторожны в этом вопросе. Это было проблемой в моем случае и, вероятно, в вашем тоже.

private static let appGroup = "group.com.project.examplevpn"

private static let tunnelIdentifier = "com.project.examplevpn.Extension"
    
person Bartu Akman    schedule 24.06.2020
comment
Я действительно не понимаю вашего ответа, не могли бы вы уточнить? - person Mutaeb Alqahtani; 16.07.2020