openvpn-admin(openvpn web管理 )

2017-12-15  本文已影响1088人  Lee_M

ps:上一段时间公司实施vpn,由于账号是分发key,维护不方便,包括使用人首次设置也是麻烦,每次添加注销账户都需要登录服务器端去操作,为了方便便在github上找到了支持openvpn web的一个神器openv-admin

openvpn 两种认证简介:

1、key分发:
在服务器端生成秘钥,然后下载到本地,将服务器端的ca.crt xx.crt xx.key ta.key(如果服务器启用的话需要,未开启的话不需要,功能是放在dos攻击)下载到本地 。将该几个文件和客户端配置文件xx.ovpn文件拷贝到openvpn客户端安装路径的config文件夹里面,然后修改xx.ovpn文件来指定从服务器下载过来的路径(特别注意windows下 xx.ovpn 编码为 ANSI,mac记手机下编码改为UTF-8)

2、user/pass 方式认证:
在服务器端的配置文件直接指定配置文件中添加用户名和密码,使用者只需把ca.crt 及固定的xx.ovpn 文件拷贝到openvpn 客户端安装的config文件夹中去,再连接的时候使用用户名密码登录即可,可以参考:http://blog.51cto.com/ylw6006/1009004

不过本文是讲解使用openvpn-admin。
openvpn-admin 顾名思义为openvpn管理的web端。
https://github.com/Chocobozzz/OpenVPN-Admin

openvpn 安装

可以参考各个云商,ucloud的如下:https://docs.ucloud.cn/software/vpn/openvpn4centos?s[]=openvpn

openvpn-admin

它是怎么实现在web端添加账户,在web端注销账户的?
openvpn使用user/pass 方式认证,用户及密码是保存到指定的文件中,将指定的文件保存到数据库中去。

openvpn-admin 做到什么效果:

1、输入账户在web端自动下载配置文件及ca.crt (之前是手动分发到邮箱)
2、开账号及关闭账号
3、查看登录log

实施:
环境lnmp、nodejs、git、unzip
linux 版本: centos 6.9 64位
nginx 版本: 1.5.6
php 版本:5.6
mysql 版本:5.6
lnmp 环境安装可参考:https://www.cnblogs.com/gpfeisoft/p/5999263.html
nodejs 、git 安装(参考):http://www.jianshu.com/p/8671e439a811

完成后用npm来安装bower

npm install -g bower

然后在nginx html文件夹下下载openvpn-admin的源代码

git clone https://github.com/Chocobozzz/OpenVPN-Admin openvpn-admin

解压出包直接到nginx存放页面路径(/usr/local/nginx-1.5.6/html/a/),
本文更改了页面路径,nginx页面配置路径如下:

location / {
            root   /usr/local/nginx-1.5.6/html/a/openvpn-admin;
            index  index.html index.htm index.php;
       }

nginx配置文件php

 location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx-1.5.6/html/a/openvpn-admin$fastcgi_script_name;
            include        fastcgi_params;
        }

将解压出来的client-conf 文件夹 放在openvpn-admin 文件夹下

cp -r /usr/local/nginx-1.5.6/html/a/openvpn-admin/installation/client-conf  ../client-conf
chmod -R 777 client-conf

接着,我们进入/usr/local/nginx-1.5.6/html/a/openvpn-admin 这个目录

cd /usr/local/nginx-1.5.6/html/a/openvpn-admin

然后执行,进行安装依赖包:

bower --allow-root install

查看openvpn-admin文件

[root@h01 a]# pwd
/usr/local/nginx-1.5.6/html/a
[root@h01 a]# tree -L 2
.
└── openvpn-admin
    ├── bower.json
    ├── CHANGELOG.md
    ├── client-conf
    ├── css
    ├── desinstall.sh
    ├── include
    ├── index.php
    ├── installation
    ├── install.sh
    ├── js
    ├── LICENSE.md
    ├── migration.php
    ├── README.md
    ├── update.sh
    └── vendor (是上一步安装依赖包生成的)

然后,我们需要修改/usr/local/nginx-1.5.6/html/a/openvpn-admin/include/config.php 文件中的mysql链接信息

<?php
$host = 'localhost';
$port = '3306';
$db = 'openvpn-admin';
$user = '';
$pass = '';
?>

这里需要填写你自己的db名称(这里需要说明一下需要自己创建该数据库),用户名以及密码。
然后启动apache或者nginx,然后访问安装url:http://loaclhost/index.php?installation
按照提示进行安装即可!

重新进入openvpn-admin目录(即openvpn-admin的源码目录),拷贝该目录下的installation/scripts目录和server.conf到/etc/openvpn/目录下:

cp -r installation/scripts /etc/openvpn/
cp -r installation/server.conf /etc/openvpn/  (可以先将原来配置文件备份)

然后修改/etc/openvpn/server.conf中的信息,我将拷贝过来的配置文件
将注释不然openvpn 起来,没有端口(本次为测试,如线上使用需要根据线上情况修改配置文件)

#user nobody
#group nogroup

cat /etc/openvpn/server.conf

[root@h01 form]# cat /etc/openvpn/server.conf | grep -Ev '^$|^#'
mode server
proto tcp
port 1194
dev tun
ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh2048.pem
cipher AES-256-CBC
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1"
push "dhcp-option DNS 80.67.169.12"
push "dhcp-option DNS 80.67.169.40"
keepalive 10 120
reneg-sec 18000
persist-key
persist-tun
comp-lzo
verb 3
mute 20
status openvpn-status.log
log-append /var/log/openvpn.log
client-config-dir ccd
script-security 3
username-as-common-name
verify-client-cert none
auth-user-pass-verify scripts/login.sh via-env
max-clients 50
client-connect scripts/connect.sh
client-disconnect scripts/disconnect.sh

还需要修改/etc/openvpn/scripts/config.sh配置文件,需要和前面的/var/www/html/openvpn/include/config.php 文件一致即可!
然后在/etc/openvpn/目录下新建ccd文件夹,并将ccd目录和scripts目录的设置为可执行的权限

chmod -R 777 ccd 
chmod -R 777 scripts

重启openvpn,然后即可

效果

image.png
image.png

下载配置文件页面(需要输入开通的用户名和密码)


image.png

参考:https://github.com/Chocobozzz/OpenVPN-Admin
http://www.th7.cn/db/mysql/201703/229715.shtml

遇得到的问题:

1、点开web端下载配置文件点击跳转http500
解决方法:将client-conf 拷贝到/usr/local/nginx-1.5.6/html/a/openvpn-admin 目录下
2、下载的配置文件zip包解压失败,包不全
解决方法:

chmod -R 777 client-conf

3、/etc/openvpn/scripts/config.sh 连接数据失败
ERROR 2003 (HY000): Can't connect to MySQL server on '172.16.100.71' (13)
解决办法:selinux未关闭(之前记的是关闭的,所以浪费了点时间)
4、openvpn播入报错,openvpn-admin日志不能写入库
问题报错:ERROR 1265 (01000) at line 1: Data truncated for column 'log_received' at row 1
解决办法:修改mysql的配置文件,my.cnf ,注释掉sql_mode,重启mysql

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
上一篇下一篇

猜你喜欢

热点阅读