文档章节

openvpn web ui 安装以及维护

mn_1127
 mn_1127
发布于 2017/03/09 21:26
字数 1064
阅读 1170
收藏 2

##起因 ####由于公司openvpn管理的账号众多,每次都需要修改配置文件,且不太直观。故需要一个web维护的管理界面,要求可以添加openvpn账号,实时查看在线用户,查看用户登录的ip等简单功能即可! ####本着避免重复发明轮子的精神(其实就是懒),所以在github上撸了一把,发现有个项目还是蛮符合我的需要的。项目地址 https://github.com/Chocobozzz/OpenVPN-Admin

##切入正题 ###原理: 原理其实很简单,因为openvpn本身已经提供了很好的切入口,就是允许在客户端接入时依旧接入后执行一些shell脚本,在我们这里主要是三个客户端动作时需要执行我们自定义的shell脚本;分别为:客户端登录验证用户名密码时(login),客户端连接成功时(connect)以及客户端断开连接时(disconnect)。登录时,我们在shell脚本中去查询数据库中的用户名密码进行校验(这样我们的用户名密码就可以存在数据库中);在客户端连接成功后,我们生成一条日志记录插入数据库(用来记录当前登录用户状态和登录的ip等信息),当客户端断开时,我们也生成一条日志记录插入数据库(更新用户的状态,并记录断开时间等信息)。

###安装openvpn-admin 项目的安装方法,其实官方以及有相当详细的说明了,但是官方的安装说明是指用户从头开始安装,也就是说全部重新安装包括openvpn,由于我之前以及安装好openvpn了,故需要忽略安装openvpn。 首先安装 nodejs, zip解压软件, git用于下载openvpn-admin源码,npm包管理 > apt-get install nodejs unzip git wget npm 完成后用npm来安装bower

npm install -g bower

然后下载openvpn-admin的源代码

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

下载完成后,进入openvpn-admin目录需要将该目录下的一些文件拷贝到apach或者nginx的一个项目目录下(我们这里在/var/www/html/目录下建一个openvpn的目录),然后开始拷贝需要的文件

cp -r index.php /var/www/html/openvpn/
cp -r sql /var/www/html/openvpn/
cp -r bower.json /var/www/html/openvpn/
cp -r .bowerrc /var/www/html/openvpn/
cp -r js /var/www/html/openvpn/
cp -rinclude /var/www/html/openvpn/
cp -r css /var/www/html/openvpn/
cp -r installation/client-conf /var/www/html/openvpn/

接着,我们进入/var/ww/html/openvpn 这个目录

cd /var/ww/html/openvpn

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

bower --allow-root install

然后,我们需要修改/var/www/html/openvpn/include/config.php 文件中的mysql链接信息

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

这里需要填写你自己的db名称(这里需要说明一下需要自己创建该数据库),用户名以及密码。

然后启动apache或者nginx,然后访问安装url:http://loaclhost/index.php?installation

按照提示进行安装即可!

至此,你已经完成了一半了,接下来我们来配置openvpn相关的信息

重新进入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的配置信息,可根据自己的需求去配置即可,不懂得另行百度),还需要修改/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

最后kill掉openvpn的进程,再启动openvpn

kill -9 openvpn-pid
systemctl start openvpn@server

然后就可以在web页面中愉快的玩耍了!!!

© 著作权归作者所有

mn_1127
粉丝 6
博文 23
码字总数 6952
作品 0
杭州
后端工程师
私信 提问
加载中

评论(1)

s
shell變壞
参照下载的配置文件,在我原来的/etc/openvpn/server.conf 最后加了下面几行,客户端就断开连接了,那几个脚本是否也需要做相应的修改?(我的客户端只要有证书打开软件就能连上去的,不再需要输入密码)


client-config-dir /etc/openvpn/ccd/

# Allow running external scripts with password in ENV variables
script-security 3

