文档章节

OpenVPN安装

roockee
 roockee
发布于 03/13 10:08
字数 2843
阅读 62
收藏 0
点赞 0
评论 0

什么是VPN


IP机制仿真出一个私有的广域网"是通过私有的隧道技术在公共数据网络上仿真一条点到点的专线技术。所谓虚拟,是指用户不再需要拥有实际的长途数据线路,而是使用Internet公众数据网络的长途数据线路。

 

OpenVPN的功能


可以将两个不同的网段打通一条通道,可以互相访问,对于运维人员来说主要是为了安全,因为OpenVPNssl加密机制,增加了密码的安全度,运维人员可以自定义ip段进行管理服务器,简单点说,安全方便。


SSL VPN原理


如果把SSL 和VPN 两个概念分开,大家对他们的含义应该都非常清楚,但是作为一种新技术,它们之间是如何结合起来的大家也许还不是很了解。从学术和商业的角度来讲,因为他们代表的含义有所不同,因而常常会被曲解。

SSL(安全套接层)协议是一种在Internet上保证发送信息安全的通用协议。它处于应用层。SSL用公钥加密通过SSL连接传输的数据来工作。 SSL协议指定了在应用程序协议(如HTTP、Telnet和FTP等)和 TCP/IP协议之间进行数据交换的安全机制,为TCP/IP连接提供数据加密、服务器认证以及可选的客户机认证。SSL协议包括握手协议、记录协议以及警告协议三部分。握手协议负责确定用于客户机和服务器之间的会话加密参数。记录协议用于交换应用数据。警告协议用于在发生错误时终止两个主机之间的会话。

VPN(虚拟专用网)则主要应用于虚拟连接网络,它可以确保数据的机密性并且具有一定的访问控制功能。VPN是一项非常实用的技术,它可以扩展企业的内部网络,允许企业的员工、客户以及合作伙伴利用Internet访问企业网,而成本远远低于传统的专线接入。过去,VPN 总是和IPSec 联系在一起,因为它是VPN 加密信息实际用到的协议。IPSec 运行于网络层,IPSec VPN 则多用于连接两个网络或点到点之间的连接。


所谓的SSL VPN,其实是VPN设备厂商为了与IPsec VPN区别所创造出来的名词,指的是使用者利用浏览器内建的Secure Socket Layer封包处理功能,用浏览器连回公司内部SSL VPN服务器,然后透过网络封包转向的方式,让使用者可以在远程计算机执行应用程序,读取公司内部服务器数据。它采用标准的安全套接层(SSL)对传输中的数据包进行加密,从而在应用层保护了数据的安全性。高质量的SSL VPN解决方案可保证企业进行安全的全局访问。在不断扩展的互联网Web站点之间、远程办公室、传统交易大厅和客户端间,SSL VPN克服了IPSec VPN的不足,用户可以轻松实现安全易用、无需客户端安装且配置简单的远程访问,从而降低用户的总成本并增加远程用户的工作效率。而同样在这些地方,设置传统的IPSec VPN非常困难,甚至是不可能的,这是由于必须更改网络地址转换(NAT)和防火墙设置。


首先,我所购买的vps是基于OpenVZ类型,无法配置标准的VPN(无测试过),部分手机可能无法支持,但OpenVZ支持pptp和openVPN

请登录OPENVPN官网查阅最新资料<http://openvpn.net/>



ok!在安装之前请确认一下你购买的vps是否开启了tun/tap的支持,burst vps默认是不开启tun/tap的,可以使用cat /dev/net/tun 进行检查



如果是没有权限的话可以发个ticket要求客服为你开启tun/tap



出现File descriptor in bad state说明tun/tap已经开启,可以开始进行openVPN的安装配置

我的vps安装的系统为CentOS release 5.5 (Final),下面一系列安装和配置都在此vps上进行配置

一.服务端安装

现在开始在vps上安装和配置openVPN,需要的有下列的软件
gcc g++ [gcc g++为系统需要的编译工具]
lzo库 [Lzo库的功能是对虚拟链路进行压缩]
openssl [囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议]
openvpn

