OpenVPN下载、安装、配置及使用详解

OpenVPN简介

OpenVPN是一个用于创建虚拟专用网络(Virtual Private Network)加密通道的免费开源软件。使用OpenVPN可以方便地在家庭、办公场所、住宿酒店等不同网络访问场所之间搭建类似于局域网的专用网络通道。OpenVPN使用方便,运行性能优秀,支持Solaris、Linux 2.2+(Linux 2.2+表示Linux 2.2及以上版本,下同)、OpenBSD 3.0+、FreeBSD、NetBSD、Mac OS X、Android和Windows 2000+的操作系统,并且采用了高强度的数据加密,再加上其开源免费的特性,使得OpenVPN成为中小型企业及个人的VPN首选产品。

使用OpenVPN配合特定的代理服务器,可用于访问Youtube、FaceBook、Twitter等受限网站,也可用于突破公司的网络限制。由于OpenVPN支持UDP协议,还可以配合HTTP代理(HTTP Proxy)使用,使得只要是能够打开网站或上QQ的地方,就可以访问外部的任何网站或其他网络资源。

OpenVPN的官方最新版本是OpenVPN 2.3.0(发布于2013年01月08日),你可以点击此处查看OpenVPN 2.3.0的更新日志内容

OpenVPN下载

你可以点击下列链接直接从360云盘下载OpenVPN 2.3.0的官方正式版Windows安装文件(特别值得注意的是:由于Windows自身的限制,Windows版本的OpenVPN只有具备管理员权限的用户才能成功安装。当前最新版本的OpenVPN 2.3.0 只能在Windows XP及以上版本的操作系统上安装)。
OpenVPN 2.3.0 Windows 32位 安装文件(1.6 MB)
OpenVPN 2.3.0 Windows 64位 安装文件(1.6 MB)

OpenVPN安装

在这里笔者以同一个局域网内的两台电脑A(IP:192.168.0.2,操作系统:Windows 7 SP1 64位旗舰版)和B(IP:192.168.0.3,操作系统:Windows XP SP3 32位 专业版)为例,将电脑A作为VPN服务器、电脑B作为VPN客户端,进行安装、配置、连通测试。在这里,笔者将统一安装OpenVPN 2.3.0 Windows 32位版本的安装文件。

在安装之前,先给读者们介绍一下OpenVPN的大致工作原理,以便于更好地理解后面的安装和使用操作。

在OpenVPN中,服务器端和客户端使用的是同一个安装文件,安装方法也是一样的,只是配置方法不一样。其主要区别是,在安装目录的config文件夹下,服务器端配置的文件叫做server.ovpn,客户端配置的文件叫做client.ovpn,当然,配置文件中的内容也不相同。OpenVPN通过不同的设置来决定该程序是充当服务器端还是客户端。

OpenVPN的大致工作原理就是在服务器端和客户端之间搭建一个独立于当前网络环境的加密通道,将服务器端和多个客户端组建成一个独立的虚拟局域网,从而实现服务器端和客户端、客户端和客户端之间的相互通信。

例如,我们的电脑A和电脑B的局域网网段是192.168.0.*,OpenVPN可以在它们之间搭建一个独立的虚拟局域网,并且网段配置为10.0.0.*(网段可以由用户随意配置,只要不和它们自身的网段192.168.0.*冲突即可)。此时:

电脑A在本地局域网中的IP地址是192.168.0.2,在虚拟局域网中的IP地址是10.0.0.1;
电脑B在本地局域网中的IP地址是192.168.0.3,在虚拟局域网中的IP地址是10.0.0.6(笔者的OpenVPN客户端的IP地址设置为由服务器自动分配)。

电脑B可以通过IP地址192.168.0.1访问电脑A,也可以通过IP地址10.0.0.1访问电脑A。虚拟局域网是独立存在的,不会和本地其他网络之间形成干扰,不过虚拟局域网之间的相互访问和操作方式与本地局域网的几乎完全相同。

当然,笔者这里由于条件限制,电脑A和电脑B本身就在同一个局域网中,并且可以互相访问。可是在一些情况下,多台计算机不在同一个局域网内,并且它们之间无法直接互相访问,或者它们直接互相访问没有进行数据加密——不够安全,这个时候就轮到OpenVPN出马了。

