wireguard VPN 服务器管理工具。提供服务器配置、重启、警报、报表等功能;提供用户的列出、添加、删除、导出配置、二维码分享等功能
- 配置服务器
- 列出账号
- 添加删除账号
- 导出用户配置信息
- 重启
- 显示用户在线状态
- 用户登录发送钉钉消息
- 用户离线发送钉钉消息
- 每天生成用户报告
- 总报告
- 【Star】她,让她看到你是爱她的;
- 【Watching】她,时刻感知她的动态;
- 【Fork】她,为她增加新功能,修Bug,让她更加卡哇伊;
- 【Issue】她,告诉她有哪些小脾气,她会改的,手动小绵羊;
- 【打赏】她,为她买jk;
Linux shell
- 克隆下来即可
- wireguard服务器的安装方法请参考官网
https://www.wireguard.com/install/
请使用-h|--help参数运行sh脚本即可看到使用帮助
基于env.sh.sample
创建环境变量文件env.sh
,并根据自己的环境修改它:
$ cat env.sh
#!/bin/bash
## ----- 一般不需要修改 -----
# server env
SERVER_CONF_FILE_PATH="/etc/wireguard" #--- wireguard服务器配置文件路径
WG_IF='wg0' #--- wireguard服务器网卡
IP_PREFIX='172.30.0' #--- wireguard服务器网络地址前3节
IP_NETMASK='24' #--- wireguard服务器IP掩码
# run
SERVER_CONF_FILE="${SERVER_CONF_FILE_PATH}/${WG_IF}.conf"
SERVER_PRIVATE_KEY="${SERVER_CONF_FILE_PATH}/private.key"
TODAY_WG_USER_LATEST_LOGIN_FILE="/tmp/wg-user-first-login-today.txt"
## ----- 一般需要修改 -----
# 钉钉
export DINGDING_API_URL_FOR_LOGIN="https://oapi.dingtalk.com/robot/send?access_token=填上你的token在这里" #-- 用来发送钉钉消息
# server env
SERVER_CONNECT_INFO='服务器IP或域名:端口如51820' #--- wireguard服务器用以接受用户连接的IP或域名及端口,用来生成用户的wg配置文件
# user env
USER_DNSs='192.168.11.3,192.168.11.4' #--- 用户的DNS,用来设置用户的DNS
USER_ALOWED_IPs="${IP_PREFIX}.0/${IP_NETMASK},0.0.0.0/0" #--- 用户端走VPN链路的网络地址范围(用来设置用户端路由)
运行0-init-setup.sh
用于第一次配置服务器:
# ./0-init-setup.sh
# ./wg-manage.sh -h
用途:用于wireguard的用户管理
依赖:./env.sh
qrencode
注意:
用法:
./wg-manage.sh [-h|--help]
./wg-manage.sh [-l|--list]
./wg-manage.sh [-a|--add {用户名}] <{IP第4段}>
./wg-manage.sh [-r|--rm|-o|--output-config {用户名}]
./wg-manage.sh [-R|--reload]
./wg-manage.sh [-s|--status]
参数说明:
\$0 : 代表脚本本身
[] : 代表是必选项
<> : 代表是可选项
| : 代表左右选其一
{} : 代表参数值,请替换为具体参数值
% : 代表通配符,非精确值,可以被包含
#
-h|--help 此帮助
-l|--list 列出现有用户
-a|--add 添加用户
-r|--rm 删除用户
-o|--output-config 输出用户配置文件
-R|--reload 重启服务器
-s|--status 服务器状态
示例:
#
./wg-manage.sh -l #--- 列出用户清单
#
./wg-manage.sh -a 猪猪侠 11 #--- 添加用户【猪猪侠】,IP地址尾号为【11】
./wg-manage.sh -a 猪猪侠 #--- 添加用户【猪猪侠】,IP地址尾号自动分配
#
./wg-manage.sh -r 猪猪侠 #--- 删除用户【猪猪侠】
#
./wg-manage.sh -o 猪猪侠 #--- 输出用户【猪猪侠】的配置文件
#
./wg-manage.sh -R #--- 重启服务器
#
./wg-manage.sh -s #--- 查看服务器状态
添加计划任务:
# ./1-add-crontab.sh
查看报告:
# cat ./report/wg-report.list
+------------+----------+---------+---------+----------+-------------+----------------+
|日期 |用户名 |总流浪MiB|IN流量MiB|OUT流量MiB|IP |远程IP |
+------------+----------+---------+---------+----------+-------------+----------------+
|2021-07-19 |HB清 |.3 |.1 |.2 |172.30.5.23 |113.111.63.250 |
|2021-07-19 |HB颖 |28.9 |3.4 |25.5 |172.30.5.31 |113.111.63.250 |
|2021-07-20 |HB宇 |45.3 |8.3 |37.0 |172.30.5.22 |113.111.63.250 |
|2021-07-20 |HB华 |708.9 |101.6 |607.3 |172.30.5.23 |113.111.63.250 |
+------------+----------+---------+---------+----------+-------------+----------------+
警报需要钉钉API,方法是建立钉钉群,然后添加一个钉钉机器人,然后把得到的api url写入到env.sh
即可。
测试警报:
# ./wg-login-alert-cron.sh
- Fork 本仓库
- 新建 Feat_xxx 分支
- 提交代码
- 新建 Pull Request
- 使用 Readme_XXX.md 来支持不同的语言,例如 Readme_en.md, Readme_zh.md
- Gitee 官方博客 blog.gitee.com
- 你可以 https://gitee.com/explore 这个地址来了解 Gitee 上的优秀开源项目
- GVP 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
- Gitee 官方提供的使用手册 https://gitee.com/help
- Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 https://gitee.com/gitee-stars/