Skip to content


OpenVPN一键安装脚本

  OpenVPN不多作解释,无论大小型企业、学校都可能会用到,多种身份验证方式以及传输的加密方式无疑比其它PVN应用面更广,除了供用户拨入企业/学校内部进行联网,还可以在企业与子公司之间进行加密传输,OpenVPN能实现二/三层的基于隧道的传输,再配合企业内部的不同Vlan,能实现很多复杂的功能。

  
(图片来源于互联网)

  脚本是根据我的需求编写的,使用生成好的密钥/证书,服务端使用脚本安装完成后启动openvpn,把/etc/openvpn目录的client.zip下载下来,解压后放在客户端修改成你的服务端ip就可以使用。

  下载地址:https://github.com/qiguang0920/openvpn.git

  在你的服务器上执行:


  就可以自动安装。


  脚本说明:

1。使用的默认1194/udp端口
2。脚本适用于centos7系统,如果是其它redhat系列的系统,需要手动处理防火墙端口,deban系列不支持
3。开启了redirect-gateway,firewalld开启了转发
4。连接方式为tun
5。安装完成时会询问是否现在启动OpenVPN,输入yes启动。
6。默认加入了系统启动项,重新开机会自动启动OpenVPN
7.无认服务器端还是客户端证书密码都是www.iewb.net,手机登陆的时候会用到证书密码

  脚本适合想快速部署而且偏懒得童鞋。如果对安全要求较高,在安装完成后可以重新生成证书,再配置下server.conf指向你生成的证书就可以了。客户端同样。

  OpenVPN证书的签发

  进入/etc/openvpn/easy-rsa/easyrsa3

  生成服务器端所需密钥

1。./easyrsa init-pki    //目录初始化
2。./easyrsa build-ca    //创建根证书CA,此密码必须记住,不然以后不能为证书签名。还需要输入common name 通用名,这个你自己随便设置,一般设置为签发机构名或是域名。
3../easyrsa gen-req server_iewb.net nopass    //创建服务器端证书,此处我输入的是server_iewb.net,也可以是别的名字,会生成两个文件server_iewb.net.req和server_iewb.net.key
4。./easyrsa sign server server_iewb.net        //签约服务端证书,需要提供CA密码(第二步时的密码),会生成server_iewb.net.crt
5。./easyrsa gen-dh    //创建Diffie-Hellman,确保key穿越不安全网络的命令

  生成客户端所需密钥

1。./easyrsa gen-req client_iewb.net    //client为自定义,可以是别的,会生成client_iewb.net.req和client_iewb.net.key,因为没有和服务器一样使用nopass参数,所以生成时我们输入一个证书密码。

2。./easyrsa import-req  ./pki/reqs/client_iewb.net.req client1    //导入req。此处目录和上面生成的名字都要正确,后面的那个client1可以理解为注释,其实是一个短名称,签约证书时可以使用短名称签约。        
3。./easyrsa sign client client_iewb.net        //签约证书 ,同签约服务端证书一样,需要输入CA密码

  生成的文件所在目录分别为:

easy-rsa/easyrsa3/pki/ca.crt
easy-rsa/easyrsa3/pki/reqs/server_iewb.net.req
easy-rsa/easyrsa3/pki/reqs/client_iewb.net.req
easy-rsa/easyrsa3/pki/private/ca.key
easy-rsa/easyrsa3/pki/private/server_iewb.net.key
easy-rsa/easyrsa3/pki/private/client_iewb.net.key
easy-rsa/easyrsa3/pki/issued/server_iewb.net.crt
easy-rsa/easyrsa3/pki/issued/client_iewb.net.crt
easy-rsa/easyrsa3/pki/dh.pem

  .req和.key为生成证书时生成,.crt为签约证书时生成,签约证书时都需要输入CA密码,其实我们使用的是.crt和.key,其中ca.crt服务端和客户端都会用到。如果想为更多人添加证书,可以再次运行命令,生成证书(不同名字)–导入–签约证书

  一般情况下,比如单位或学校可能更需要所有人使用一个证书,然后再配置用户名和密码登陆,我们打开openvpn的配置文件server.conf,把下面三行的注释去掉

auth-user-pass-verify /etc/openvpn/checkpsw.sh via-env
username-as-common-name
script-security 3

如果不使用证书,只使用用户名和密码验证,把下面一行的注释也去掉

client-cert-not-required 

  以上几行配置官方的配置默认是没有的,其它手动配置openvpn的小伙伴可以把这几行加上,使用脚本安装的小伙伴只需去掉注释就可以了。

  然后我们编辑psw-file,这里面定义用户名和密码,一行一个,用户名和密码使用空格分开。
  同样,checkpsw.sh和psw-file这两个文件官方安装包安装完也是没有的,checkpsw.sh我们可以从网上下载,psw-file自己新建一个就行。
  checkpsw.sh官方下载地址: http://openvpn.se/files/other/checkpsw.sh (PS:这个网址被墙了)
  也可以看这里:https://raw.githubusercontent.com/qiguang0920/openvpn/master/data/checkpsw.sh

  然后客户端我们也要配置下,在client.ovpn中加上一行:

auth-user-pass 

  这样服务端和客户端我们就启用了密钥和用户名密码双认证,所有用户使用同一个密钥,然后分配不同的用户名和密码。
  openvpn功能很强大,认证方式还可以选择系统用户认证,大型企业和学校如果使用openvpn的用户较多,还可以配置mysql数据库认证,就不一一讨论。

 

Posted in 技术文章.

Tagged with .


2 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. name says

    官方有RPM

    • 一天到晚游泳的鱼 says

      YUM应该比RPM安装更方便,无论哪种方式,openvpn难点都是配置方面。可能你说的是openvpn-as,这是一个安装完服务端有WEB UI的收费版本,官方提供RPM包,免费版本支持两个用户



Some HTML is OK

or, reply to this post via trackback.