ios-VPN(2) ios,osX

作者: 简鱼7819 | 来源:发表于2018-03-12 14:05 被阅读769次

一、概述

iOS 和 OS X 原生支持 IKEv2、Cisco IPSec、IPSec 上的 L2TP 和 PPTP。如果您所在的组织支持上述某个协议,则无需额外的网络配置或第三方应用即可将 Apple 设备连接至虚拟专用网络。

iOS 和 OS X 支持主流 VPN 提供商的 SSL VPN。与 iOS 和 OS X 支持的其他 VPN 协议一样,SSL VPN 既可在 Apple 设备上手动配置,也可以使用配置描述文件或 MDM 解决方案进行配置。

iOS 和 OS X 也支持 IPv6、代理服务器和隧道分离等技术,可在连接到组织网络时提供灵活的 VPN 体验。iOS 和 OS X 还兼容多种认证方式,包括密码、双因子令牌、数字证书以及用于 OS X 的 Kerberos。对于使用基于证书进行认证的环境,iOS 和 OS X 提供了“请求 VPN 域”功能来简化连接过程,该功能会在需要时发起 VPN 会话来连接到特定域。有关更多信息,请参阅本章的“请求 VPN 域”概览小节。

通过 iOS 7 或更高版本以及 OS X Yosemite 或更高版本,可将每个应用配置为独立于其他应用使用 VPN 连接。这样可以确保公司数据始终通过 VPN 连接传输,而其他数据(例如员工从 App Store 获得的个人应用)则不然。有关更多信息,请参阅本参考的“为 App 单独设置 VPN”小节。

iOS 还提供“始终打开 VPN”,这要求 iOS 设备在连接到任何其他网络服务前连接到经过批准的 VPN。您可以在被监督的设备上为蜂窝移动网络和无线局域网连接配置“始终打开 VPN”。若要实施此功能,您的 VPN 提供商必须支持“始终打开 VPN”。有关信息,请参阅本参考的“始终打开 VPN”概览小节。

二、支持协议和认证方式

iOS 和 OS X 支持以下协议和认证方式:

IKEv2:支持 IPv4 和 IPv6 以及:

认证方式:共享密钥、证书、EAP–TLS 和 EAP–MSCHAPv2

Suite B 密码系统:ECDSA 证书、使用 GCM 的 ESP 加密以及针对 Diffie–Hellman 群组的 ECP 群组

附加功能:MOBIKE、IKE 碎片、服务器重定向、分离隧道

IPSec 上的 L2TP:使用 MS–CHAP v2 密码、双因子令牌、证书进行用户认证,使用共享密钥或证书进行机器认证

SSL VPN:使用第三方 VPN 客户端通过密码、双因子令牌和证书进行用户认证

Cisco IPSec:使用密码、双因子令牌进行用户认证,使用共享密钥和证书进行机器认证

PPTP:使用 MS–CHAP v2 密码、证书和双因子令牌进行用户认证

OS X 还可以通过共享密钥或证书(通过“IPSec 上的 L2TP”和“PPTP”)使用 Kerberos 机器认证。

三、配置VPN三个类

NEVPNProtocol

该NEVPNProtocol类是一个抽象基类,一个子类为每种类型支持的隧道协议。

这个类的实例是线程安全的。

通用隧道协议属性:

VAR serverAddress :String? 

隧道服务器的地址

VAR 用户名:String? 

隧道协议认证证书的用户名组成部分。

VAR passwordReference :Data? 

持久性钥匙扣参阅包含隧道协议认证证书的密码组成一个钥匙串项目。

VAR 的IdentityReference :Data? 

持久性钥匙扣参阅包含证书和隧道协议认证证书的私钥组件的钥匙串项。

VAR identityData :Data? 

证书和隧道协议认证证书的私钥部件,PKCS12格式编码。

VAR identityDataPassword :String? 

密码被用于解密PKCS12数据中所设定的identityData属性。

VAR disconnectOnSleep :BOOL 

当设备休眠表示如果VPN的标志应断开。

VAR proxySettings :NEProxySettings? 

