+86 135 410 16684Mon. - Fri. 10:00-22:00

OpenVPN安装配置教程

OpenVPN安装配置教程

OpenVPN安装配置教程

1、什么是 VPN ?

VPN (Virtual Private Network) 即虚拟专用网络,是一种常用于连接中、大型企业或团体与团体间的私人网络的通讯方法。虚拟私人网络的讯息透过公用的网络架构(例如:互联网)来传送内联网的网络讯息。它利用已加密的通道协议(Tunneling Protocol)来达到保密、发送端认证、消息准确性等私人消息安全效果。这种技术可以用不安全的网络(例如:互联网)来发送可靠、安全的消息。需要注意的是,加密消息与否是可以控制的。没有加密的虚拟专用网消息依然有被窃取的危险。【摘自维基百科

a2ed3c22f3aec44fb1f39525b59adf8b

2、安全性

安全的虚拟私人网络使用加密穿隧协议,通过阻止截听与嗅探来提供机密性,还允许发送者身份验证,以阻止身份伪造,同时通过防止信息被修改提供消息完整性

某些虚拟私人网络不使用加密保护数据。虽然虚拟私人网络通常都会提供安全性,但未加密的虚拟私人网络严格来说是不“安全”或“可信”的。例如,一条通过GRE协议在两台主机间创建的隧道属于虚拟私人网络,但既不安全也不可信。 除以上的GRE协议例子外,本地的明文穿隧协议包括L2TP(不带IPsec时)和PPTP(不使用微软点对点加密(MPPE)时)。

3、协议

常用的虚拟专用网协议有:

4、特殊使用

由于中国大陆境内对于海外网络的限制及封锁,所以中国大陆兴盛起以采用免费或付费的虚拟专用网(VPN)进行海外网络连接服务的方法进行翻墙, 或许多外商公司欲连接回海外网站也多自行架设VPN或采用付费的VPN服务。2015年1月起,中国开始加强对外国VPN服务的封锁。VPN 供应商 Astrill 通知用户,因防火长城升级,使用 IPSec、L2TP/IPSec 和 PPTP 协议的设备无法访问它的服务,受影响的主要是iOS设备。中国工信部曾规定,在中国提供VPN服务的公司必须登记注册,否则将“不受中国法律的保护”。

5、OpenVPN 的特点

简介

OpenVPN 允许参与创建 VPN 的单点使用公开密钥、电子证书、或者用户名/密码来进行身份验证。 它大量使用了 OpenSSL 加密库中的 SSLv3/TLSv1 协议函数库。目前 OpenVPN 能在 Solaris、Linux、OpenBSD、FreeBSD、NetBSD、Mac OS X 和 Windows 上运行,并包含了许多安全性的功能。它并不是一个基于 Web 的 VPN 软件,也不与 IPsec 及其他 VPN 软件兼容。

加密

OpenVPN 使用 OpenSSL 库加密数据与控制信息:它使用了 OpenSSL 的加密以及验证功能,意味着,它能够使用任何 OpenSSL 支持的算法。它提供了可选的数据包 HMAC 功能以提高连接的安全性。此外,OpenSSL 的硬件加速也能提高它的性能。

验证

OpenVPN 提供了多种身份验证方式,用以确认参与连接双方的身份,包括:预享私钥第三方证书以及用户名/密码组 合。预享密钥最为简单,但同时它只能用于创建点对点的 VPN;基于 PKI 的第三方证书提供了最完善的功能,但是需要额外的精力去维护一个 PKI 证书体系。OpenVPN 2.0 后引入了用户名/口令组合的身份验证方式,它可以省略客户端证书,但是仍有一份服务器证书需要被用作加密。

网络

OpenVPN 所有的通信都基于一个单一的 IP 端口,默认且推荐使用 UDP 协议通讯,同时 TCP 也被支持。OpenVPN 连接能通过大多数的代理服务器,并且能够在 NAT 的环境中很好地工作。服务端具有向客户端“推送”某些网络配置信息的功能,这些信息包括:IP地址、路由设置等。OpenVPN 提供了两种虚拟网络接口:通用 Tun/Tap 驱动,通过它们,可以创建三层 IP 隧道,或者虚拟二层以太网,后者可以传送任何类型的二层以太网络数据。传送的数据可通过 LZO 算法压缩。IANA(Internet Assigned Numbers Authority)指定给 OpenVPN 的官方端口为 1194。OpenVPN 2.0 以后版本每个进程可以同时管理数个并发的隧道。 OpenVPN 使用通用网络协议(TCP与UDP)的特点使它成为IPsec 等协议的理想替代,尤其是在 ISP(Internet service provider)过滤某些特定VPN协议的情况下,如无视GFW。

