首页 > 解决方案 > NEDNSProxyProvider iOS 无法浏览任何网站

问题描述

**嗨,我已经配置了 NEDNSProxyProvider,我在以下功能中得到了正确的调用,但在设备上没有网站被打开。**

func handleNewFlow(_ flow: NEAppProxyFlow) -> Bool {

       var host = ""
       var port = ""
       var blocked:Bool = false
       var endpoint = NWHostEndpoint.init()
       NSLog("DNSProxyProvider handleNewFlow : ")
       if let tcpFlow = flow as? NEAppProxyTCPFlow {
           host = (tcpFlow.remoteEndpoint as! NWHostEndpoint).hostname
           port = (tcpFlow.remoteEndpoint as! NWHostEndpoint).port
           NSLog("DNSProxyProvider TCP HOST : \(host)")
           NSLog("DNSProxyProvider TCP PORT : \(port)")
           NSLog("DNSProxyProvider TCP debugDescription : \(tcpFlow.debugDescription)")
           if let ep = tcpFlow.remoteEndpoint as? NWHostEndpoint{
               endpoint = ep
           }
       } else if let udpFlow = flow as? NEAppProxyUDPFlow {
           host = (udpFlow.localEndpoint as! NWHostEndpoint).hostname
           port = (udpFlow.localEndpoint as! NWHostEndpoint).port

           NSLog("DNSProxyProvider UDP HOST : \(host)")
           NSLog("DNSProxyProvider UDP PORT : \(port)")
           NSLog("DNSProxyProvider UDP debugDescription : \(String(describing: udpFlow.localEndpoint))")
           if let ep = udpFlow.localEndpoint as? NWHostEndpoint{
               endpoint = ep
           }

       }

  //*


       flow.open(withLocalEndpoint: endpoint, completionHandler: { (error) in
       if error != nil  {
           NSLog("DNSProxyProvider: open error: \(error.debugDescription)")

           }

       });

// */
       return true
   }

标签: iosnetworkextensionnednsproxyprovider

解决方案


我能够解决这个问题,因为我必须为我从 handleNewFlow 函数返回 true 的 dns 数据包提供 IP。这是基本流程

在 flowReference 检查错误时调用 open,如果错误为 nil 调用 readDatagrams 将数据报发送到您的服务器以解决它们 调用 writeDatagrams 并从服务器重新调整修改的数据报,然后通过再次调用 readDatagrams 或关闭句柄来检查是否存在更多数据报


推荐阅读