Centos7搭建OpenVPN服务器
Windows下同时连接多个VPN的话,需要以管理员身份运行 C:\Program Files\TAP-Windows\bin\addtap.bat 添加虚拟网络适配器
-----------------------------------------------------------------------------------------------------------------------------------------
1、安装OpenVPN
首先从EPEL安装OpenVPN:
# yum install openvpn  easy-rsa -y
2、使用easy-rsa创建服务端与客户端证书及密钥
服务端的创建:
服务器配置完成后需要生成密钥和证书,通过Easy RSA安装的一些脚本,方便快速产生密钥和证书;
创建keys文件夹,并且拷贝Easy RSA密钥和证书生成脚本到目录下(到easy-rsa目录)
# mkdir -p /etc/openvpn/key_server# cp -rf /usr/share/easy-rsa/3.0.3/* /etc/openvpn/key_server/ # cp /usr/share/doc/easy-rsa-3.0.3/vars.example /etc/openvpn/key_server/vars
为方便后续使用,按需要修改/etc/openvpn/easy-rsa/vars文件中的默认信息。
vi /etc/openvpn/easy-rsa/vars
   set_var EASYRSA_REQ_COUNTRY "US"
   set_var EASYRSA_REQ_PROVINCE   "California"
   set_var EASYRSA_REQ_CITY       "San Francisco"
   set_var EASYRSA_REQ_ORG        "Copyleft Certificate Co"
   set_var EASYRSA_REQ_EMAIL      "me@example.net"
   set_var EASYRSA_REQ_OU         "My Organizational Unit"
# cd /etc/openvpn/key_server
# ./easyrsa init-pki nopass
# ./easyrsa build-ca nopass 输入CN
# ./easyrsa gen-req server nopass 输入CN
# ./easyrsa sign server server
# ./easyrsa gen-dh 创建Diffie-Hellman,时间会有点长,耐心等待
客户端的创建:
# cp -r /etc/openvpn/key_server /etc/openvpn/key_client
# ./easyrsa init-pki nopass
# ./easyrsa gen-req client nopass
进入服务端key_server目录,关联客户端req,使之向服务端注册
# cd ../key_server
# ./easyrsa import-req /etc/openvpn/key_client/pki/reqs/client.req client
# ./easyrsa sign client client
如果出现报错:TXT_DB error number 2 ,则
# rm -f /etc/openvpn/key_server/pki/index.txt
# touch /etc/openvpn/key_server/pki/index.txt
3、整理生成的证书
# cp /etc/openvpn/key_server/pki/ca.crt /etc/openvpn/server/
# cp /etc/openvpn/key_server/pki/private/server.key /etc/openvpn/server/      
# cp /etc/openvpn/key_server/pki/issued/server.crt /etc/openvpn/server/       
# cp /etc/openvpn/key_server/pki/dh.pem /etc/openvpn/server/
# cp /etc/openvpn/key_server/pki/ca.crt /etc/openvpn/client/ 
# cp /etc/openvpn/key_server/pki/issued/client.crt /etc/openvpn/client/
# cp /etc/openvpn/key_client/pki/private/client.key /etc/openvpn/client/
4、打开服务器的ip路由转发功能,并配置防火墙
5、服务端配置,指定相关ca、crt、key文件
从示例配置文件复制一份配置文件到/etc/openvpn
# cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf  /etc/openvpn 
# vim /etc/openvpn/server.conf  ( cat server.conf | grep -v ^$ | grep -v ^# | grep -v "^;" )
port proto udp dev tun ca /etc/openvpn/server/ca.crt cert /etc/openvpn/server/server.crt key /etc/openvpn/server/server.key # This file should be kept secret dh /etc/openvpn/server/dh.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt push "route 172.17.0.0 255.255.0.0" #向客户端推送需要访问的路由信息duplicate-cn #定义openvpn一个证书在同一时刻是否允许多个客户端接入,默认没有启用。 keepalive 120tls-auth ta.key 0 #服务端设置为0 客户端设置为1 cipher AES--CBC user nobody group nobody persist-key persist-tun status openvpn-status.log verb
生成ta.key ,与server.conf放在同一层目录下
# cd /etc/openvpn ; openvpn --genkey --secret ta.key
测试该配置文件是否正确:
# openvpn /etc/openvpn/server.conf
6、编辑客户端配置文件 client.ovpn
client dev tun proto udp remote * resolv-retry infinite nobind persist-key persist-tun ca ca-myxb.crt cert myxb.crt key myxb.keytls-auth ta.key 1 cipher AES--CBC ;comp-lzo verb
7、启动OpenVPN服务
# systemctl enable openvpn@server.service
# systemctl start openvpn@server.service
8、添加用户名和密码验证
# vim /etc/openvpn/server.conf 添加
auth-user-pass-verify /etc/openvpn/checkpsw.sh via-env
username-as-common-name
script-security 3
创建用于验证用户登录的脚本和用户名密码认证文件
# vim /etc/openvpn/checkpsw.sh
#!/bin/sh
###########################################################
# checkpsw. Mathias Sundman <mathias@openvpn.se>
#
# This script will authenticate OpenVPN users against
# a plain text file. The passfile should simply contain
# one row per user with the username first followed by
# one or more space(s) or tab(s) and then the password.
PASSFILE="/etc/openvpn/psw-file"
LOG_FILE="/etc/openvpn/openvpn-password.log"
TIME_STAMP=`date "+%Y-%m-%d %T"`
###########################################################
if [ ! -r "${PASSFILE}" ]; then
  echo "${TIME_STAMP}: Could not open password file \"${PASSFILE}\" for reading." >> ${LOG_FILE}
  exit
