美文网首页
openvpn-admin(openvpn web管理 )

openvpn-admin(openvpn web管理 )

作者: Lee_M | 来源:发表于2017-12-15 15:42 被阅读1088次

    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 
    

    相关文章

      网友评论

          本文标题:openvpn-admin(openvpn web管理 )

          本文链接:https://www.haomeiwen.com/subject/mnkdwxtx.html