<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/ DTD/wml_1.1.xml">

<wml>
<head>
<meta http-equiv="cache-control" content="max-age=180,private" />
</head>
<card title="WireGuard-UI部署">
<p>
作者:<a href="index.php?action=showuser&amp;userid=1&amp;hash=">admin</a><br />时间:2023-12-12 18:04<br />分类:<a href="index.php?action=list&amp;cid=3&amp;hash=">电脑技术</a><br />内容:
WireGuard-UI部署




WireGuard 是一种通信协议和免费开源软件，可实现加密的三层隧道协议 ，其设计目标是易用性、高速性能和低攻击面。 它旨在获得比 IPsec 和 OpenVPN 这两种常见的隧道协议更好的性能和更强大的功能。其报文承载在UDP。


WireGuard-UI则是用来管理WireGuard配置文件的 Web 可视化管理开源项目，可以方便的生成配置，通过邮件、二维码分发。


Github：https://github.com/ngoduykhanh/wireguard-ui


Dockerhub：https://hub.docker.com/r/ngoduykhanh/wireguard-ui






Docker一键部署


docker-compose.yaml






XML/HTML代码


    version: &quot;3&quot;

     

    services:

      wg:

        build: .

        #image: ngoduykhanh/wireguard-ui:latest

        container_name: wgui

        cap_add:

          - NET_ADMIN

        network_mode: host

        environment:

          - SENDGRID_API_KEY

          - EMAIL_FROM_ADDRESS

          - EMAIL_FROM_NAME

          - SESSION_SECRET

          - WGUI_USERNAME=alpha

          - WGUI_PASSWORD=this-unusual-password

          - WG_CONF_TEMPLATE

          - WGUI_MANAGE_START=false

          - WGUI_MANAGE_RESTART=false

        logging:

          driver: json-file

          options:

            max-size: 50m

        volumes:

          - ./db:/app/db

          - /etc/wireguard:/etc/wireguard





修改参数后运行命令 docker-compose up -d     


浏览器打开 http://IP:5000 账号（WGUI_USERNAME）密码（WGUI_PASSWORD） 就是自己修改的参数






物理机部署


环境介绍


1、使用二进制文件进行安装。


2、系统使用Ubuntu 22.04+ （也适用于Debian 11+）


3、使用systemd管理服务。


4、注意关闭防火墙或开放对应端口。


安装WireGuard 和 下载 WireGuard-UI






XML/HTML代码


    # 关闭防火墙

    ufw disable

    # 安装WG本体

    apt -y install wireguard wget tree

    # 从Github下载，或通过sftp上传。(建议下载最新)

    cd /opt

    mkdir wireguard-ui

    wget 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开机启动和参数配置


编写配置文件


vim /opt/wireguard-ui/.env






XML/HTML代码


    # 配置绑定IP和端口，默认为5000

    BIND_ADDRESS=0.0.0.0:5000

    # 邮件发送人地址

    EMAIL_FROM_ADDRESS=admin@qq.com

    # 邮件人名字

    EMAIL_FROM_NAME=admin

    # SMTP服务器域名或IP

    SMTP_HOSTNAME=smtp.exmail.qq.com

    # SMTP服务器端口

    SMTP_PORT=465

    # 邮箱登录账号

    SMTP_USERNAME=admin@qq.com

    # 邮箱登录密码

    SMTP_PASSWORD=Ps1234

    # 登录方式

    SMTP_AUTH_TYPE=LOGIN

    # 加密方式，一般为SSL

    SMTP_ENCRYPTION=SSL

     

    # 配置Web界面网站图标，可不配置。

    #WGUI_FAVICON_FILE_PATH=/tmp/1.ico




配置启动文件




vim /etc/systemd/system/wireguard-ui.service






XML/HTML代码


    [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




配置开机启动




XML/HTML代码


    # 重新加载UI服务文件、启动、配置开机、查看状态

    systemctl daemon-reload

    systemctl start wireguard-ui.service

    systemctl enable wireguard-ui.service

    systemctl status wireguard-ui.service

     

    # 配置wg0 接口的wg服务开机启动。

    systemctl restart wg-quick@wg0.service

    systemctl enable wg-quick@wg0.service





设置配置文件修改，自动重新加载生效。


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

如下，创建两个服务文件






vim /etc/systemd/system/wgui.service






XML/HTML代码


    [Unit]

    Description=Restart WireGuard

    After=network.target

     

    [Service]

    Type=oneshot

    ExecStart=/usr/bin/systemctl reload wg-quick@wg0.service

     

    [Install]

    RequiredBy=wgui.path

     

    vim /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




配置为开机启动




XML/HTML代码


    # 重新加载，配置开机启动，启动。

    systemctl daemon-reload

    systemctl enable wgui.{path,service}

    systemctl start wgui.{path,service}





访问、管理、添加客户端配置


Web访问浏览器打开


http://192.168.1.1:5000 默认账号密码：admin






XML/HTML代码


    修改管理员默认密码

     

    全局配置

    如客户端访问目标地址或域名

    客户端的DNS服务器

    接口MTU配置（建议1420，甚至1400）

    握手保活间隔

    防火墙标记

    路由表 Table

    配置文件路径（默认即可）

     

    WG服务器配置

    配置客户端分配IP地址范围

    配置服务器端端口

    配置启动shell脚本

    配置关闭shell脚本

    重新生成私钥

     

    客户端配置增加

    创建客户端，填入名字和邮箱地址。





提交后，选择应用保存配置。


可以下载配置文件，生成配置文件二维码，通过邮件发送配置文件和二维码图片等


查看客户端状态


绿色为已连接的客户端，可以查看对接公网IP，传输流量等信息。


配置路由转发


wireguard-ui 和wireguard 只管把WG客户端接入到Linux服务器上，并不管流量怎么在服务器上转发。


所以需要自己配置路由转发和NAT等






XML/HTML代码


    # 配置服务器支持路由转发

    vim /etc/sysctl.conf

    net.ipv4.ip_forward=1

    # 配置生效

    sysctl -p




策略路由示例




XML/HTML代码


    # 创建路由表，并配置默认路由

    ip route add default via 192.168.182.2 table 150

    ip route show table 150

    # 将WG客户端流量，指向指定的路由表。

    ip rule add from 10.252.1.0/24 table 150

    ip rule show





PS：配置开机启动，可以写为shell脚本，作为wg0 接口的UP 启动脚本即可。


配置UI Https访问


可使用Caddy 自动配置证书，加密其访问。


WireGuard 管理命令




XML/HTML代码


    # 查看当前状态

    wg \ wg show

    # 查看当前配置

    wg showconf wg0







类似程序：


https://github.com/wg-easy/wg-easy


https://github.com/Place1/wg-access-server


</p><p>
<a href="index.php?action=login&amp;hash=">立即登陆发表评论</a><br />
</p>
<p><a href="index.php?action=list&amp;hash=">返回日志列表</a><br /><a href="index.php?action=index&amp;hash=">返回主页</a></p>
</card>
</wml>