OpenVPN在安装的时候会在电脑上安装一个虚拟网卡驱动,并在网络连接里创建一个本地连接的图标(下图的【本地连接2】)。OpenVPN就是靠它来搭建虚拟局域网的。

接下来,我们正式开始安装OpenVPN,在电脑A和电脑B上分别双击安装程序进行安装(安装方式完全一致)。在安装的时候,必须注意的是:在OpenVPN 2.3.0中,默认是不安装easy-rsa(一个加密证书生成程序)的,因此,我们必须手动勾选如下图所示的两个选项(在OpenVPN 2.2中是默认选中的)。

然后一路Next(如果询问是否安装TAP-Win32驱动程序时,请选择「仍然继续」),就安装成功了。

OpenVPN的配置

OpenVPN的配置工作主要分为如下两步:

  • 第一步,创建加密证书和私钥,其中包括服务器端和客户端都要用到的核心CA证书和私钥,服务器端自身的加密证书(即公钥)和私钥,以及每个客户端对应的加密证书和私钥。
  • 第二步,为服务器和客户端编写对应的配置文件,然后将其与第一步中生成的相应证书、私钥放在OpenVPN安装目录的config文件夹下。

OpenVPN支持基于加密证书的双向认证。在OpenVPN中,不管是服务器还是客户端,所有的证书和私钥都需要由服务器端生成,客户端要先获得服务器端分配给它的加密证书和密钥才能成功连接。这与使用网上银行有些类似,大多数银行网站都会要求你先下载并安装一个数字证书,才允许你进行网上付款或其他操作。

下面我们开始具体配置:

第一步:创建加密证书和私钥

1、修改OpenVPN服务器端vars.bat.sample文件(客户端的无需做任何修改)。

使用记事本或其他文本编辑工具打开OpenVPN安装目录\easy-rsa\vars.bat.sample文件,如下图所示:

变量HOME表示easy-rsa文件夹的路径 (笔者的OpenVPN服务器端安装在D:\OpenVPN)。
变量KEY_SIZE表示生成的私钥大小,一般填写为1024或2048,默认为1024位,你可以根据自己的需要进行修改,笔者这里使用默认值。

由于稍后给客户端生成对应加密证书和私钥时,程序会要求我们输入一些注册信息。如果你需要配置多个客户端,并且许多信息都相同(比如国家、省市、地址、公司名称等)你还可以修改vars.bat.sample文件后面的一些相关变量的默认值,这样在稍后生成客户端证书的时候,如果该信息项不输入就会采用默认值。

2、运行DOS命令,初始化执行环境。

在作为服务器端的电脑A上打开DOS命令窗口,并进入到%OpenVPN的安装目录%\easy-rsa目录。笔者的服务器端安装目录是D:\OpenVPN,因此这里进入D:\OpenVPN\easy-rsa

然后依次输入并执行以下命令(括号内的是笔者附加的注释):

init-config(初始化配置,将vars.bat.sample文件的内容复制到vars.bat。实际上,你也可以直接双击执行easy-rsa目录下的init-config.bat文件来代替这一步。)
vars(设置相应的局部环境变量,就是我们在vars.bat.sample文件中设置的内容)
clean-all(相关设置和清理工作)

3、创建CA根证书:build-ca

如上图所示,在build-ca的时候需要输入一些注册信息。在输入信息的时候,如果你不输入任何信息,就表示采用默认值(前面[]中的内容就是默认值);如果你输入.,则表示当前信息项留空白。值得注意的是,上图中红色矩形框中的OpenVPN_CA是证书的通用名称(Common Name),相当于我们常说的账号,你也可以自行输入其他名称。

4、创建服务器端证书:build-key-server server

如上图所示,命令中的参数server指的是生成的证书文件名称,你可以按照自己的需要进行修改,不过后面的Common Name也应保持一致。第二个红色矩形框中是输入的密码,你也可以根据意愿自行输入。最后程序会询问你是否注册并提交证书,两次均输入y即可。

5、创建迪菲·赫尔曼密钥:build-dh

迪菲·赫尔曼密钥交换(Diffie–Hellman key exchange,简称「D–H」) 是一种安全协议。它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道创建起一个密钥。这个密钥可以在后续的通讯中作为对称密钥来加密通讯内容。