1.安装编译工具gcc g++

# yum install gcc
# yum install gcc-c++

2.安装lzo库 

# cd /home/download/
# wget http://www.oberhumer.com/opensource/lzo/download/lzo-
2.03.tar.gz
# tar -xvzf lzo-
2.03.tar.gz
# cd lzo-
2.03
# ./configure -prefix=/usr/local/lzo && make && make install
# vi /etc/ld.so.conf




编辑完ld.so.conf,执行

# ldconfig

使动态库生效

3.安装openssl 

# cd /home/download/
# wget http://www.openssl.org/source/openssl-
0.9.8.tar.gz
# tar -xvzf openssl-
0.9.8.tar.gz
# ./config -prefix
=/usr/local/openssl && make && make install

4.安装openvpn
 

# cd /home/download/
# wget http://www.openvpn.net/release/openvpn-
2.0.9.tar.gz
# tar -xvzf openvpn-
2.0.9.tar.gz
# cd openvpn-
2.0.9
# ./configure -prefix=/usr/local/openvpn && make && make install

二.配置

1.创建配置环境


 

# mkdir /etc/openvpn
# cp -R /home/download/openvpn-2.0.9/easy-rsa/ /etc/openvpn
# cd /etc/openvpn/easy-rsa/2.0/
# ls
total 112
-rwxr-xr-x 1 root root 121 Oct 26 03:14 build-ca
-rwxr-xr-x 1 root root 354 Oct 26 03:14 build-dh
-rwxr-xr-x 1 root root 190 Oct 26 03:14 build-inter
-rwxr-xr-x 1 root root 165 Oct 26 03:14 build-key
-rwxr-xr-x 1 root root 159 Oct 26 03:14 build-key-pass
-rwxr-xr-x 1 root root 251 Oct 26 03:14 build-key-pkcs12
-rwxr-xr-x 1 root root 270 Oct 26 03:14 build-key-server
-rwxr-xr-x 1 root root 215 Oct 26 03:14 build-req
-rwxr-xr-x 1 root root 160 Oct 26 03:14 build-req-pass
-rwxr-xr-x 1 root root 430 Oct 26 03:14 clean-all
-rwxr-xr-x 1 root root 1459 Oct 26 03:14 inherit-inter
-rwxr-xr-x 1 root root 297 Oct 26 03:14 list-crl
-rw-r--r-- 1 root root 422 Oct 26 03:14 Makefile
-rwxr-xr-x 1 root root 7768 Oct 26 03:14 openssl-0.9.6.cnf
-rwxr-xr-x 1 root root 8230 Oct 26 03:14 openssl.cnf
-rwxr-xr-x 1 root root 12068 Oct 26 03:14 pkitool
-rw-r--r-- 1 root root 8864 Oct 26 03:14 README
-rwxr-xr-x 1 root root 894 Oct 26 03:14 revoke-full
-rwxr-xr-x 1 root root 180 Oct 26 03:14 sign-req
-rwxr-xr-x 1 root root 1602 Oct 26 03:14 vars
-rwxr-xr-x 1 root root 190 Oct 26 03:14 whichopensslcnf



结果是程序以及脚本,这个简要的说明一下

vars 脚本,是用来创建环境变量,设置所需要的变量的脚本
clean-all 脚本,是创建生成CA证书及密钥 文件所需要的文件和目录
build-ca 脚本,生成CA证书(交互)
build-dh 脚本,生成Diffie-Hellman文件(交互)
build-key-server 脚本,生成服务器端密钥(交互)
build-key 脚本,生成客户端密钥(交互)
pkitool 脚本,直接使用vars的环境变量设置直接生成证书(非交互)

2.生成CA证书及密钥

 

# cd /etc/openvpn/easy-rsa/2.0/
# ./vars
NOTE: If you run ./clean-all
, I will be doing a rm -rf on /etc/openvpn/easy-rsa/2.0/keys


注:如果你执行了./clean-all,系统将删除/etc/openvpn/easy-rsa/2.0/keys下的文件

