关键词:SSL VPN ocserver openconnect
引言
当前主流的入云网络模型中,基本都通过SD-WAN架构来实现用户入云,对于移动办公的场景并不能很好支撑,需要一种简洁且安全的随时随地访问云上资源的方式
VPP转发平台是目前业界主流的NFV数据转发开发平台,兼容性强,采用多核多线程进行处理,性能高等优点。
SSL VPN是传统网络安全设备必备的安全接入功能,如果将SSL VPN集成到云网关上,就能很好的解决用户移动入云的场景需要。
SSL-VPN访问云上资源的主要流程为:
OCServer: 一款开源的VPN服务端软件,它基于OpenConnect VPN协议,支持多种操作系统,包括Windows、Linux、macOS等。Ocserver提供了安全、高效的VPN连接,可以帮助用户在Internet上建立安全的虚拟专用网络。
Ocserver使用TLS和DTLS协议进行数据加密和身份验证,确保数据传输的安全性。同时,它还支持多种身份验证方式,包括用户名/密码、证书、双因素身份验证等。
Ocserver还提供了灵活的配置选项,包括网络拓扑、路由规则等,可以满足不同用户的需求。它还支持多种VPN客户端,包括OpenConnect、AnyConnect等,方便用户使用。
OpenConnect:是一款开源的VPN客户端软件,它基于SSL和TLS协议,支持多种操作系统,包括Windows、Linux、macOS等。OpenConnect提供了安全、高效的VPN连接,可以帮助用户在Internet上建立安全的虚拟专用网络。
OpenConnect支持Cisco AnyConnect VPN协议,可以连接到大多数Cisco VPN服务器。它还支持多种身份验证方式,包括用户名/密码、证书、双因素身份验证等。
OpenConnect使用DTLS协议进行数据加密和身份验证,确保数据传输的安全性。同时,它还提供了灵活的配置选项,包括网络拓扑、路由规则等,可以满足不同用户的需求。
OpenConnect还提供了多种GUI界面,方便用户使用。它还支持命令行界面,可以通过命令行进行配置和控制。
总之,OpenConnect是一款功能强大的开源VPN客户端软件,它提供了安全、高效的VPN连接,可以帮助用户建立安全的虚拟专用网络。
Ocserver和Openconnect之间需要通过一系列协商流程才能创建起VPN隧道,下面是两端的整个交互流程:
- 客户端向服务器发送TCP连接请求。
- 服务器接受连接请求,并回复一个TCP连接确认。
- 客户端发送TLS握手请求。
- 服务器回复TLS握手响应,包括服务器证书和其他参数。
- 客户端验证服务器证书的有效性,并生成一个随机数作为对称密钥。
- 客户端使用服务器证书中的公钥加密对称密钥,并发送给服务器。
- 服务器使用自己的私钥解密对称密钥,并保存在内存中。
- 客户端和服务器之间开始使用对称密钥进行数据加密和解密,并进行身份验证。
在这个过程中,客户端和服务器之间的通信都是通过TCP连接进行的,而TLS协商则是在TCP连接上建立的。TLS协商过程中,客户端和服务器之间交换了证书和随机数等信息,用于生成对称密钥和进行身份验证。一旦TLS协商完成,客户端和服务器之间就可以开始使用对称密钥进行数据加密和解密,确保数据传输的安全性。
tcp握手:
tls协商:
上面是标准的TCP和TLS协商流程。下面是Openconnect协议协商流程:
- 客户端向服务端发起请求,基于http的POST请求。
- 服务端确认请求并回复,同时要求客户端携带用户名。
- 客户端发起带用户名的请求,基于http的POST请求。
- 服务端确认请求并回复,同时要求客户端携带密码。
- 客户端发起带密码的请求,基于http的POST请求。
- 服务端使用用户名密码验证通过之后,回复connect消息,消息携带用户端创建虚拟网卡和相关路由的配置信息。
- 客户端回复确认信息,并创建VPN虚拟接口,至此VPN隧道成功创建。
总结:oceserver和openconnect代码逻辑清晰明了,是非常适合移植复用的开源软件。