马哥Linux运维原创作者投稿

OpenVPN原理及其搭建

2017-07-01  本文已影响2550人  天之蓝色

1. OpenVPN的概念

OpenVPN是一个用于创建虚拟专用网络加密通道的软件包,最早由James Yonan编写。OpenVPN可以使用公开密钥、电子证书、或者用户名/密码来进行身份验证。它大量使用了OpenSSL加密库中的SSLv3/TLSv1协议函数库。
OpenVPN可以在Solaris、Linux、OpenBSD、FreeBSD、NetBSD、Mac OS X以及Windows、Android和ios上运行。
OpenVPN不是一个基于Web的VPN软件,也不与IPsec及其它VPN软件包兼容。

2. OpenVPN的原理

OpenVPN的技术原理主要包括:虚拟网卡、加密(SSL协议的实现)、身份验证、功能与端口。

2.1 虚拟网卡

虚拟网卡是使用网络底层编程技术实现的一个驱动软件,安装此类程序后主机上会增加一个非真实的网卡,它可以像其它网卡一样进行配置。服务程序可以在应用层打开虚拟网卡,如果应用软件 (如网络浏览器)向虚拟网卡发送数据,则服务程序可以读取到该数据,如果服务程序写合适的数据到虚拟网卡,应用软件也可以接收 得到。很多系统都可以安装虚拟网卡,所以OpenVPN的跨平台使用变得容易。
在OpenVPN中,如果用户访问一个远程的虚拟地址(属于虚拟网卡配置的地址系列,区别于真实地址),则操作系统会通过路由机制将数据包(TUN模式)或数据帧(TAP模式)发送到虚拟网卡上,服务程序接收该数据并进行相应的处理后,会通过socket从外网上发送出去。这完成了一个单向传输的过程,反过来也是一样。当远程服务程序通过SOCKET从外网上接收到数据,并进行相应的处理后,又会发送回给虚拟网卡,则相应应用软件就会接收到。

2.2 加密

OpenVPN使用OpenSSL库来加密数据与控制信息,所以它可以使用任何OpenSSL支持的算法,它可以使用HMAC功能来进一步提高连接的安全性,OpenSSL的硬件加速也能提高它的性能。

2.3 身份验证

OpenVPN支持的身份验证方式:

2.4 功能与端口

3. OpenVPN的实现

OpenVPN的实现分为服务端和客户端。
搭建过程中注意软件版本,特别是Windows客户端这里使用的是最新的OpenVPN版本2.4.3,老的版本的客户端可能出现无法连接OpenVPN服务端的情况。

3.1 OpenVPN服务端

系统环境:CentOS7 内核:4.9.15-x86_64
OpenVPN:2.4.3
OpenVPN软件包在EPEL源中,需要确认系统可以获取相应的软件包。以下是具体的OpenVPN服务器搭建过程。

记录前面生成的5个文件(dh2048.pem、ca.crt、server.crt、server.key、ta.key)的存放位置,然后在openvpn的server配置文件文件中需要指定它们的位置。为了配置方便可以将这些文件mv到和server.conf在同一目录中,这样配置文件中只需要启用相关的配置项即可,否则需要在配置文件中指定文件的绝对路径。server.conf默认即启用了这5项配置。

systemctl status firewalld.service
systemctl start firewalld.service
firewall-cmd --list-services   #查看防火墙已经允许哪些服务通过  
firewall-cmd --add-service openvpn #添加openvpn服务且立即生效
firewall-cmd --permanent --add-service openvpn  #添加openvpn服务只有重启后生效且是永久的
firewall-cmd  --add-masquerade   #添加地址伪装服务且立即生效
firewall-cmd --permanent --add-masquerade #添加地址伪装服务只有重启后生效且是永久的
firewall-cmd --query-masquerade  #查询是否添加成功
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1  #将默认的0改成1
sysctl -p   #使修改的参数生效
systemctl enable openvpn@.service   #设置服务开机自启,这里的@是默认就有的
systemctl start openvpn@.service    #启用openvpn服务 

3.2 安装OpenVPN客户端

系统环境:win10
OpenVPN客户端:2.4.3
安装好客户端以后,打开其安装目录,找到config文件夹,建立文本文件client.ovpn,内容如下:

client
dev tun
proto udp
tun-mtu 1500
cipher AES-256-CBC
keysize 256
remote x.x.x.x 1194
resolv-retry infinite
nobind
auth-nocache
verb 3
ca ca.crt
cert client.crt
key client.key
tls-auth ta.key 1

3.3 下载客户端需要使用的认证文件

从OpenVPN服务端将前面创建的如下四个文件下载至客户端安装路径config文件夹中。 ca.crt、client.crt、client.key、ta.key

3.4 连接OpenVPN服务端

在客户端上启动OpenVPN GUI程序,然后在任务栏找到OpenVPN GUI程序的图标后右键选择"connect",然后会自动弹出系统日志,当显示“MANAGEMENT: >STATE:xxxxxx,CONNECTED,SUCCESS`时,即表示已经连接成功。如果出现WARNING或者eror信息及时根据日志进行故障排除。

3.5 验证OpenVPN服务可用性

附件OpenVPN Mac OS X、Windows、Android客户端:链接:
百度盘 密码:3efy

上一篇 下一篇

猜你喜欢

热点阅读