如何在ipv6环境中使用NEPacketTunnelProvider

时间:2019-04-30 07:42:30

标签: ios swift networkextension

我的应用程序使用IPv4实现了NEPacketTunnelProvider隧道。隧道系统可以完美运行,但在IPv6中无法正常运行。

我正在尝试使VPN应用适应ipv6环境,但是我不知道如何开始,请告诉我怎么做。

这是我的代码:

let newSettings = NEPacketTunnelNetworkSettings(tunnelRemoteAddress: "127.0.0.1")
let ip = "32.432.53.1"
let subnet = "10.3.21.1"
newSettings.ipv4Settings = NEIPv4Settings(addresses: [ip], subnetMasks: [subnet])
newSettings.mtu = 1432
newSettings.ipv4Settings?.includedRoutes = [NEIPv4Route.default()]
newSettings.ipv6Settings?.includedRoutes = [NEIPv6Route.default()]
newSettings.dnsSettings = NEDNSSettings(servers: ["8.8.8.8"])
let endPoint = NWHostEndpoint(hostname: "12.432.55.22", port: 9090)
var session = self.createUDPSession(to: endPoint, from: nil)

self.session?.writeDatagram(newData, completionHandler: { (error) in

})
self.session?.setReadHandler({ (newPackets: [Data]?, error: Error?) -> Void in

}, maxDatagrams: NSIntegerMax)

1 个答案:

答案 0 :(得分:0)

newSettings.ipv4Settings = NEIPv4Settings(addresses: [ip], subnetMasks: [subnet]) newSettings只有ipv4Settings

您应该添加以下行:

let ipv6Settings = NEIPv6Settings.init(addresses: ["fe80:1ca8:5ee3:4d6d:aaf5"], networkPrefixLengths: [64])
newSettings.ipv6Settings = ipv6Settings

但是我的演示的UDPSession setReadHandler没有涉及