6、创建客户端证书:build-key client

如上图所示,命令中的参数client表示生成的证书文件名称,你可以按照自己的需要进行修改,不过后面的Common Name也应保持一致。第二个红色矩形框中是输入的密码,你也可以根据意愿自行输入。最后程序会询问你是否注册并提交证书,两次均输入y即可。

如果你想创建多个不同的客户端证书,只需要重复此步骤即可。切记,Common Name不要重复,这是OpenVPN用来区分不同客户端的关键所在

7、生成ta.key:openvpn --genkey --secret keys/ta.key (可选操作)

这一步其实是可选操作,生成的ta.key主要用于防御DoS、UDP淹没等恶意攻击。命令中的第3个参数keys/ta.key表示生成的文件路径(含文件名)。

创建完证书后,我们会发现easy-rsa目录下多了一个keys文件夹。现在我们将keys文件夹中对应的文件复制到OpenVPN服务器或客户端的安装目录的config文件夹下。

服务器端config目录需要的文件包括:

ca.crt
ca.key(核心CA证书和私钥)
dh1024.pem(如果最初的变量KEY_SIZE设为2048,这里就是dh2048.pem)
server.crt
server.key(名称server根据个人设置可能有所不同)
ta.key(名称也可自行设置,如果不需要防御攻击,可以不创建或复制此文件)

客户端config目录需要的文件包括:

ca.crt
client.crt
client.key(名称client根据个人设置可能有所不同)
ta.key(如果服务器端具备此文件,客户端也应具备)

非常重要的提醒:以上命令都是在同一个DOS窗口中执行的,如果你以后需要打开新窗口来执行命令(比如创建新的客户端证书):你不需要再执行init-config命令,除非你再次改动了vars.bat.sample文件;每一次打开新窗口时都需要先执行vars命令,后面才能执行其他命令。

第二步:编写对应的配置文件

上面我们已经创建了OpenVPN配置所需要的各种证书和私钥,现在我们开始为服务器和客户端编写对应的配置文件。

对于一个刚刚接触OpenVPN的人来说,我们应该配置些什么呢,又该从哪里入手呢?别着急,OpenVPN已经考虑到了这一点。在OpenVPN的安装目录的sample-config文件夹中存放有3个示例模板文件:server.ovpn、client.ovpn、sample.ovpn。其中,server.ovpn是服务器的配置模板,client.ovpn是客户端的配置模板(sample.ovpn也可用作客户端配置模板,不过配置比较简单,不够全面。按照官方的说法,client.ovpn可用于连接具有多个客户端的服务器端配置文件)。

现在,我们就复制server.ovpn到服务器的config目录,client.ovpn到客户端的config目录,并在此基础上进行修改。在OpenVPN的配置文件中,前面带「#」或「;」的表示注释内容。

1、 编辑服务器端配置文件。

server.ovpn的英文注释中已经比较清楚地解释了每一个设置的作用,笔者对配置文件的英文注释作了全文翻译,你可以点击查看server.ovpn的配置内容详解,在此不再赘述,下面只提取所有用到的命令。

local 192.168.0.2     #指定监听的本机IP(因为有些计算机具备多个IP地址),该命令是可选的,默认监听所有IP地址。
port 1194             #指定监听的本机端口号
proto udp             #指定采用的传输协议,可以选择tcp或udp
dev tun               #指定创建的通信隧道类型,可选tun或tap
ca ca.crt             #指定CA证书的文件路径
cert server.crt       #指定服务器端的证书文件路径
key server.key    #指定服务器端的私钥文件路径
dh dh1024.pem         #指定迪菲赫尔曼参数的文件路径
server 10.0.0.0 255.255.255.0   #指定虚拟局域网占用的IP地址段和子网掩码,此处配置的服务器自身占用10.0.0.1。
ifconfig-pool-persist ipp.txt   #服务器自动给客户端分配IP后,客户端下次连接时,仍然采用上次的IP地址(第一次分配的IP保存在ipp.txt中,下一次分配其中保存的IP)。
tls-auth ta.key 0     #开启TLS,使用ta.key防御攻击。服务器端的第二个参数值为0,客户端的为1。
keepalive 10 120      #每10秒ping一次,连接超时时间设为120秒。
comp-lzo              #开启VPN连接压缩,如果服务器端开启,客户端也必须开启
client-to-client      #允许客户端与客户端相连接,默认情况下客户端只能与服务器相连接
persist-key
persist-tun           #持久化选项可以尽量避免访问在重启时由于用户权限降低而无法访问的某些资源。
status openvpn-status.log    #指定记录OpenVPN状态的日志文件路径
verb 3                #指定日志文件的记录详细级别,可选0-9,等级越高日志内容越详细