# Use the authenticated username as the common name, rather than the common name from the client cert
username-as-common-name
# Client certificate non requried
#client-cert-not-required
# Use the connection script when a user wants to login
auth-user-pass-verify /etc/openvpn/scripts/login.sh via-env
# Maximum of clients
#max-clients 50
# Run this scripts when the client connects/disconnects
client-connect /etc/openvpn/scripts/connect.sh
client-disconnect /etc/openvpn/scripts/disconnect.sh
Windows 7上OpenVPN怎么设置使用?

OpenVPN是从去年斯巴达河蟹的时候开始广泛运用,OpenVPN这种vpn代理方式是全局代理,许多玩外服游戏的朋友就喜欢用这种方式,比较稳定。目前在小冬推荐的商家里有许多VPN商家采用这种vpn代理...

china008
2014/08/13
0
0
OpenVPN的高级路由技术-内部路由

1.server模式以及点对点模式的OpenVPN 前文好几次说过,虽然OpenVPN也可以创建隧道,该隧道封装了IP数据报或者以太帧,然而却和使用IPSec VPN的网络拓扑无法做到兼容,这是因为在网对网模式下...

晨曦之光
2012/04/10
3.2K
0
OpenVPN高级路由技术-扩展成巨大的网络

OpenVPN内部实现了一个路由器的功能,其源代码的multi_get_instance_by_virtual_addr函数执行路由查找的工作,这种路由是OpenVPN的内部路由,也就是说这种路由是OpenVPN配置并查找的,和外部...

晨曦之光
2012/04/10
134
0
关于OpenVPN文章的目录

一.基本理论篇 1. vpn原理及实现--一般理论 2. vpn原理及实现--隧道的一种实现 3. vpn原理及实现--虚拟网卡构建vpn 4. vpn原理及实现--tcp还是udp 5. Linux平台VPN技术概论 6. Linux平台VPN...

晨曦之光
2012/04/10
514
0
FreeBSD 下用OpenVPN 架设虚拟局域网[原]

FreeBSD 下用OpenVPN 架设虚拟局域网 1 环境及需求 4 个房间,分别通过4 个802.1X 帐号连接到学校校园网。4 个房间属于一个课题组,需要共享资料,4 个房间内计算机需要相互访问文件共享,能...

JavaGG
2009/05/05
2.1K
0

没有更多内容

加载失败,请刷新页面

加载更多

使用navicat连接mysql8.0出现1251异常提示

如标题所示,出现如下图场景: 解决方案: 使用管理员权限打开cmd执行以下命令: use mysql alter user 'root'@'localhost' modified with mysql_native_password by 'root' flush privileg......

貔貅叔
10分钟前
0
0
原子操作组合与线程安全

除了操作原子性之外,还有一个比较容易引起线程不安全的原因:安全方法组合。使用多个线程安全的方法组合成一个方法,也有可能导致线程不安全的情况出现。 以ConcurrentHashMap类为例,Concu...

八音弦
10分钟前
0
0
耦合的形式(对以往思路的纠正)

耦合的形式 不透明耦合(或者叫浑浊耦合) 部件A直接驱动部件C,C对A不透明 透明耦合 部件A驱动代理B,代理B驱动部件C,C对A透明 纠正 曾经我将耦合的形式区分为:不透明耦合,单边透明耦合,...

wanxiangming
11分钟前
0
0
bash:yum:command not found 解决办法

最近在学rhel7,不知道怎么回事,今天突然yum不能用了, 提示: bash:yum:command not found 在度娘搜了半天,真不好说啥了. 自己研究了半天 步骤如下 第一步: http://mirrors.163.com/cen...

寰宇01
13分钟前
1
0
弘康人寿基于 RocketMQ 构建微服务边界总线的实践

随着互联网+和平台化战略的兴起,各个行业的 IT 系统都在向互联网架构发展,涉及的主要技术包括微服务、消息和弹性计算等,采用微服务架构实现服务高内聚、低耦合,通过异步消息完成交易快速...

阿里云官方博客
13分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部