简介 WireGuard 是一种通信协议和免费开源软件,可实现加密的三层隧道协议 ,其设计目标是易用性、高速性能和低攻击面。 它旨在获得比 IPsec 和 OpenVPN 这两种常见的隧道协议更好的性能和更强大的功能。其报文承载在UDP。
2020 年 5 月,该软件的 Linux 版本达到了稳定的生产版本,并被合并到 Linux 5.6 内核中,并在一些 Linux 发行版中向后移植到早期的 Linux 内核。
它最初是为 Linux 内核发布的,现在是跨平台(Windows、macOS、BSD、iOS、Android)并且可以广泛部署。
WireGuard-UI 则是用来管理WireGuard配置文件的 Web 可视化管理开源项目,可以方便的生成配置,通过邮件、二维码分发。
项目地址:https://github.com/ngoduykhanh/wireguard-ui
功能
易用的Web用户界面
访问认证
管理记录额外的客户端信息(姓名、电子邮件等)
使用二维码/文件/电子邮件分发客户端配置
Web UI
安装 环境介绍 1、使用二进制文件进行安装。
2、系统使用Ubuntu 22.04+ (也适用于Debian 11+)
3、使用systemd管理服务。
4、注意关闭防火墙或开放对应端口。
安装WireGuard 和 下载 WireGuard-UI 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ufw disable apt install wireguard wget tree -y cd /optmkdir wireguard-uiwget https://github.com/ngoduykhanh/wireguard-ui/releases/download/v0.5.2/wireguard-ui-v0.5.2-linux-amd64.tar.gz tar -zxvf wireguard-ui-v*.tar.gz -C ./wireguard-ui/ tree /opt /opt ├── wireguard-ui │ └── wireguard-ui └── wireguard-ui-v0.5.2-linux-amd64.tar.gz
配置UI开机启动和参数配置 编写配置文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 vim /opt/wireguard-ui/.env BIND_ADDRESS =0.0.0.0:5000EMAIL_FROM_ADDRESS [email protected] EMAIL_FROM_NAME =adminSMTP_HOSTNAME =smtp.exmail.qq.comSMTP_PORT =465SMTP_USERNAME [email protected] SMTP_PASSWORD =Ps1234SMTP_AUTH_TYPE =LOGINSMTP_ENCRYPTION =SSL
配置启动文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 vim /etc/systemd/system/wireguard-ui.service [Unit] Description = WireGuard UI DaemonWants = network-online.targetAfter = network-online.target[Service] User = rootGroup = rootType = simpleWorkingDirectory =/ opt/wireguard-uiEnvironmentFile =/ opt/wireguard-ui/.envExecStart =/ opt/wireguard-ui/wireguard-ui[Install] WantedBy = multi-user.target
配置开机启动 1 2 3 4 5 6 7 8 system ctl daemon-reloadsystem ctl start wireguard-ui.servicesystem ctl enable wireguard-ui.servicesystem ctl status wireguard-ui.servicesystem ctl restart [email protected] system ctl enable [email protected]
设置配置文件修改,自动重新加载生效。 WireGuard-UI 只负责配置信息生成。可以使用 systemd 来监视更改并重新加载配置,使新客户端配置自动生效。
如下,创建两个服务文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 vim /etc/systemd/system/wgui.service [Unit] Description =Restart WireGuardAfter =network.target[Service] Type =oneshotExecStart =/usr/bin/systemctl reload [email protected] [Install] RequiredBy =wgui.pathvim /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
配置为开机启动
1 2 3 4 system ctl daemon-reloadsystem ctl enable wgui.{path,service}system ctl start wgui.{path,service}
访问、管理、添加客户端配置 Web访问 浏览器打开 http://192.168.1.1:5000 默认账号密码:admin
修改管理员默认密码
全局配置
如客户端访问目标地址或域名
客户端的DNS服务器
接口MTU配置(建议1420,甚至1400)
握手保活间隔
防火墙标记
路由表 Table
配置文件路径(默认即可)
WG服务器配置
配置客户端分配IP地址范围
配置服务器端端口
配置启动shell脚本
配置关闭shell脚本
重新生成私钥
客户端配置增加 创建客户端,填入名字和邮箱地址。
提交后,选择应用保存配置。
可以下载配置文件,生成配置文件二维码,通过邮件发送配置文件和二维码图片等
查看客户端状态 绿色为已连接的客户端,可以查看对接公网IP,传输流量等信息。
配置路由转发
wireguard-ui 和wireguard 只管把WG客户端接入到Linux服务器上,并不管流量怎么在服务器上转发。
所以需要自己配置路由转发和NAT等
1 2 3 vim /etc/sysctl.conf net.ipv4.ip_forward =1
策略路由示例 1 2 3 4 5 6 ip route add default via 192.168.182.2 table 150 ip route show table 150 # 创建路由表,并配置默认路由 ip rule add from 10.252.1.0/24 table 150 ip rule show # 将WG客户端流量,指向指定的路由表。
PS:配置开机启动,可以写为shell脚本,作为wg0 接口的UP 启动脚本即可。
配置UI Https访问 可使用Caddy 自动配置证书,加密其访问。
WireGuard 管理命令 1 2 3 4 wg wg show # 查看当前状态 wg show conf wg0 # 查看当前配置
WG内核无法加载 可能是UEFI开启了安全启动。
公众号