# openvpn-cms-flask **Repository Path**: lqcone/openvpn-cms-flask ## Basic Information - **Project Name**: openvpn-cms-flask - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2021-09-15 - **Last Updated**: 2022-11-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # openvpn-cms-flask ### (如果此系统对你有所帮助,请Start一波!!) ## [前端系统传送门](https://github.com/xiaoyunjie/openvpn-cms-vue) --- ### 一、需求 使用`openvpn`开源系统构建了一整套满足vpn需求的产品。 需要一套针对openvpn的内容管理系统,操作简单、维护方便、交互体验好、有日志查询、权限管控、开放API等功能,同时提供插件扩展。 **功能:** - web端交互,无需linux基础,操作简单 - 一键创建证书账户,操作交互友好 - 登入信息在线统计,IP、掩码、端口、协议、登入时间、流量使用统计等 - 历史登入信息查询 - 一键注销用户,方便省力 - 开放的API调用 --- ### 二、语言环境选择 经过筛选,选择前后端分离,全部通过API交互,方便后续前后端系统的重构。 **前端选择:** `VUE` **后端选择:** `FLASK` **数据库:** `Mysql` **语言环境:** `Python` >基于开源框架Lin-cms二次开发 VPN概览 ![images](images/openvpn-1.png) VPN列表 ![images](images/openvpn-2.png) VPN历史信息 ![images](images/openvpn-3.png) --- ### 三、环境部署 ##### CentOS 7 - python 3.6+ - mysql 5.6+ - openvpn 2.4.7+ ##### 数据库 `curl -O http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm` `rpm -ivh mysql-community-release-el7-5.noarch.rpm` `yum install -y epel-release mysql-community-server` ```sql mysql -u root -p create user 'root'@'localhost' identified by 'openvpn'; create database openvpn default character set utf8mb4 collate utf8mb4_unicode_ci; grant all on *.* to 'root'@'%'; create database openvpn; flush privileges; exit ``` **如果更改了MySQL的密码,还需要将 /opt/openvpn-cms-flask/app/scripts/cmd/ 中 connect.sh和disconnect.sh 中的密码改掉** 建议修改mysql的字符集 ```bash [mysqld] character_set_server=utf8mb4 ``` **启动mysql** `systemctl start mysqld` **开机启动mysql** `systemctl enable mysqld` --- ### 四、CMS部署 ##### python36 `yum install -y gcc GeoIP GeoIP-devel python36 python36-setuptools python36-devel` `easy_install-3.6 pip` ##### openvpn-cms-flask `cd /opt && git clone https://github.com/xiaoyunjie/openvpn-cms-flask.git openvpn-cms-flask` `cd openvpn-cms-flask && python3.6 -m venv venv` ```bash ## 指定pip源,加速下载 mkdir -p /root/.pip/ cat > /root/.pip/pip.conf < /etc/sysctl.conf sysctl -p #创建openvpn相关目录 mkdir -p /var/log/openvpn mkdir -p /opt/vpnuser mkdir -p /etc/openvpn/easy-rsa/3/pki/package cp pki/ca.crt pki/package/ cp ta.key pki/package/ # client.ovpn 中的remote地址根据自己实际地址或域名来修改 cp /opt/openvpn-cms-flask/app/scripts/client.ovpn pki/package/ #开启openvpn并设置开机启动 systemctl start openvpn@server systemctl enable openvpn@server # 每天凌晨重启,重新加载crl.pem,每10分钟执行一次ip mac绑定 crontab -l > /var/tmp/tmp.cron echo "*/10 * * * * sh /usr/local/bin/add_arp.sh" >> /var/tmp/tmp.cron echo "0 0 * * * systemctl restart openvpn@server" >> /var/tmp/tmp.cron crontab /var/tmp/tmp.cron ``` #### iptables配置 ```bash #停用firewalld,安装iptables systemctl stop firewalld systemctl disable firewalld yum install iptables iptables-services systemctl start iptables systemctl enable iptables # 开通系统和数据库端口 iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 8000 -j ACCEPT iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 5000 -j ACCEPT iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT # 放通11940的tcp和udp端口 iptables -I INPUT 5 -p tcp -m state --state NEW -m tcp --dport 11940 -j ACCEPT iptables -I INPUT 6 -p udp -m state --state NEW -m udp --dport 11940 -j ACCEPT # 如果要在内网看到客户端的ip,则配置转发,否则配置nat,配置forward,需要在核心添加路由 iptables -I FORWARD 1 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -I FORWARD 2 -s 172.16.64.0/20 -d 192.168.0.0/16 -j ACCEPT # 配置nat转发 iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # 保存iptables配置 service iptables save # 重新加载iptables配置文件 service iptables restart ``` openvpn密码是固定的:username@vpn ,username是新增的用户名 --- ### 六、API接口 https://easydoc.xyz/doc/82789167/iBTVBVhE/CGQNK5YF --- ### 七、Feature - 新增地图功能,将在线用户显示在地图上 - 新增在线踢出用户下线功能 ## 如果此系统对你有所帮助,请Start一波!! ## 欢迎交流 QQ:2913381648