centos7系统安装配置openvpn服务端

一直没研究过vpn,最近找个视频,学了下,搭环境,测试成功,速记录在案:

使用环境:

openvpn服务端安装在centos7系统平台上;
  openvpn客户端安装在windows平台上;

其中的操作步骤有些很像此前写过的一篇文章CA服务器签署证书的步骤;
openvpn就是安全的vpn,通过openssl实现ssl加密解密;

openvpn实现的简单原理个人理解是:

通过openvpn客户端和服务器端用虚拟网卡建立逻辑的安全的通信连接,然后再通过物理网卡传输数据;
即首先openvpn服务端,安装程序并开启服务,然后服务器端会自动生成一个虚拟网卡tun0,用来建立安全通行用的,并监听一个端口,准备接收客户端的请求;
第二,客户端安装openvpn后,也自动生成一个虚拟网卡,openvpn客户端需要指定openvpn服务端的物理网卡上的ip地址和监听的端口进行连接;
第三,证书、密钥、密码都通过后,即实现了vpn(虚拟私有网络)功能;

具体配置步骤:

第一:安装软件
 ]# yum install openvpn easy-rsa

第二:准备相关目录和配置文件
 ]# cp /usr/share/doc/easy-rsa-3.0.3/vars.example /etc/openvpn/easy-rsa/vars

 ]# cp -r /usr/share/easy-rsa/3.0.3/* /etc/openvpn/easy-rsa/
复制的文件有:easyrsa、openssl-1.0.cnf、x509-types; 

 ]# cp /usr/share/doc/openvpn-2.4.5/sample/sample-config-files/server.conf /etc/openvpn/

 编辑vars文件:
 set_var EASYRSA_REQ_COUNTRY "CN"
 set_var EASYRSA_REQ_PROVINCE "Beijing"
 set_var EASYRSA_REQ_CITY "Beijing"
 set_var EASYRSA_REQ_ORG "OpenVPN CA"
 set_var EASYRSA_REQ_EMAIL "4********4@.qq.com"
 set_var EASYRSA_REQ_OU  "My VPN"

创建服务器端证书和key:

第一:目录初始化:
   ]# cd /etc/openvpn/easy-rsa/
   ]# ./easyrsa init-pki

第二:创建根证书:
   ]# ./easyrsa build-ca
   Enter PEM pass phrase: 输入2次pem密码,并记住(输入的pem密码是openvpn,后面会用到);
   ........
   Common Name (eg: your user, host, or server name) [Easy-RSA CA]: 输入名称;(输入的是opvpn-ca)

   回车后显示:
CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/etc/openvpn/easy-rsa/pki/ca.crt

第三:创建服务器端证书:

]# ./easyrsa gen-req server nopass
Common Name (eg: your user, host, or server name) [server]: (输入是node2)

输入回车后显示:

Keypair and certificate request completed. Your files are:
req: /etc/openvpn/easy-rsa/pki/reqs/server.req
key: /etc/openvpn/easy-rsa/pki/private/server.key

第四:签署服务器端证书:

  ]# ./easyrsa sign server server

回车后,Confirm request details: (输入yes)

Enter pass phrase for /etc/openvpn/easy-rsa/pki/private/ca.key: (输入之前CA根证书的pem密码是openvpn)

回车后显示:

Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :ASN.1 12:'node2'
Certificate is to be certified until Apr 4 16:04:29 2028 GMT (3650 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /etc/openvpn/easy-rsa/pki/issued/server.crt

第五:创建Diffie-Hellman,确保key穿越不安全网络的命令:

]# ./easyrsa gen-dh

回车后,等的时间稍微长一点,最后显示:

DH parameters of size 2048 created at /etc/openvpn/easy-rsa/pki/dh.pem

第六:生成ta密钥文件

]# openvpn --genkey --secret /etc/openvpn/easy-rsa/ta.key

不执行此命令,会报错:

Sat Apr 7 12:53:37 2018 WARNING: cannot stat file 'ta.key': No such file or directory (errno=2)
Options error: --tls-auth fails with 'ta.key': No such file or directory (errno=2)
Options error: Please correct these errors.
Use --help for more information.

创建客户端证书及key :

