文章介绍:使用github-ngoduykhanh的WireGuard-UI开源项目,简单搭建一个WireGuard管理平台,与传统相比多了Web管理平台,利于管理员编辑服务端和客户端配置文件,创建用户,查看用户在线状态,支持邮件发送配置文件。

一、项目来源

github-ngoduykhanh

二、部署前准备

1、一台linux系统

个人测试使用,可以使用VMware Workstation 安装Ubuntu,点我跳转安装Ubuntu

2、SSH管理工具

点我:可以下载MobaXterm中文最新版本(可以激活,激活方法可以见跳转博客)

3、WireGuard客户端

点我:可以跳转WireGuard官方下载页面

三、正式部署

3.1、关闭防火墙

ufw disable

3.2、安装WireGuard

sudo apt install -y wireguard

3.3、安装额外命令

  1. wget: 用于在命令行中下载文件的工具。可以通过指定 URL 来下载文件,支持断点续传和使用 HTTP、HTTPS、FTP 协议等。
  2. tree: 用于以树状图形式显示目录结构的工具。它可以递归地列出目录和文件,并以树形结构显示它们之间的关系。
  3. tar: 用于在 Linux 系统上创建和提取归档文件的工具。它可以创建 tar 存档文件,也可以将文件从 tar 存档中提取出来。tar 常用于打包和解压文件。
sudo apt install -y wget tree tar

3.4、创建WireGuard-ui目录

cd /opt;mkdir 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目录

tar -zxvf wireguard-ui-v*.tar.gz -C ./wireguard-ui/

3.7、查看opt目录结构

tree /opt

yydy_2024-03-03_14-35-42

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、配置启动文件

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

yydy_2024-03-03_15-00-08

3.10、配置开机启动

重新加载WireGuard-UI服务文件、启动、配置开机自启、查看服务状态

systemctl daemon-reload
systemctl start wireguard-ui.service
systemctl enable wireguard-ui.service
systemctl status wireguard-ui.service

yydy_2024-03-03_15-01-39

3.11、重启wg0服务

systemctl restart wg-quick@wg0.service

3.12、开机自启wg0接口

systemctl enable wg-quick@wg0.service

3.13、查看接口状态

ip addr

yydy_2024-03-03_15-05-18

3.14、配置systemd服务

WireGuard-UI 只负责配置信息生成。可以使用 systemd 来监视更改并重新加载配置,使新客户端配置自动生效。

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 reload wg-quick@wg0.service

[Install]
RequiredBy=wgui.path

yydy_2024-03-03_15-08-26

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服务开机自启

重新加载,配置开机启动,启动服务

systemctl daemon-reload
systemctl enable wgui.{path,service}
systemctl start wgui.{path,service}

四、Web管理

浏览器打开http://your-ip:5000
默认用户名密码都是:admin

yydy_2024-03-03_15-15-05
yydy_2024-03-03_15-21-03

4.1、添加管理员

如果需要删除admin管理员,需要先退出admin登录,然后使用新管理员登录,在删除admin管理员(可选)

yydy_2024-03-03_15-22-29

4.2、全局配置

  • 如客户端访问目标地址或域名
  • 客户端的DNS服务器
  • 接口MTU配置(建议1420,甚至1400)
  • 握手保活间隔
  • 防火墙标记
  • 路由表 Table
  • 配置文件路径(默认即可)

yydy_2024-03-03_15-30-35

4.3、服务端配置

  • 配置客户端分配IP地址范围
  • 配置服务器端端口
  • 配置启动shell脚本
  • 配置关闭shell脚本
  • 重新生成私钥

yydy_2024-03-03_15-34-49

4.4、查看wg0接口IP

发现接口IP还是10网段,所以web这里更改后不会同步到底层接口中,还需底层运行重载配置

ip addr

yydy_2024-03-03_15-36-05

4.5、重启wg0接口

systemctl restart wg-quick@wg0.service

yydy_2024-03-03_15-43-59

4.6、添加客户端

yydy_2024-03-03_15-47-19
yydy_2024-03-03_15-48-12

4.7、获取客户端配置

4.7.1、直接下载

可以直接把yydy.conf配置文件下载下来,发送给用户,然后用WireGuard客户端打开就可以直接连接

yydy_2024-03-03_15-49-25

4.7.2、扫描二维码

点击QR code可以显示该用户的配置二维码,直接用客户端扫描二维码可以快速添加

yydy_2024-03-03_15-52-05

4.7.3、邮件发送配置

yydy_2024-03-03_15-53-31
yydy_2024-03-03_15-58-04
yydy_2024-03-03_15-59-27

五、客户端连接测试

5.1、Windows连接

yydy_2024-03-03_16-11-34

测试发现,连接成功可以通100.255.255.1,但是不能通内网宿主机网络,以及外网,为了能通过VPN隧道上网或者连接内网,还需要进行下面的操作

yydy_2024-03-03_16-25-58

5.2、开启路由转发

  1. 临时开启路由转发:
    这会立即在系统中启用路由转发,但重启后会失效。

    sudo sysctl -w net.ipv4.ip_forward=1
    
  2. 永久开启路由转发:
    这会使系统在每次启动时都启用路由转发。

    • 编辑 /etc/sysctl.conf 文件:
      sudo nano /etc/sysctl.conf
      
    • 在文件中找到并取消注释以下行(如果不存在,则添加):
      net.ipv4.ip_forward=1
      
    • 保存并关闭文件,然后重新加载配置:
      sudo sysctl -p
      

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

sudo apt-get install -y iptables-persistent && sudo service netfilter-persistent save

5.5、重启wg0服务

systemctl restart wg-quick@wg0.service

5.6、客户端重连验证

yydy_2024-03-03_16-45-32

六、Web查看客户端状态

yydy_2024-03-03_16-51-56

七、底层查看客户端状态

7.1、查看当前状态

wg show

yydy_2024-03-03_16-55-52

7.2、查看当前配置

wg showconf wg0

yydy_2024-03-03_16-56-41