fi
CORRECT_PASSWORD=`awk '!/^;/&&!/^#/&&$1=="'${username}'"{print $2;exit}' ${PASSFILE}`
if [ "${CORRECT_PASSWORD}" = "" ]; then
  echo "${TIME_STAMP}: User does not exist: username=\"${username}\", password=\"${password}\"." >> ${LOG_FILE}
  exit
fi
if [ "${password}" = "${CORRECT_PASSWORD}" ]; then
  echo "${TIME_STAMP}: Successful authentication: username=\"${username}\"." >> ${LOG_FILE}
  exit
fi
echo "${TIME_STAMP}: Incorrect password: username=\"${username}\", password=\"${password}\"." >> ${LOG_FILE}
exit 
# vim /etc/openvpn/psw-file
wjoyxt
# touch /etc/openvpn/openvpn-password.log
# chown nobody:nobody checkpsw.sh psw-file openvpn-password.log
# chmod 744 checkpsw.sh ; chmod 400 psw-file
修改客户端配置文件
# vim client.ovpn 增加
auth-user-pass pass.txt
重启服务后生效
# cat pass.txt
wjoyxt wjoyxt666
-----------------------------------------------------------------------------------
优化client.ovpn,合并证书到配置文件中
删除或者注释掉以下几行内容: 在这里我把它们注释掉: ca ca.crt 改为:#ca ca.crt cert client.crt 改为:#cert client.crt key client.key 改为:#key client.key tls-auth ta.key 在最后面添加以下内容: <ca> ca.crt文件内容 </ca> <cert> client.crt文件内容 </cert> <key> client.key文件内容 </key> key-direction 1 <tls-auth> ta.key文件内容 </tls-auth> 复制各文件里的内容到相应的位置即可!保存退出!!
参考资料:https://yq.aliyun.com/articles/43247
https://www.cnblogs.com/ilanni/p/4695112.html
Centos7搭建OpenVPN服务器的更多相关文章
- centos7 搭建openvpn服务器
		OpenVPN是一个开源代码的VPN应用程序,可让您在公共互联网上安全地创建和加入专用网络.相比pptp,openvpn更稳定.安全. 本篇博客主要介绍下面两点: 1. Centos 7下安装与配置O ... 
- CentOS7搭建OpenVPN
		目录 CentOS7搭建OpenVPN 环境 安装 第一步.安装openvpn及所需软件 第二步.编辑vars文件,根据自己环境配置 第三步.创建服务端证书及key 第四步.创建客户端证书 第五步.拷 ... 
- CentOS7 搭建 SVN 服务器
		CentOS7 搭建 SVN 服务器 介绍SVN: SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上 ... 
- centos7 搭建WEB服务器
		centos7 搭建WEB服务器 2017年09月17日 09:44:50 逝然1994 阅读数:18321 标签: centosapacheweb服务器 更多 个人分类: centos服务器简单配置 ... 