一个NEProxySettings对象含有待用于HTTP代理设置和HTTPS它们通过VPN路由连接。

NEVPNManager

NEVPNManager用于创建和管理VPN的配置和控制所得VPN隧道连接。

每个应用程序被允许建立一个单一的VPN配置。该NEVPNManager类有一个类方法(NEVPNManager),提供访问单个NEVPNManager实例。这个单一实例对应一个VPN配置,显示在iOS和网络首选项设置应用的VPN设置面板窗格在OS X系统预置的应用程序

由创建的VPN配置NEVPNManager实例被归类为个人VPN配置。在iOS和Mac OS X的,非个人VPN配置优先于个人的VPN配置。如果两个个人VPN配置和一个非个人的VPN配置同时连接,并且两个VPN隧道被配置为充当网络流量需要到达Internet缺省路由,则非个人VPN隧道实际上将默认路由到因特网,只要它是连接。

在使用NEVPNManager类要求com.apple.developer.networking.vpn.api权利。您可以通过启用“个人VPN”能力在Xcode您的应用程序得到这个权利为您的应用程序。

所管理的VPN配置NEVPNManager被存储在由网络扩展的框架管理的网络扩展偏好。VPN配置必须明确装入从网络扩展喜好内存可以使用它之前,并配置所做的任何更改,必须采取系统的影响之前明确地保存到网络扩展的偏好。

这个类的实例是线程安全的。

管理VPN配置:

class func shared() 

访问的单个实例NEVPNManager。

func loadFromPreferences(completionHandler: (NSError?) -> Void) 

从网络加载扩展喜好VP​​N配置。

func saveToPreferences(completionHandler: ((NSError?) -> Void)? = nil) 

保存在网络扩展喜好VP​​N配置。

func removeFromPreferences(completionHandler: ((NSError?) -> Void)? = nil) 

从网络扩展喜好删除VPN配置。

设置VPN配置参数: 

var onDemandRules: [NEOnDemandRule]? 

连接的有序列表按需规则

var isOnDemandEnabled: Bool 

用它来打开按需连接功能的布尔值。

var localizedDescription: String? 

包含VPN配置的显示名称的字符串。

VAR isEnabled :BOOL 

一个布尔值,用来切换VPN配置的启用状态。

VAR protocolConfiguration :NEVPNProtocol? 

一个NEVPNProtocol包含VPN隧道协议的配置设置对象。

控制VPN连接: 

var connection: NEVPNConnection 

一个NEVPNConnection用于控制由VPN配置中指定的VPN隧道对象。 

通知: 

static let NEVPNConfigurationChange: NSNotification.Name 

发布存储在网络扩展偏好的变化VPN配置之后。 

实例方法: 

FUNC setAuthorization (AuthorizationRef)

 NEVPNConnection

概述:NEVPNConnection对象不会直接实例化。相反,每个NEVPNManager对象具有相关联的NEVPNConnection对象作为只读属性。

该NEVPNConnection类提供了启动和编程停止VPN方法。该VPN可以启动和停止的另一种方式是通过VPN点播。见onDemandRules物业NEVPNManager和NEOnDemandRule。 

这个类的实例是线程安全的。

控制VPN连接: 

FUNC startVPNTunnel () 

开始连接该VPN的过程

func startVPNTunnel(options: [String : NSObject]? = [:]) 

开始连接该VPN的过程

FUNC stopVPNTunnel () 

开始断开的VPN的过程。

获取有关的VPN连接:

VAR 状态:NEVPNStatus 

VPN连接的当前状态

VAR connectedDate :Date? 

的日期和时间时,连接状态变更为NEVPNStatusConnected。

常量: 

NEVPNStatus 

VPN状态码

通知: 

static let NEVPNStatusDidChange: NSNotification.Name 

发布时的VPN连接的状态发生变化。

实例属性: 

var manager: NEVPNManager (Beta)

相关文章

网友评论

    本文标题:ios-VPN(2) ios,osX

    本文链接:https://www.haomeiwen.com/subject/bjrnfftx.html