57e60d08dc49网络及安全VPN

IOS VPN 开发 (一)

2017-06-26  本文已影响2997人  饭后的甜点_

废话不多说了直接上干货   这个是基础 写给新手的 如果想进阶了解 socks的 还有更深层的详细见 第二篇文章吧(还没有写 ......)

1.现在个人VPN不需要证书了 以前是要像苹果请求的 反正很麻烦 

2.导入框架 #import<NetworkExtesion/NetworkExtesion.h>

这个是iOS9 之后新出的 在之前是不允许我们使用的 iOS9之后提供给我们的最新框架 详见官方API 

3. NEVPNManager 这个类很重要 官方文档是这样说的 

NEVPNManager is used to create and manage VPN configurations and to control the resulting VPN tunnel connections.

大概意思就是用于创建和管理VPN配置和控制的VPN隧道连接的类.

4.官方给出了他的一个方法

loadFromPreferencesWithCompletionHandler: 就是这个玩意.....  加载方法

NEVPNManager初始化后,系统设置可以使用loadFromPreferencesWithCompletionHandler:加载方法:

[manager loadFromPreferencesWithCompletionHandler:^(NSError *error) {

// Put your codes here...

}];

5. 是时候配置一波vpn了 !!!! 累死了 

IOS9 以后 有好几种配置方式 IPSEC IKEV1 IKEV2 ....等等等

下面我就用ikev2来举例了 其他的都差不多

NEVPNProtocolIKEv2 *p = [[NEVPNProtocolIKEv2 alloc] init];

p.username = @"[Your username]";

p.passwordReference = [VPN user password from keychain];

p.serverAddress = @"[Your server address]";

p.authenticationMethod = NEVPNIKEAuthenticationMethodSharedSecret;

p.sharedSecretReference = [VPN server shared secret from keychain];

p.localIdentifier = @"[VPN local identifier]";

p.remoteIdentifier = @"[VPN remote identifier]";

p.useExtendedAuthentication = YES;

p.disconnectOnSleep = NO;

第二行和第三行分别是 用户名和密码  密码是一个引用从钥匙链; 因此,您需要将你的密码存储在钥匙链,然后检索它。

第四行就是服务器地址了 .. 不多说 开发的应该都知道

第五行是身份验证

NEVPNIKEAuthenticationMethodNone:不要使用IPSec服务器进行身份验证。NEVPNIKEAuthenticationMethodCertificate:使用证书和私钥作为身份验证凭据。NEVPNIKEAuthenticationMethodSharedSecret:使用共享密钥的身份验证凭据。

本文就用共享密钥的方法验证的!   你也可以用证书验证 随便的.

剩下的几个属性 百度吧 也没什么可说的 ,,,, 时间比较紧 

剩下的将我们写好的协议赋给我们的nevpnmanager 就大功告成了 

最后废话不都说  上代码地址 :  https://github.com/HZYDZT/HZYVPN

下一遍我会更仔细的说明一下 VPN 并且 写一下socks 感谢支持 

上一篇 下一篇

猜你喜欢

热点阅读