文章介绍:使用github-ngoduykhanh的WireGuard-UI开源项目,简单搭建一个WireGuard管理平台,与传统相比多了Web管理平台,利于管理员编辑服务端和客户端配置文件,创建用户,查看用户在线状态,支持邮件发送配置文件。
一、项目来源
二、部署前准备
三、正式部署
3.1、关闭防火墙
ufw disable
3.2、安装WireGuard
sudo apt install -y wireguard
3.3、安装额外命令
- wget: 用于在命令行中下载文件的工具。可以通过指定 URL 来下载文件,支持断点续传和使用 HTTP、HTTPS、FTP 协议等。
- tree: 用于以树状图形式显示目录结构的工具。它可以递归地列出目录和文件,并以树形结构显示它们之间的关系。
- 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
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
3.8、配置WireGuard-UI-Web管理和邮件参数
nano /opt/wireguard-ui/.env
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
3.10、配置开机启动
systemctl daemon-reload
systemctl start wireguard-ui.service
systemctl enable wireguard-ui.service
systemctl status wireguard-ui.service
3.11、重启wg0服务
systemctl restart wg-quick@wg0.service
3.12、开机自启wg0接口
systemctl enable wg-quick@wg0.service
3.13、查看接口状态
ip addr
3.14、配置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 restart wg-quick@wg0.service
[Install]
RequiredBy=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服务开机自启
systemctl daemon-reload
systemctl enable wgui.{path,service}
systemctl start wgui.{path,service}
四、Web管理
4.1、添加管理员
4.2、全局配置
- 如客户端访问目标地址或域名
- 客户端的DNS服务器
- 接口MTU配置(建议1420,甚至1400)
- 握手保活间隔
- 防火墙标记
- 路由表 Table
- 配置文件路径(默认即可)
4.3、服务端配置
- 配置客户端分配IP地址范围
- 配置服务器端端口
- 配置启动shell脚本
- 配置关闭shell脚本
- 重新生成私钥
4.4、查看wg0接口IP
ip addr
4.5、重启wg0接口
systemctl restart wg-quick@wg0.service
4.6、添加客户端
4.7、获取客户端配置
4.7.1、直接下载
4.7.2、扫描二维码
4.7.3、邮件发送配置
五、客户端连接测试
5.1、Windows连接
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
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、客户端重连验证
六、Web查看客户端状态
七、底层查看客户端状态
7.1、查看当前状态
wg show
7.2、查看当前配置
wg showconf wg0