修改vars文件


# 定义你所在的国家,2个字符
export KEY_COUNTRY=CN
#
你所在的省份
export KEY_PROVINCE=”SH”
#
你所在的城市
export KEY_CITY=”SHANGHAI”
#
你所在的组织
export KEY_ORG="OpenVPN ORG"
#
你的单位
export KEY_OU="OpenVPN"
#
你的邮件地址
export KEY_EMAIL="feiyang@163.com"


#. ./vars (注意有两个点,两个点之间有空格)
 

初始化keys文件

# ./clean-all #[注:删除/etc/openvpn/easy-rsa/2.0/keys下的文件]
# ./build-ca #[注:生成一个a 1024 bit RSA的密钥,writing new private key to 'ca.key']




一路按回车就可以 

# cd keys
# ls
ca.crt ca.key index.txt serial

可以看到生成的ca.crt ca.key文件

4.生成Diffie-Hellman文件

 

# cd ..
# ./build-dh #
[注:Generating DH parameters, 1024 bit long safe prime]
# ls keys
ca.crt ca.key dh1024.pem index.txt serial


注:可以看到生成了1024为的Diffie-Hellman文件

5.生成服务器使用的VPN server ca证书

# ./build-key-server chenyz #[注:其中chenyz是CA证书的一个名字]



一路回车,Sign the certificate? [y/n]:y 选择y

然后把刚才生成的CA证书和密钥copy到/etc/openvpn/下

# cd keys
# cp ca.crt ca.key chenyz.crt chenyz.key dh1024.pem /etc/openvpn/

6.生成客户端CA证书及密钥

# ./build-key client-chenyz
一路回车,Sign the certificate? [y/n]:y 选择y

在keys目录下生成了client-chenyz.crt client-chenyz.csr client-chenyz.key三个客户端证书
并且将ca.crt ca.key client-chenyz.crt client-chenyz.csr client-chenyz.key 五个文件打包,以便客户端vpn

使用

 

# cd keys
# mkdir userkey
# cp ca.crt ca.key client-chenyz.crt client-chenyz.csr client-chenyz.key userkey/
# tar -zcvf userkey.tar.gz userkey/
userkey/
userkey/ca.crt
userkey/client-chenyz.csr
userkey/ca.key
userkey/client-chenyz.key
userkey/client-chenyz.crt

# sz userkey.tar.gz
Starting zmodem transfer. Press Ctrl+C to cancel.
Transferring userkey.tar.gz

100% 4 KB 4 KB/s 00:00:01 0 Errors

7.openvpn配置文件

# cp /home/download/openvpn-2.0.9/sample-config-files/server.conf /etc/openvpn/openvpn.conf
将vpenvpn的原始样例文件复制到/etc/openvpn下,并改名为openvpn.conf,我们将在样例文件上进行修改


使用的端口,默认1194


使用的协议,默认使用UDP,如果使用HTTP proxy,必须使用TCP协议


ca:使用build-ca生成的,用于验证客户是证书是否合法
cert:使用build-key-server,Server使用的证书对应的key,注意安全,防止被盗


dh:生成的加密文件


通过VPN Server往Client push路由,client通过pull指令获得Server push的所有选项并应用


可以让客户端之间相互访问直接通过openvpn程序转发


如果Client使用的CA的Common Name有重复了,或者说客户都使用相同的CA #和keys连接VPN,一定要打开这个选项,否则只允许一个人连接VPN


对数据进行压缩


定义用户


openvpn状态log


每次重新启动openvpn后保留原有的log信息,新信息追加到文件最后

8.启动OpenVPN

修改完毕后,即可以启动vpn,--daemon为后台守护进程模型启动
/usr/local/openvpn/sbin/openvpn --daemon --config /etc/openvpn/openvpn.conf



使用netstat -ln 查看1194openvpn的端口是否已经起来
使用sz将其下载到windows客户端

二.win客户端的安装和配置