安全

OpenVPN 与生俱来便具备了许多安全特性:它在用户空间运行,无须对内核网络协议栈作修改;初始完毕后以chroot方式运行,放弃root权限;使用 mlockall 以防止敏感数据交换到磁盘。
OpenVPN 通过 PKCS#11支持硬件加密标识,如智能卡。

对比

PPTP
L2TP/IPSEC
OpenVPN
简介 微软推出的第一个VPN协议。占用资源少,应用最为广泛。 更高级的VPN协议,支持各种平台。安全性更高,但是不太灵活,容易被封锁。 开源的 vpn 协议,加密性和适应性都比较好,也比较灵活,不容易被封锁。通过 udp 端口可以获得较好的速度。
加密 支持40位、56位和128位加密 256位加密 可自定义160位-256位
平台支持
  • Windows
  • Mac
  • Linux
  • iOS
  • Android
  • DDWRT
  • Windows
  • Mac
  • Linux
  • iOS
  • Android
  • Windows(第三方软件)
  • Mac(第三方软件)
  • Linux
  • iOS(第三方软件)
  • Android(第三方软件)
  • DDWRT
连接速度 很快
端口 1723 TCP 500 UDP
1701 UDP
5500 UDP
可根据需要自定义 和 更换,即 UDP/TCP的任何端口
防封锁 通过协议和端口很容易被封锁 通过协议和端口很容易被封锁 比较难封锁(基于标准的TCP/IP协议),其 UDP 模式是官方推荐的,速度很快,效率很高。

OpenVPN 的安装和配置(Windows 和 Linux 客户端连接 OpenVPN 服务器)

1、OpenVPN 官网

http://openvpn.net/ ,非常不幸,已被墙。

Windows 客户端 https://community.openvpn.net/openvpn/wiki/OpenVPN-GUI ,下载地址

2、OpenVPN 安装

源码(安装包)

下载地址: http://openvpn.net/index.php/open-source/downloads.html

RPM 安装(CentOS):

下面以 CentOS 5 的证书模式为例:

1)安装(客户端与服务器端安装方式一致)

 

a)  rpm 包方式

                   rpm ivh lzo2.033.1.el6_5.1.x86_64.rpm openvpn2.3.22.el6.x86_64.rpm pkcs11helper1.081.el6.rf.x86_64.rpm

 

b)  yum 方式(需要 rpmforge 源)

                   rpm ivh http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.5.3-1.el5.rf.i386.rpm

                   yum makecache

                   yum install openvpn y

 

                   安装了以下3个包(可能由于更新,版本号会高一些):

                   (1/3): lzo2.033.1.el6.x86_64.rpm

                   (2/3): openvpn2.2.21.el6.rf.x86_64.rpm

                   (3/3): pkcs11helper1.081.el6.rf.x86_64.rpm

 

2)服务器配置

a)  证书制作,上传制作 key 的工具 (easy-rsa.zip)(至OpenVPN 的默认工作目录是 /etc/openvpn/),并解压 easy-rsa.zip:

                   cd /etc/openvpn/

                   unzip easyrsa.zip

                   cd /etc/openvpn/easyrsa/2.0

                   chmod +x *

 

或者使用 yum 安装

yum install easy-rsa -y

cd /usr/share/

cp -a easy-rsa/ /etc/openvpn/

cd easy-rsa/2.0/

接下来的操作与上面类似。

 

b)  配置服务器端证书:

                   cd /etc/openvpn/easy-rsa/2.0

                   source ./vars                                // 初始化环境变量

                   ./clean-all                                     // 清空keys目录

                   ./build-ca server                        // 创建CA

                   ./build-key-server server       // 生成服务器证书,都是默认回车,最后2次是按y

                   ./build-key client1                   // 生成客户端证书,都是默认回车,最后2次是按y

                   ./build-dh                                   // 最后生成Diffie Hellman参数

c)  新增客户端证书:

cd /etc/openvpn/easy-rsa/2.0

                   source ./vars                           // 初始化环境变量

                   ./build-key client2               // 生成客户端证书,都是默认回车,最后2次是按y