第一:创建过程同服务端:

]# mkdir /root/client
  ]# cd /root/client
  ]# cp -r /usr/share/easy-rsa/3.0.3/* ./
  ]# ./easyrsa init-pki
  ]# ./easyrsa gen-req client

回车后显示Enter PEM pass phrase: 输入密码,密码是之后客户端连接服务器要用的(输入的是vpnclient)
Common Name (eg: your user, host, or server name) [client]: (输入的是client,后面会用到)

回车后显示:

Keypair and certificate request completed. Your files are:
req: /root/client/pki/reqs/client.req
key: /root/client/pki/private/client.key

第二:将得到的clientone.req导入然后签约证书:

]# ./easyrsa import-req /root/client/pki/reqs/client.req client

回车后显示:

Note: using Easy-RSA configuration from: ./vars

The request has been successfully imported with a short name of: clientone
You may now use this name to perform signing operations on this request.

第三:签约证书

]# ./easyrsa sign client client

回车后,输入yes;

Enter pass phrase for /etc/openvpn/easy-rsa/pki/private/ca.key: (输入的是openvpn)

注意:
这里生成client所以第一个client位置必须为client,第二个参数client要与之前导入名字一致,导入的时候会要求输入密码,这个密码是第一次设置的根证书的密码,不要输错;因为openvpn是一个客户端对应一组证书密钥文件的;

回车后显示:

Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :ASN.1 12:'client'
Certificate is to be certified until Apr 4 16:38:37 2028 GMT (3650 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /etc/openvpn/easy-rsa/pki/issued/client.crt

拷贝相关文件

拷贝服务器端所需文件到各自位置:

]# cp pki/ca.crt /etc/openvpn/
]# cp pki/private/server.key /etc/openvpn/
]# cp pki/issued/server.crt /etc/openvpn/
]# cp pki/dh.pem /etc/openvpn/
]# cp /etc/openvpn/easy-rsa/ta.key /etc/openvpn/

拷贝客户端所需文件到各种位置:

]# cp pki/ca.crt /root/client/
]# cp pki/issued/client.crt /root/client/
]# cp /root/client/pki/private/client.key /root/client/
]# cp /etc/openvpn/easy-rsa/ta.key /root/client/

修改vpn配置文件:

]# egrep -v "^$|^#|^;" /etc/openvpn/server.conf
port 1194
proto udp
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key # This file should be kept secret
dh /etc/openvpn/dh.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 208.67.220.220"
keepalive 10 120
tls-auth ta.key 0 # This file is secret
cipher AES-256-CBC
comp-lzo
max-clients 100
persist-key
persist-tun
status openvpn-status.log
verb 3
explicit-exit-notify 1

启动openvpn服务器:

]# openvpn /etc/openvpn/server.conf &

启动成功后显示:

