我构建了SimpleTunnel示例应用程序(由apple提供),并在运行OS 10.11(OS X El Capitan)的MAC上运行IOS设备上的VPN客户端和VPN服务器(tunnel_server)
在MAC: -
$ sudo ./tunnel_server 550 ../../tunnel_server/config.plist
Run Code Online (Sandbox Code Playgroud)
回应: -
tunnel_server[87725:2604682] Starting network service on port 550
tunnel_server[87725:2604682] Network service published successfully
Run Code Online (Sandbox Code Playgroud)
在IOS设备上: -
接下来,我在IOS设备上运行PacketTunnel应用程序.添加了具有正确IP地址(运行tunnel_server的MAC的IP地址)和端口号(tunnel_server的端口号为550)的VPN配置.
接下来我尝试从IO
设备连接到VPN ,这看起来很好,因为我看到VPN登录状态栏.
在运行tunnel_server的屏幕上响应: -
tunnel_server[87739:2606312] Accepted a new connection
tunnel_server[87739:2606312] Allocated address Optional("10.8.0.15")
Run Code Online (Sandbox Code Playgroud)
但是我无法在IOS设备上使用Safari浏览互联网(它超时),但我可以从MAC中做同样的事情.
关于我可能缺少什么的任何见解?
请注意我的MAC没有安装OS X服务器.我还在MAC上启动tunnel_server之前从终端运行了以下两个命令
sudo sysctl net.inet.ip.forwarding=1
sudo sysctl net.inet.ip.fw.enable=1
Run Code Online (Sandbox Code Playgroud) 在苹果提供的simpleTunnel示例应用程序中,容器应用程序和数据包隧道提供商使用 IPC 进行通信。
每当启用连接切换按钮时,都会调用startVPNTunnel() API,并且操作系统会启动数据包隧道提供程序,该提供程序又会调用重写的方法startTunnelWithOptions()。这是我们开始连接 VPN 服务器的地方。startTunnelWithOptions依次调用startTunnel,startTunnel调用createTCPConnectionToEndpoint ( connection =provider.createTCPConnectionToEndpoint(endpoint,enableTLS:false, TLSParameters:nil,delegate:nil) )
我们如何从该连接获取套接字描述符(以便我可以在另一个发送 SSL 和其他自定义消息的 C++ 库中使用它)?( connnection 是类NWTCPConnection的实例,但NWTCPConnection似乎不包含套接字描述符)