- CentOS 6.9/Ubuntu 16.04搭建OpenVPN服务器以及客户端的使用
		说明: 1.发现一个很奇怪的现象,CentOS和Ubuntu有着对用户不同的管理理念,比如CentOS中安装一切软件都是以root优先(su -),而Ubuntu则以当前用户优先,安装软件以sudo开 ... 
- centos7搭建svn服务器及客户端设置
		centos7搭建svn服务器及客户端设置 centos7貌似预装了svn服务(有待确认),因此我们直接启动该服务即可 一.svn服务端配置(服务器IP假设为192.168.100.1) 步骤1:创建 ... 
- 烂泥:ubuntu 14.04搭建OpenVPN服务器
		本文由秀依林枫提供友情赞助,首发于烂泥行天下 公司分部需要连接公司内部的服务器,但是该服务器只允许公司内部的网络访问. 为了解决这个问题,打算使用VPN.对于VPN以前使用最多的是PPTP这个解决方案 ... 
- CentOS 7.2 搭建 Openvpn 服务器
		本文将以目前最新的openvpn-2.3.13.tar.gz为例来介绍如何在Linux系统中安装.配置及使用OpenVPN. 在这里,我们选用了一台预装CentOS 7.2 64位系统的计算机作为Op ... 
- CentOS6下搭建OpenVPN服务器
		• OpenVPN简介 OpenVPN是一个用于创建虚拟专用网络(Virtual Private Network)加密通道的免费开源软件.使用OpenVPN可以方便地在家庭.办公场所.住宿酒店等不同网 ... 
随机推荐
- 外网如何访问web项目holer实现篇
			外网访问WEB 内网主机上安装了WEB服务器,只能在局域网内访问,怎样从公网也能访问本地WEB应用? 本文将介绍使用holer实现的具体步骤. 1. 准备工作 1.1 安装Java 1.7及以上版本 ... 
- 基于TCP的安卓服务器开发
			一.说明 前文介绍了基于安卓客户端的开发,在此基础上,进行少许改动即可开发出一款基于TCP的安卓服务器,理论知识请参见笔者上一篇博文,下面直接实践操作. 二.权限申明 <!--允许应用程序改变网 ... 
- 问题 Duplicate entry '0' for key 'PRIMARY'
			今天使用了触发器,在一个表中执行增删改操作,然后在另一个表中执行相应的记录时,出现了这个问题 其实这个问题应该算是细节问题,有两种情况: 1.就是在插入数据的时候将id设置为not nul但是在插入数 ... 
- pacbio bax.h5文件处理及ccs计算
			1.NCBI文件格式如下: 2.格式转换 (1) bas.h5 -> ccs source /share/nas2/genome/biosoft/smrtanalysis/2.3.0/smrta ... 
- vs2017    编译vue 错误	TS2307	Build:找不到模块“webpack”。
			升级了vs2017之后,编译之前正常的工程,发现出现了对vue的编译错误, 提示一些列找不到模块的错误 错误 TS2307 Build:找不到模块“webpack”. ...... 错误 TS2345 ... 
- XML二
			XML的语法要求: 1,XML文档必须有一个顶层元素,即文档元素,所有其他元素必须嵌入在文档元素中. 2,元素嵌套要正确,即如果一个元素在另一个元素中开始,那么必须在同一个元素中结束. 3,每个元素必 ... 
- #考研笔记#计算机之PPT问题
			PPT1. 幻灯片母版.版式.模板之间的联系与区别?见下 12 2. 占位符的意义用于幻灯片上,就表现为一个虚框,虚框内部往往有“单击此处添加标题”之类的提示语,一旦鼠标点击之后,提示语会自动消失.当 ... 
- crontab 相关
			修改编辑器 select-editor 查看服务状态 service cron status (linux下为crond ,ubuntu为cron) 1-59/2 1,10,12 * * * ... 
- 【SpringBoot】搜索框架ElasticSearch介绍和整合SpringBoot
			========================12章 搜索框架ElasticSearch介绍和整合SpringBoot ============================= 加入小D课堂技术交 ... 
- 如何在Python中使用ZeroMQ和Docker构建微服务架构
			@Container容器技术大会将于6月4日在上海光大会展中心国际大酒店举办,来自携程.PPTV.蚂蚁金服.京东.浙江移动.海尔电器.唯品会.eBay.道富银行.麻袋理财等公司的技术负责人将带来实践经 ... 