d)  Server 端配置文件,到 /etc/openvpn/ 目录下新建 server.conf 文件(OpenVPN 默认会识别 .conf 结尾的文件,所以可以创建多个 .conf 以监听多个端口,即实例)

port 1194

proto udp

dev tun

ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt

cert /etc/openvpn/easy-rsa/2.0/keys/server.crt

key /etc/openvpn/easy-rsa/2.0/keys/server.key

dh /etc/openvpn/easy-rsa/2.0/keys/dh2048.pem

server 10.10.0.0 255.255.0.0

ifconfig-pool-persist ipp.txt

client-config-dir ccd

client-to-client

keepalive 10 120

comp-lzo

user nobody

group nobody

persist-key

persist-tun

status openvpn-status.log

log         openvpn.log

verb 3

script-security 2

d)  启动 OpenVPN 服务器

                   # 创建 ccd 目录

                   cd /etc/openvpn/

                   mkdir ccd

                   # 启动 OpenVPN 服务

                   service openvpn start

                   # 查看监听端口

                   netstat tunlp | grep openvpn

                   # 可能看到如下

                   [root@node ~]# netstat tunlp | grep openvpn

                   udp      0 0 0.0.0.0:1194        0.0.0.0:*      1625/openvpn

                   # 设置开机启动

                   chkconfig openvpn on

到此,服务器端配置完毕。

3)客户端配置

Windows 客户端下载

a) 创建客户端配置文件

Linux 配置文件样例:

cd /etc/openvpn

cat >> client1.ovpn << EOF

client

dev tun

proto udp

remote vpn.openvpnserver.com 1194

resolv-retry infinite

nobind

persist-key

persist-tun

ca  ca.crt

cert client1.crt

key client1.key

log openvpn-client.log

comp-lzo

script-security 2

verb 3

EOF

Windows 配置文件样例:

client
dev tun
proto tcp-client
remote vpn.openvpnserver.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
comp-lzo
script-security 2
verb 3

b) 上传证书

由客户端配置文件可知,涉及3个文件 ca.crt、client1.crt 和 client1.key,这3个文件都是生成服务器的 /etc/openvpn/easy-rsa/2.0/keys/ 目录下 。

将服务器端的 /etc/openvpn/easy-rsa/2.0/keys/ 下的3个文件:
ca.crt
client1.crt
client1.key
和上面的client1.ovpn共四个文件放入:/etc/openvpn/

所以在客户端(Linux)的 /etc/openvpn/ 目录下应该有 ca.crt、client1.crt、client1.key 和 client1.ovpn 共 4 个文件。

Win64 系统目录:
C:\Program Files (x86)\OpenVPN\config
Win32 系统目录:
C:\Program Files\OpenVPN\config

c) 启动客户端

Linux:

# 启动

cd /etc/openvpn

openvpn client1.ovpn &

 

# 启动后,正常情况下将看到类似以下显示:

[root@node home]# ifconfig tun0

tun0      Link encap:UNSPEC  HWaddr 00000000000000000000000000000000  

          inet addr:10.18.1.98  PtP:10.10.1.97  Mask:255.255.255.255

          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1

          RX packets:2848 errors:0 dropped:0 overruns:0 frame:0

          TX packets:2842 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:100 

          RX bytes:881475 (860.8 KiB)  TX bytes:924210 (902.5 KiB)

 

# 开机启动

cat >> /etc/rc.local << EOF

cd /etc/openvpn

openvpn client1.ovpn &

EOF

Windows:

Windows 7 和 8.1 需要以管理员权限运行

双击图标  运行;

红色openvpn3-1表示未连接服务器;

黄色openvpn3-2表示正在连接 OpenVPN服务器;

绿色openvpn5表示已经连上OpenVPN服务器;

openvpn4

上图中的日 Wed May 13 14:44:19 2015 Successful ARP Flush on interface [23] {CACC8C9F-1609-484A-8606-2A2748A7A868} 表示连接成功,图标也会变绿色。

北京 上海 天津 重庆 河北 山东 辽宁 黑龙江 吉林 甘肃 青海 河南 江苏 湖北 湖南 江西 浙江 广东 云南 福建 海南 山西 四川 陕西 贵州 安徽 广西 内蒙古 西藏 新疆 宁夏 澳门 香港 台湾