下载openvpn客户端 http://www.openvpn.net/release/openvpn-2.0.9-install.exe 安装完毕
把刚刚打包的userkey.tar.gz下载解压到 C:\Program Files\OpenVPN\config 目录下
将/home/download/openvpn-2.0.9/sample-config-files/client.conf 也下载到 C:\Program Files\OpenVPN\config 目录下

接着是配置这个client.conf客户端配置文件

主要修改有以下几个地方

dev tun
proto tcp
remote 你的vpn地址 1194
user nobody
group nogroup
ca ca.crt
cert client-chenyz.crt
key client-chenyz.key ##注:文件名和路径必须对应
comp-lzo
redirect-gateway def1

确保与服务端的配置对应,然后将client.conf修改文件名为client.ovpn,右键点击client.ovpn,选择"Start OpenVPN on this config file"


可以看到连接已经成功,并且创建了 [本地连接 6] 一条新的链路





或者你也可以打开C:\Program Files\OpenVPN\bin\openvpn-gui-1.0.3.exe进行连接,双击后会在任务栏里有个小连接图标,变成绿色的话就表明你连接成功

openvpn的参数配置,感觉不算很多,也比较容易理解,中文的资料也很齐全,大概这个东西在国内还是广泛应用(翻墙^_^)

如果只是简单的应用,配置倒真的很简单,不过如果真的是要用起来,网段设置和访问控制各种问题真的不少,入是否配置dhcp,是否分配dns,vpn如何和内网通讯,很多很多,因为我只是拿来做代理这里就不细说了linux

 

本文转载自:

共有 人打赏支持
roockee
粉丝 4
博文 59
码字总数 3182
作品 0
南京
高级程序员
ubuntu server 搭建openvpn(路由模式) 笔记

OpenVPN 是由ubuntu库提供的私人虚拟网络(VPN)解决方案. 具有灵活,易用,可靠,安全的特点. OpenVpn分两种模式,即桥接模式与路由模式,本次是路由模式。 实验环境:服务器:ubuntu server 11....

伪码农eric
2012/06/05
0
0
CentOS搭建OpenVPN服务

安装OpenVPN软件包 默认的Centos软件源里面没有OpenVPN的软件包,我们可以添加rpmforge的repo,从而实现yum安装openvpn 针对CentOS 5 rpm -ivh http://apt.sw.be/redhat/el5/en/x8664/rpmfor...

张旭0512
2014/07/08
0
0
Linux自学笔记——模拟搭建openvpn

VPN直译就是虚拟专用通道,是提供给企业之间或者个人与公司之间安全数据传输的隧道,openvpn无疑是linux开源vpn的先锋,提供了良好的性能和友好的用户GUI。 OpenVPN是一个基于OpenSSL库的应用...

claude_liu
04/26
0
0
CentOS7 install and configuration OpenVPN

OpenVPN是一个开源应用程序,可以通过公共Internet创建一个专用网络。在我们开始之前,我们首先需要安装Enterprise Linux(EPEL)存储库的额外包。下面就是关于如何在CentOS 7上设置Client和...

问题终结者
06/19
0
0
在Iphone上怎么用openvpn

如何在Iphone上设置openvpn呢?下面就为大家介绍一下,只需简单几步即可完成配置。 关于安装,大家可以IOS设备中打开apple store,并搜索到openvpn,找到之后点击安装就好了,也可以用itunes下载...

SuSugar
2014/06/01
0
1
烂泥:ubuntu 14.04搭建OpenVPN服务器

本文由秀依林枫提供友情赞助,首发于烂泥行天下 公司分部需要连接公司内部的服务器,但是该服务器只允许公司内部的网络访问。 为了解决这个问题,打算使用VPN。对于VPN以前使用最多的是PPTP这...

烂泥行天下
2015/07/28
0
4
CentOS6.7安装OpenVPN服务端

本文主要讲述如何在Linux(以CentOS6.7为例)环境中搭建VPN(OpenVPN)服务器。 OpenVPN基本介绍: OpenVPN是开源的VPN守护进程(daemon),easy-RSA提供一些简易的CA证书工具。 VPN原理: ...

技术小胖子
2017/11/08
0
0
centos6安装openvpn2.3.6教程

wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm rpm -Uvh epel-release-6-8.noarch.rpm yum install openvpn wget https://github.com/OpenVPN/easy-rsa/ar......

果树啊
2015/03/02
0
0
大用户量下Openvpn部署方案(一)

前段时间公司有个项目需要数以千计的客户端都连入一个vpn下,并且有一部分需要获得固定的ip地址。 思路:简单的openvpn服务器部署起来并不难,但是大量的用户,如果采用简单的证书方式,批量...

技术小胖子
2017/11/01
0
0
搭建基于证书认证登录的OpenVPN服务器

一、OpenVPN简介 OpenVPN 是一个基于 OpenSSL 库的应用层 VPN 实现。和传统 VPN 相比,它的优点是简单易用。 OpenVPN允许参与建立VPN的单点使用共享金钥,电子证书,或者用户名/密码来进行身...

技术小胖子
2017/11/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

arts-week1

Algorithm 594. Longest Harmonious Subsequence - LeetCode 274. H-Index - LeetCode 219. Contains Duplicate II - LeetCode 217. Contains Duplicate - LeetCode 438. Find All Anagrams ......

yysue
35分钟前
0
0
NNS拍卖合约

前言 关于NNS的介绍,这里就不多做描述,相关的信息可以查看NNS的白皮书http://doc.neons.name/zh_CN/latest/nns_background.html。 首先nns中使用的竞价货币是sgas,关于sgas介绍可以戳htt...

红烧飞鱼
今天
0
0
Java IO类库之管道流PipeInputStream与PipeOutputStream

一、java管道流介绍 在java多线程通信中管道通信是一种重要的通信方式,在java中我们通过配套使用管道输出流PipedOutputStream和管道输入流PipedInputStream完成线程间通信。多线程管道通信的...

老韭菜
今天
0
0
用Python绘制红楼梦词云图,竟然发现了这个!

Python在数据分析中越来越受欢迎,已经达到了统计学家对R的喜爱程度,Python的拥护者们当然不会落后于R,开发了一个个好玩的数据分析工具,下面我们来看看如何使用Python,来读红楼梦,绘制小...

猫咪编程
今天
1
0
Java中 发出请求获取别人的数据(阿里云 查询IP归属地)

1.效果 调用阿里云的接口 去定位IP地址 2. 代码 /** * 1. Java中远程调用方法 * http://localhost:8080/mavenssm20180519/invokingUrl.action * @Title: invokingUrl * @Description: * @ret......

Lucky_Me
今天
1
0
protobuf学习笔记

相关文档 Protocol buffers(protobuf)入门简介及性能分析 Protobuf学习 - 入门

OSC_fly
昨天
0
0
Mybaties入门介绍

Mybaties和Hibernate是我们在Java开发中应用的比较多的两个ORM框架。当然,目前Mybaties正在慢慢取代Hibernate,这是因为相比较Hibernate而言Mybaties性能更好,响应更快,更加灵活。我们在开...

王子城
昨天
2
0
编程学习笔记之python深入之装饰器案例及说明文档[图]

编程学习笔记之python深入之装饰器案例及说明文档[图] 装饰器即在不对一个函数体进行任何修改,以及不改变整体的原本意思的情况下,增加函数功能的新函数,因为这个新函数对旧函数进行了装饰...

原创小博客
昨天
1
0
流利阅读笔记33-20180722待学习

黑暗中的生物:利用奇技淫巧快活生存 Daniel 2018-07-22 1.今日导读 如果让你在伸手不见五指的黑暗当中生存,你能熬过几天呢?而大千世界,无奇不有。在很多你不知道的角落,有些生物在完全黑...

aibinxiao
昨天
6
0
Hystrix降级逻辑中如何获取触发的异常

通过之前Spring Cloud系列教程中的《Spring Cloud构建微服务架构:服务容错保护(Hystrix服务降级)》一文,我们已经知道如何通过Hystrix来保护自己的服务不被外部依赖方拖垮的情况。但是实际...

程序猿DD
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部