实际修改内容参见下面的截图。

2、 编辑客户端配置文件。

client.ovpn中所有用到的命令如下:

client         #指定当前VPN是客户端
dev tun        #必须与服务器端的保持一致
proto udp      #必须与服务器端的保持一致
remote 192.168.0.2 1194      #指定连接的远程服务器的实际IP地址和端口号
resolv-retry infinite    #断线自动重新连接,在网络不稳定的情况下(例如:笔记本电脑无线网络)非常有用。
nobind         #不绑定特定的本地端口号
persist-key
persist-tun
ca ca.crt      #指定CA证书的文件路径
cert client.crt       #指定当前客户端的证书文件路径
key client.key    #指定当前客户端的私钥文件路径
ns-cert-type server      #指定采用服务器校验方式
tls-auth ta.key 1     #如果服务器设置了防御DoS等攻击的ta.key,则必须每个客户端开启;如果未设置,则注释掉这一行;
comp-lzo              #与服务器保持一致
verb 3                #指定日志文件的记录详细级别,可选0-9,等级越高日志内容越详细

修改完毕并保存之后,我们就可以看到在电脑A(服务器端)的OpenVPN安装目录的config文件夹下包含如下文件:

在电脑B(客户端)的OpenVPN安装目录的config文件夹下包含如下文件:

最后,我们在电脑A(服务器端)的Windows运行框中输入「services.msc」,进入windows服务界面,启动服务「OpenVPN Service」:

然后,我们进入电脑B,双击OpenVPN安装时在桌面上生成的图标,此时在任务栏的右下角将会出现如下图所示的红色小图标,右键该图标,点击connect:

紧接着,就会自动弹出如下窗口,右下角图标变为黄色。

连接成功后,窗口自动关闭,右下角的图标变为绿色。

至此,OpenVPN就已经安装成功了,你可以像局域网一样地使用OpenVPN客户端访问服务器或其他客户端了。

必须说明的是,上面的有些操作并不是绝对的,比如:启动OpenVPN服务器,并不一定只有「启动OpenVPN Service服务」这一种方式,客户端的证书也不一定非得在服务器端生成……不过这些情况相对比较复杂,再次就不多作讨论了。

OpenVPN的使用

本文介绍的只是OpenVPN在Windows操作系统下的安装、配置及使用方法。如果你是在Linux或其他操作系统中使用,请回复评论或发送邮件告知笔者,笔者将会发布Linux、FreeBSD等系统下的OpenVPN的安装、配置及使用教程。

在使用OpenVPN的过程中,如果你遇到了一些意料之外的问题,你可以参考下面的文章:

原文连接:http://www.365mini.com/page/14.htm

时间: 2024-11-06 05:00:38

OpenVPN下载、安装、配置及使用详解的相关文章

webpack安装配置使用教程详解

webpack安装配置使用教程详解 www.111cn.net 更新:2015-09-01 编辑:swteen 来源:转载 本文章来为各位详细的介绍一下关于webpack安装配置使用教程吧,这篇文章对于不喜欢使用 jspm测试的朋友可以参考一下. webpack 入门 目录 1 安装 webpack2 初始化项目3 webpack 配置4 自动刷新5 第三方库6 模块化7 打包.构建8 webpack 模板我最近大量使用的是 jspm,但因为用它搭建的前端开发环境中,写测试代码非常困难,而项目又

redis 安装配置及持久化详解

一.redis简介 二.redis安装 三.redis配置文件详解 四.redis持久化详解 1.redis 简介 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询. Redi

nginx之旅第一篇:nginx下载安装、nginx配置文件详解、nginx默认网站

