前言
本文简要介绍了vpn的原理与openVPN的使用
浅谈vpn实现原理
众所周知,由于公共IP的短缺,我们在组建局域网时,通常使用保留地址作为内部IP(通常为192.168.xx.xx,172.16.xx.xx和10.0.xx.xx),这些”保留地址”Internet上是无法被路由的,所以在正常情况下我们无法直接通过Internet访问到某个局域网内的主机(不准确的说,vpn原来是做这个事情的)。为了实现这一目的,我们需要使用VPN隧道技术,其实现过程可以通过下面的图示说明。
本图也体现了使用vpn的两种方式:
- 是在内网环境下,因为vpn网关的存在,本机无需特殊配置,
192.168.56.101
和172.168.56.101
就像在一个网络中(所以叫Virtual Network嘛)。 - 个人电脑通过vpn client创建虚拟网卡,进而和局域网内的
172.168.56.101
交互。
VPN可通过服务器、硬件、软件等多种方式实现。
OpenVPN使用
OpenVPN 是一个基于 OpenSSL 库的应用层 VPN 实现。
原理
(本段来自百度百科)OpenVpn的技术核心是虚拟网卡,虚拟网卡是使用网络底层编程技术实现的一个驱动软件,安装后在主机上多出现一个“网卡”(我们看到的“网卡”在操作系统中就是一个数据结构),可以像其它网卡一样进行配置。服务程序可以在应用层打开虚拟网卡,如果应用软件(如IE)向虚拟网卡发送数据,则服务程序(比如vpn client)可以读取到该数据。如果服务程序写合适的数据到虚拟网卡,应用软件也可以接收得到。(本原理与CoreOS中的flannel极其类似)
以上图中的“个人电脑”为例,openvpn client安装完毕后,应将vpn server的相关配置文件复制到其config
目录中。其中包含vpn server的ip等信息(这样“个人电脑”才能将数据包发送到“vpn网关2”)。
加密和验证
使用OpenSSL的加密以及验证功能,所以我们安装openvpn client时,要向客户端添加vpn server生成的一些key。