Sat Apr 7 13:00:23 2018 OpenVPN 2.4.5 x86_64-redhat-linux-gnu [Fedora EPEL patched] [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Mar 1 2018
Sat Apr 7 13:00:23 2018 library versions: OpenSSL 1.0.2k-fips 26 Jan 2017, LZO 2.06
Sat Apr 7 13:00:23 2018 Diffie-Hellman initialized with 2048 bit key
Sat Apr 7 13:00:23 2018 Outgoing Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
Sat Apr 7 13:00:23 2018 Incoming Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
Sat Apr 7 13:00:23 2018 ROUTE_GATEWAY 192.168.255.1/255.255.255.0 IFACE=eno16777736 HWADDR=00:0c:29:ef:e4:a7
Sat Apr 7 13:00:23 2018 TUN/TAP device tun0 opened
Sat Apr 7 13:00:23 2018 TUN/TAP TX queue length set to 100
Sat Apr 7 13:00:23 2018 do_ifconfig, tt->did_ifconfig_ipv6_setup=0
Sat Apr 7 13:00:23 2018 /sbin/ip link set dev tun0 up mtu 1500
Sat Apr 7 13:00:23 2018 /sbin/ip addr add dev tun0 local 10.8.0.1 peer 10.8.0.2
Sat Apr 7 13:00:23 2018 /sbin/ip route add 10.8.0.0/24 via 10.8.0.2
Sat Apr 7 13:00:24 2018 Could not determine IPv4/IPv6 protocol. Using AF_INET
Sat Apr 7 13:00:24 2018 Socket Buffers: R=[212992->212992] S=[212992->212992]
Sat Apr 7 13:00:24 2018 UDPv4 link local (bound): [AF_INET][undef]:1194
Sat Apr 7 13:00:24 2018 UDPv4 link remote: [AF_UNSPEC]
Sat Apr 7 13:00:24 2018 MULTI: multi_init called, r=256 v=256
Sat Apr 7 13:00:24 2018 IFCONFIG POOL: base=10.8.0.4 size=62, ipv6=0
Sat Apr 7 13:00:24 2018 IFCONFIG POOL LIST
Sat Apr 7 13:00:24 2018 Initialization Sequence Completed

或使用systemctl启动:

systemctl -f enable openvpn@server.service
#设置启动文件

systemctl start openvpn@server.service
#启动openvpn的命令

windows7上配置openvpn客户端:

第一:下载openvpn客户端

链接地址:http://openvpn.ustc.edu.cn/

安装过程就不表了,具体配置说下:

下载相关文件到本特指的目录:
  从centos7上把client.crt、client.conf并改名为client.ovpn、client.key、ta.key四个文件,放在安装目录下的config目录里即可;

client.ovpn配置文件内容:

client
dev tun
proto udp
remote 192.168.255.12 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-CBC
verb 3

openvpn客户端登录:

  双击图标后,弹出输入密码的窗口,此前设定的密码为vpnclient即可成功登录;


表示成功登录;

openvpn图标变为绿色即成功连接openvpn服务器;

后续深入openvpn使用配置,等用时再充电。

(0)

相关推荐

  • Python 实现选择排序的算法步骤

    选择排序算法步骤: 找到数组中最小的那个元素中, 将它和数组的第一个元素交换位置, 在剩下的元素中找到最小的元素,将它和数组的第二个元素交换位置, 如此往复,知道将整个数组排序. 逐步分析: 假设一个数组有 6 个元素, [5, 1, 4, 3, 2, 6] 第 1 个元素为 5,与剩余 5 个元素相比,1 是最小的元素,所以 5 和 1 交换位置, [1, 5, 4, 3, 2, 6] 第 2 个元素为 5,与剩余 4 个元素相比, 2 是最小的元素,所以 5 和 2 交换位置, [1, 2,

  • Centos7启动流程及Systemd中Nginx启动配置

    Centos7启动流程: 1.post(Power-On-Self-Test) 加电自检 1 主要实现的功能是检测各个外围硬件设备是否存在而且能够正常运行起来,实现这一自检功能的是固化在主板上的ROM(主要代表为CMOS)芯片上的BIOS(Basic Input/Output System)程序:例如BIOS会检测CPU.Memory以及I/O设备是否能够正常运行,如果是个人计算机的话可能还会检测一下显示器.只要一通电,CPU就会自动去加载ROM芯片上的BIOS程序,是这样来实现的.而检测完成之

  • Windows 2008 R2 单网卡搭建vpn实战设置方法

    本人原创,转载请注明CSDN转载,如有错误欢迎指正 谢谢! 由于公司突然不让上QQ和旺旺之类的聊天工具,一直对外联系也靠QQ,现在突然间没有办法使用基本上就断了对外联系的工具,本人通过公司的一个小型服务器为自己搭建了一个vpn,暂时先使用着,过程不复杂现在和大家分享一下,因为服务器网段没有限制所以出此下策,操作如下: 首先需要一个服务器(废话)如下图: 第一步:安装角色: 第二步:勾选"网络策略和访问服务" 第三步:检查配置 第四步:把图上选项全勾上 然后:确认安装阶段 再来多一个图

  • windows 2008 VPN(PPTP/L2TP)搭建教程

    PPTP和L2TP只差一步配置,现在苹果已经不支持PPTP,所以只能使用L2TP连接.废话不多说,下面开始搭建: 1.PPTP VPN 配置 新安装好的OS,进入系统,首先添加角色 勾选添加网络策略和访问服务 如图勾选需要的角色服务 安装完成后,依次点击开始-管理工具-路由与远程访问工具 如图在服务器上右键,选择"配置并启动路由和远程访问服务" 因为是单网卡机器,所以选择自定义配置 选择VPN访问和NAT. 向导安装完成之后,配置添加VPN连接客户机所用的地址池. 此处也可以配置dhc

  • 快云vps主机配置免费vpn服务器的方法(windows/linux)

    最近发现有好多的朋友在找免费的vpn帐号,通过免费vpn代理ip,利用vpn翻墙技术去寻找自己想要的东西,临渊羡鱼,不如退而结网,今天快云VPS小编,就分享一下,利用相关的免费vpn代理软件和快云VPS怎么配置自己的免费vpn代理服务器,有了自己的免费vpn代理服务器,建立自己的vpn帐号,就不用在到处去找免费的vpn了,或许你还可以送给你的小伙伴一些免费vpn帐号. 因为快云VPS最低的配置型号-快云VPS基础型都支持安装Windows系统,所以,我们首先需要根据我们个人习惯,或者对Windo

  • Win2008 r2服务器配置VPN服务器教程(图文详解)

    系统环境:WindowsServer2008R2Enterprise(完全安装) 1.配置准备工作 1.1.点击"开始"右边的"服务器管理器" 1.2.在"服务器管理器"里点击"角色" 1.3.在"角色"上点击右键选译"添加角色",点击"下一步" 1.4.在"角色"里选择"网络策略和访问服务",点击"下一步"

  • 在Win2003服务器上架设VPN服务器的方法

    通过在美国服务器或VPS上架设VPN服务,您可以访问一些被国内屏蔽的网站,如facebook.twitter等.当然,千万不能用这个工具来访问色情和政治性的网站,这是不道德的.如果你是在基于Virtuozzo虚拟化技术的VPS上架设VPN,请先联系你的服务商在母服务器开启VPN功能,否则无法进一步配置.如果是基于Xen或者Hyper-V技术的VPS,则直接就可以配置.之前本人配置VPN的时候,在网上很难找到一步一步的配置文章,也没有附上图片说明,现在我详细写出配置步骤,并附上截图,供后来者参考.

  • Linux下使用docker搭建Openvpn代理的方法

    说明 openvpn方式与pptpd方式对比(个人感觉): 复杂度:openvpn>pptpd 安全性:openvpn>pptpd 稳定性:openvpn>pptpd 1.安装 1.下载 docker pull kylemanna/openvpn 2.全局变量(方便设置) OVPN_DATA="/root/ovpn-data" // 下面的全局变量换成你的服务器的外网ip IP="xxx.xxx.xxx.xxx" 3.创建文件目录 mkdir ${

  • 在Windows Server 2008 R2服务器下架设VPN服务器的方法

    系统环境: Windows Server 2008 R2 Enterprise 6.1.7600.16385 RRAS 5.2.0000 NPS 6.1.7600.16385 测试目的:架设VPN服务器并通过VPN访问内部网络 操作步骤: 1.在服务器管理器中添加角色"网络策略和访问服务",并安装以下角色服务: 下一步直到安装完成. 2.在 开始->管理工具->路由和远程访问 中打开RRAS,简陋的界面如下: 点击服务器状态,可看到目前只有一台服务器(就是本机).以我的计算

  • centos7系统安装配置openvpn服务端

    一直没研究过vpn,最近找个视频,学了下,搭环境,测试成功,速记录在案: 使用环境: openvpn服务端安装在centos7系统平台上:   openvpn客户端安装在windows平台上: 其中的操作步骤有些很像此前写过的一篇文章CA服务器签署证书的步骤: openvpn就是安全的vpn,通过openssl实现ssl加密解密: openvpn实现的简单原理个人理解是: 通过openvpn客户端和服务器端用虚拟网卡建立逻辑的安全的通信连接,然后再通过物理网卡传输数据: 即首先openvpn服务

  • Centos7安装配置NFS服务和挂载教程(推荐)

    现在有3台服务器 s1(主),s2(从), s3(从)需要实现文件实时同步,我们可以安装Nfs服务端和客户端来实现! 一.安装 NFS 服务器所需的软件包: yum install -y nfs-utils 二.编辑exports文件,添加从机 vim /etc/exports /home/nfs/ 192.168.248.0/24(rw,sync,fsid=0) 同192.168.248.0/24一个网络号的主机可以挂载NFS服务器上的/home/nfs/目录到自己的文件系统中 rw表示可读写

  • windows nfs 服务端安装配置教程

    windows7下面安装nfs客户端命令: 打开或关闭windows功能>nfs服务(勾选上)重启 hanewin(windows7下安装nfs服务)使用: 下载地址:http://www.hanewin.net/ 安装后需要生成注册码: liyuan3210/FBLZ3577F37E78FB 1.安装好后首先需要配置nfs服务端 NFS Server>Exports配置服务端目录 d:\nfsroot -name:nfsroot -umask:000 -public -mapall:0 2.

  • Vue服务端渲染和Vue浏览器端渲染的性能对比(实例PK )

    Vue 2.0 开始支持服务端渲染的功能,所以本文章也是基于vue 2.0以上版本.网上对于服务端渲染的资料还是比较少,最经典的莫过于Vue作者尤雨溪大神的 vue-hacker-news.本人在公司做Vue项目的时候,一直苦于产品.客户对首屏加载要求,SEO的诉求,也想过很多解决方案,本次也是针对浏览器渲染不足之处,采用了服务端渲染,并且做了两个一样的Demo作为比较,更能直观的对比Vue前后端的渲染. talk is cheap,show us the code!话不多说,我们分别来看两个D

  • 详解使用vscode+es6写nodejs服务端调试配置

    前端的小伙伴们在babel等的加持下,已经可以愉快的使用es6来写代码了. 然后对于服务端的nodejs就有点坑爹了,虽然原生支持了es6,但是只是部分支持,一些不支持的特性(比如module)使用了就会报错,所以如果想使用完整的es6来写服务端nodejs,我们还是离不开babel. 下面介绍一下在vscode中使用es6写nodejs的配置方法. 1.首先在根目录下建立.babelrc文件,写入babel配置,我的配置如下,记得npm安装babel及你需要的presets或者plugin.

  • 服务端配置实现AJAX跨域请求

    一直以为AJAX跨域是无法逾越的鸿沟,最近发现原来在服务端可以通过发送header信息来允许AJAX跨域请求. PHP代码示例: 复制代码 代码如下: header('Access-Control-Allow-Origin:*'); header('Access-Control-Allow-Headers:X-Requested-With'); 经过测试,webkit内核的浏览器成功实现跨域请求. IE一如既往的不支持~看来只能在移动端享用这一强大功能了 另外,需要注意的是,第一行配置中的*表示

  • Ubuntu Server Rsync服务端与Windows cwRsync客户端数据同步配置方法

    说明: 1.Rsync服务端 系统:Ubuntu Server 11.10 IP地址:192.168.21.168 数据存放目录:/home/mysql_data 2.cwRsync客户端 系统:Windows Server 2003 IP地址:192.168.21.130 同步的目录:D:\mysql_data 实现目的: cwRsync客户端每天凌晨3:00钟自动同步Rsync服务端/home/mysql_data目录中的数据到D:\mysql_data目录 一.Rsync服务端配置 1.开

  • subversion服务端配置步骤详解

    配置过程:1.安装subversion 服务端软件 复制代码 代码如下: yum install subersion -ymkdir -p /data/svn_svncd  /data/svn_svn 2. 创建代码仓库 复制代码 代码如下: svnadmin create  svn_version 配置权限 复制代码 代码如下: vim conf/svnserve.confpassword-db = passwd  #取消注释anon-access = noneauth-access = wr

  • CentOS Rsync服务端与Windows cwRsync客户端实现数据同步配置方法

    说明: 1.Rsync服务端 系统:CentOS 5.5 IP地址:192.168.21.160 数据存放目录:/data/osyunwei 2.cwRsync客户端 系统:Windows Server 2003 IP地址:192.168.21.130 同步的目录:D:\osyunwei 实现目的: cwRsync客户端每天凌晨3:00钟自动同步Rsync服务端/data/osyunwei目录中的数据到D:\osyunwei目录 一.Rsync服务端配置 1.关闭SELINUX vi /etc/

  • asp.net core webapi 服务端配置跨域的实例

    在前后端分离开发中服务端仅仅只为前端提供api接口,并且前后端往往单独部署,此时就会出现浏览器跨域问题.asp.net core提供了简单优雅的解决方案. 在startup文件的Configure添加如下代码(替换"http://localhost:8080"为你的前端部署地址,此处测试的前端地址为本地的8080端口) 注:asp.net core2.0以下需安装nuget包:Microsoft.AspNetCore.Cors app.UseCors(builder => { b

随机推荐