一.nginx下载安装 版本nginx 1.15.5 系统环境centos7.5(本机ip192.168.199.228) 关闭selinux 和防火墙firewall 1.下载 wget http://nginx.org/download/nginx-1.15.5.tar.gz -P /usr/src 2.安装 安装大概过程 配置---编译---安装 配置 1)检查环境 是否 满足安装条件 依赖解决 2)指定安装方式 配置文件 命令文件 各种文件放哪里 开启模块功能[内 置模块 三方模块] 3

FastDFS分布式文件系统&Nginx负载均衡最小环境安装配置[超级详解]

1.背景 FastDFS 是一款开源的.分布式文件系统(Distributed File System),由淘宝开发平台部资深架构师余庆开发.该开源项目的主页是 http://code.google.com/p/fastdfs .可以通过 fastdfs.sourceforge.net 下载.FastDFS论坛是 http://www.csource.org ,目前是指向 ChinaUnix 开源项目孵化平台的一个板块 FastDFS,网址为 bbs.chinaunix.net/forum-24

.Net+EF连接Oracle 10、11 开发,ODAC安装配置与使用详解

Oracle数据访问组件 (ODAC)  全称:Oracle Data Access Components 优点:由于微软在.net framework4中会将System.Data.OracleClient.dll deprecated,而且就访问效率和速度而言,System.Data.OracleClient.dll与Oracle.DataAccess.dll相比,微软的确实没有oracle提供的类库有优势,所以我放弃了使用多年的 System.Data.OracleClient.dll,取

Docker的安装配置及使用详解

基本概念 Docker 包括三个基本概念 镜像(Image) 容器(Container) 仓库(Repository) 先理解了这三个概念,就理解了 Docker 的整个生命周期. 1.docker安装与启动 yum install -y epel-release yum install docker-io # 安装docker # 配置文件 /etc/sysconfig/docker chkconfig docker on # 加入开机启动 service docker start # 启动d

Redis安装配置及使用详解

1. 简介-两个程序通信,除了socket就是文件了,但是通过磁盘效率太低了,之前的RabbitMQ只是实现了消息的传递,现在要是实现数据的共享(一份数据,可供多人查阅),可以通过缓存实现,一个中间商broker. 可是程序之间是无法访问对方的内存地址的.所以其他程序和中间商的之间的通信是通过socket实现的. 2.主流缓存系统 mongodb 直接持久化 :既存在内存,又同步到硬盘. redis 半持久化 :默认是存在内存,通过手工调动,才会存到硬盘. memcache 只能在内存,轻量级缓

CentOS 6 安装,配置 httpd-2.4详解

实验主机IP 172.18.254.37 ,此时httpd程序版本为2.2.15,apr,apr-util版本均为1.3.9. 主要思路:要想此主机应用httpd-2.4,要编译安装httpd-2.4,升级apr,apr-util版本为1.4+ 安装详解: 1.安装开发环境包组和开发程序包 # yum groupinstall "Development Tools" "Server Platform Development" -y   //开发环境包组 # yum 

自动化运维平台之系统自动化安装Cobbler系统使用详解

一.简介 Cobbler是一个快速网络安装linux的服务,而且在经过调整也可以支持网络安装windows.该工具使用python开发,小巧轻便(才15k行python代码),使用简单的命令即可完成PXE网络安装环境的配置,同时还可以管理DHCP.DNS.以及yum仓库.构造系统ISO镜像. Cobbler支持命令行管理,web界面管理,还提供了API接口,可以方便二次开发使用. Cobbler客户端Koan支持虚拟机安装和操作系统重新安装,使重装系统更便捷. 二.cobbler提供的功能 使用

MySql绿色版配置及使用详解

最近在做项目开发时用到了MySql数据库,在看了一些有关MySql的文章后,很快就上手使用了.在使用的过程中还是出现了一些问题,因为使用的是绿色免安装版的MySql所以在配置的时候出现了一些问题,该篇文章就主要针对MySql绿色版的配置及其使用进行讨论. 一.MySql概述 MySql数据库是有瑞典MySql AB公司开发,现在该公司被Oracle收购属于Oracle所有.同SQL Server类似,它也是基于关系型数据库的数据库管理系统,在Web应用方面MySQL是最好的RDBMS之一,因为它