文章介绍:使用github-ngoduykhanh的WireGuard-UI开源项目,简单搭建一个WireGuard管理平台,与传统相比多了Web管理平台,利于管理员编辑服务端和客户端配置文件,创建用户,查看用户在线状态,支持邮件发送配置文件。
一、项目来源 {#一-项目来源}
二、部署前准备 {#二-部署前准备}
1、一台linux系统
个人测试使用,可以使用VMware Workstation 安装Ubuntu,点我跳转安装Ubuntu
2、SSH管理工具
点我:可以下载MobaXterm中文最新版本(可以激活,激活方法可以见跳转博客)
3、WireGuard客户端
三、正式部署 {#三-正式部署}
3.1、关闭防火墙 {#3-1-关闭防火墙}
ufw disable
3.2、安装WireGuard {#3-2-安装WireGuard}
sudo apt install -y wireguard
3.3、安装额外命令 {#3-3-安装额外命令}
-
wget: 用于在命令行中下载文件的工具。可以通过指定 URL 来下载文件,支持断点续传和使用 HTTP、HTTPS、FTP 协议等。
-
tree: 用于以树状图形式显示目录结构的工具。它可以递归地列出目录和文件,并以树形结构显示它们之间的关系。
-
tar: 用于在 Linux 系统上创建和提取归档文件的工具。它可以创建 tar 存档文件,也可以将文件从 tar 存档中提取出来。tar 常用于打包和解压文件。
sudo apt install -y wget tree tar
3.4、创建WireGuard-ui目录 {#3-4-创建WireGuard-ui目录}
cd /opt;mkdir wireguard-ui
3.5、下载WireGuard-ui {#3-5-下载WireGuard-ui}
截止2024年3月3号,当前最新版本是v0.6.2,建议安装前看一下最新版本
WireGuard-UI-Releases 地址
sudo wget https://github.com/ngoduykhanh/wireguard-ui/releases/download/v0.6.2/wireguard-ui-v0.6.2-linux-amd64.tar.gz
3.6、解压文件至wireguard-ui目录 {#3-6-解压文件至wireguard-ui目录}
tar -zxvf wireguard-ui-v*.tar.gz -C ./wireguard-ui/
3.7、查看opt目录结构 {#3-7-查看opt目录结构}
tree /opt
3.8、配置WireGuard-UI-Web管理和邮件参数 {#3-8-配置WireGuard-UI-Web管理和邮件参数}
nano /opt/wireguard-ui/.env
邮件配置可选,如果需要使用邮件发送用户的配置文件或者QR二维码则需要填写正确
BIND_ADDRESS=0.0.0.0:5000
# 配置绑定IP和端口,默认为5000(5000端口是web管理端口,可以自定义)
EMAIL_FROM_ADDRESS=your-qq@qq.com
# 邮件发送人地址
EMAIL_FROM_NAME=your-name
# 邮件人名字
SMTP_HOSTNAME=smtp.qq.com
# SMTP服务器域名或IP(qq的smtp地址默认不改)
SMTP_PORT=465
# SMTP服务器端口(默认不改)
SMTP_USERNAME=your-qq@qq.com
# 邮箱登录账号
SMTP_PASSWORD=Ps1234
# 邮箱登录密码(不是qq号的登录密码,是第三方登录的授权码)
SMTP_AUTH_TYPE=LOGIN
# 登录方式(默认不改)
SMTP_ENCRYPTION=SSL
# 加密方式,一般为SSL(默认不改)
#WGUI_FAVICON_FILE_PATH=/opt/wireguard-ui/logo.ico
# 配置Web界面网站图标,可不配置
3.9、配置启动文件 {#3-9-配置启动文件}
nano /etc/systemd/system/wireguard-ui.service
[Unit]
Description=WireGuard UI Daemon
Wants=network-online.target
After=network-online.target
\[Service\]
User=root
Group=root
Type=simple
WorkingDirectory=/opt/wireguard-ui
EnvironmentFile=/opt/wireguard-ui/.env
ExecStart=/opt/wireguard-ui/wireguard-ui
`[Install]
WantedBy=multi-user.target
`
3.10、配置开机启动 {#3-10-配置开机启动}
重新加载WireGuard-UI服务文件、启动、配置开机自启、查看服务状态
systemctl daemon-reload
systemctl start wireguard-ui.service
systemctl enable wireguard-ui.service
systemctl status wireguard-ui.service
3.11、重启wg0服务 {#3-11-重启wg0服务}
systemctl restart wg-quick@wg0.service
3.12、开机自启wg0接口 {#3-12-开机自启wg0接口}
systemctl enable wg-quick@wg0.service
3.13、查看接口状态 {#3-13-查看接口状态}
ip addr
3.14、配置systemd服务 {#3-14-配置systemd服务}
WireGuard-UI 只负责配置信息生成。可以使用 systemd 来监视更改并重新加载配置,使新客户端配置自动生效。
3.14.1、配置wgui.service服务 {#3-14-1-配置wgui-service服务}
nano /etc/systemd/system/wgui.service
[Unit]
Description=Restart WireGuard
After=network.target
\[Service\]
Type=oneshot
ExecStart=/usr/bin/systemctl restart wg-quick@wg0.service
`[Install]
RequiredBy=wgui.path
`
3.14.2、配置wgui.path服务 {#3-14-2-配置wgui-path服务}
wgui.path
是 systemd 中的一个路径单元,用于监视特定路径下的文件或目录。当该路径下的文件或目录发生变化时,可以触发相关的服务单元进行处理。
nano /etc/systemd/system/wgui.path
[Unit]
Description=Watch /etc/wireguard/wg0.conf for changes
\[Path\]
PathModified=/etc/wireguard/wg0.conf
`[Install]
WantedBy=multi-user.target
`
3.14.3、配置wgui服务开机自启 {#3-14-3-配置wgui服务开机自启}
重新加载,配置开机启动,启动服务
systemctl daemon-reload
systemctl enable wgui.{path,service}
systemctl start wgui.{path,service}
四、Web管理 {#四-Web管理}
浏览器打开http://your-ip:5000
默认用户名密码都是:admin
4.1、添加管理员 {#4-1-添加管理员}
如果需要删除admin管理员,需要先退出admin登录,然后使用新管理员登录,在删除admin管理员(可选)
4.2、全局配置 {#4-2-全局配置}
- 如客户端访问目标地址或域名
- 客户端的DNS服务器
- 接口MTU配置(建议1420,甚至1400)
- 握手保活间隔
- 防火墙标记
- 路由表 Table
- 配置文件路径(默认即可)
4.3、服务端配置 {#4-3-服务端配置}
- 配置客户端分配IP地址范围
- 配置服务器端端口
- 配置启动shell脚本
- 配置关闭shell脚本
- 重新生成私钥
4.4、查看wg0接口IP {#4-4-查看wg0接口IP}
发现接口IP还是10网段,所以web这里更改后不会同步到底层接口中,还需底层运行重载配置【更新:在3.14.1中增加:ExecStart=/usr/bin/systemctl restart wg-quick@wg0.service重启wg0网卡,这里如果发现接口IP变了的情况下,不用在执行下面的4.5步骤,直接看4.6步骤即可。】
ip addr
4.5、重启wg0接口 {#4-5-重启wg0接口}
systemctl restart wg-quick@wg0.service
4.6、添加客户端 {#4-6-添加客户端}
4.7、获取客户端配置 {#4-7-获取客户端配置}
4.7.1、直接下载 {#4-7-1-直接下载}
可以直接把yydy.conf配置文件下载下来,发送给用户,然后用WireGuard客户端打开就可以直接连接
4.7.2、扫描二维码 {#4-7-2-扫描二维码}
点击QR code可以显示该用户的配置二维码,直接用客户端扫描二维码可以快速添加
4.7.3、邮件发送配置 {#4-7-3-邮件发送配置}
五、客户端连接测试 {#五-客户端连接测试}
5.1、Windows连接 {#5-1-Windows连接}
测试发现,连接成功可以通100.255.255.1,但是不能通内网宿主机网络,以及外网,为了能通过VPN隧道上网或者连接内网,还需要进行下面的操作
5.2、开启路由转发 {#5-2-开启路由转发}
-
临时开启路由转发:
这会立即在系统中启用路由转发,但重启后会失效。sudo sysctl -w net.ipv4.ip_forward=1
-
永久开启路由转发:
这会使系统在每次启动时都启用路由转发。-
编辑
/etc/sysctl.conf
文件:sudo nano /etc/sysctl.conf
-
在文件中找到并取消注释以下行(如果不存在,则添加):
net.ipv4.ip_forward=1
-
保存并关闭文件,然后重新加载配置:
sudo sysctl -p
-
5.3、配置iptables {#5-3-配置iptables}
iptables -I INPUT -p udp --dport 51820 -m comment --comment "wireguard" -j ACCEPT && iptables -t nat -A POSTROUTING -s 100.255.255.0/24 -j MASQUERADE
5.4、安装iptables-persistent
{#5-4-安装}
sudo apt-get install -y iptables-persistent && sudo service netfilter-persistent save
5.5、重启wg0服务 {#5-5-重启wg0服务}
systemctl restart wg-quick@wg0.service
5.6、客户端重连验证 {#5-6-客户端重连验证}
六、Web查看客户端状态 {#六-Web查看客户端状态}
七、底层查看客户端状态 {#七-底层查看客户端状态}
7.1、查看当前状态 {#7-1-查看当前状态}
wg show
7.2、查看当前配置 {#7-2-查看当前配置}
wg showconf wg0