V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Songxwn
V2EX  ›  Linux

WireGuard-UI 安装和配置

  •  
  •   Songxwn · 2023-11-24 11:53:45 +08:00 · 4130 次点击
    这是一个创建于 390 天前的主题,其中的信息可能已经有所发展或是发生改变。

    简介

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

    2020 年 5 月,该软件的 Linux 版本达到了稳定的生产版本,并被合并到 Linux 6.3 内核中,并在一些 Linux 发行版中向后移植到早期的 Linux 内核。

    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

    ufw disable 
    
    # 关闭防火墙
    
    
    apt install wireguard wget tree -y
    
    # 安装 WG 本体
    
    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
    
    # 从 Github 下载,或通过 sftp 上传。(建议下载最新)
    
    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
    
    BIND_ADDRESS=0.0.0.0:5000
    # 配置绑定 IP 和端口,默认为 5000
    
    [email protected]
    # 邮件发送人地址
    EMAIL_FROM_NAME=admin
    # 邮件人名字
    SMTP_HOSTNAME=smtp.exmail.qq.com
    # SMTP 服务器域名或 IP
    SMTP_PORT=465
    # SMTP 服务器端口
    [email protected]
    # 邮箱登录账号
    SMTP_PASSWORD=Ps1234
    # 邮箱登录密码
    SMTP_AUTH_TYPE=LOGIN
    # 登录方式
    SMTP_ENCRYPTION=SSL
    # 加密方式,一般为 SSL
    
    #WGUI_FAVICON_FILE_PATH=/tmp/1.ico
    # 配置 Web 界面网站图标,可不配置。
    
    

    配置启动文件

    vim /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
    
    

    配置开机启动

    systemctl daemon-reload
    systemctl start wireguard-ui.service
    systemctl enable wireguard-ui.service
    systemctl status wireguard-ui.service 
    
    # 重新加载 UI 服务文件、启动、配置开机、查看状态
    
    
    systemctl restart [email protected]
    
    systemctl enable [email protected]
    
    # 配置 wg0 接口的 wg 服务开机启动。
    
    

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

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

    如下,创建两个服务文件

    vim /etc/systemd/system/wgui.service
    
    [Unit]
    Description=Restart WireGuard
    After=network.target
    
    [Service]
    Type=oneshot
    ExecStart=/usr/bin/systemctl reload [email protected]
    
    [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
    
    

    配置为开机启动

    systemctl daemon-reload
    systemctl enable wgui.{path,service}
    systemctl 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 等

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

    策略路由示例

    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 自动配置证书,加密其访问

    个人博客

    https://songxwn.com/

    26 条回复    2024-09-24 13:04:03 +08:00
    ixdeal
        1
    ixdeal  
       2023-11-24 12:52:31 +08:00
    这个比 wireguard easy 配置和自定义地方多点,不错不错。
    x86
        2
    x86  
       2023-11-24 12:54:52 +08:00
    不错不错
    x86
        3
    x86  
       2023-11-24 12:55:11 +08:00
    ,挺喜欢这类面板类程序,部署太方便了
    jfcai
        4
    jfcai  
       2023-11-24 13:02:14 +08:00
    这个可以啊,方便多了
    shoper
        5
    shoper  
       2023-11-24 13:04:56 +08:00
    请教下,能否在同一台 vps 上同时配置 ss 和 wiedguard 呢?其实需求就是想在 vps 上用 surfshark 的节点做落地解锁下流媒体应用。我把 surfshark 的 wireguard 节点配置 COPY 到 VPS 上后启动,这台 vps 就失联了。也尝试加了
    PostUp = ip -4 rule add from 10.14.0.2/16 lookup main prio 18
    PostDown = ip -4 rule delete from 10.14.0.2/16 lookup main prio 18
    但并没有起作用
    jasonyang9
        6
    jasonyang9  
       2023-11-24 13:07:24 +08:00 via Android
    我总是找不到这类 gui 的使用场景。。。因为简单的 hub-spoke 拓扑我可以写一个脚本来自动生成各节点的配置档,另外这类 ui 也很难或根本不能导入已有的节点配置。。。,另一方面,复杂的拓扑必须精确设计和设定路由防火墙等等,换句话说必须手搓😂
    Ga2en
        7
    Ga2en  
       2023-11-24 13:07:51 +08:00
    非常感谢,马一下先
    Songxwn
        8
    Songxwn  
    OP
       2023-11-24 13:32:52 +08:00
    @jasonyang9 方便接入终端,而不是站点到站点
    mantouboji
        9
    mantouboji  
       2023-11-24 13:40:26 +08:00
    wireguard 就那么几行文本配置文件,一个 vi 一个 qrencode 就足够了,犯得着弄这么复杂的 GUI ?

    又不是要开商业机场。
    loveqianool
        10
    loveqianool  
       2023-11-24 13:48:52 +08:00   ❤️ 1
    tediorelee
        11
    tediorelee  
       2023-11-24 14:28:33 +08:00
    支持 ipv6 不?
    bigshawn
        12
    bigshawn  
       2023-11-24 15:03:00 +08:00 via iPhone
    等个 docker
    yyysuo
        13
    yyysuo  
       2023-11-24 15:34:47 +08:00
    我在用 wg-easy ,勉强能用,比楼主这个设置的项目少一些。
    Achophiark
        14
    Achophiark  
       2023-11-24 17:03:18 +08:00
    也在用 wg-easy,另一个选择,不错
    ysc3839
        15
    ysc3839  
       2023-11-24 19:27:44 +08:00 via Android
    我个人选择在 NetworkManager 里面配置 WireGuard
    bobryjosin
        16
    bobryjosin  
       2023-11-24 19:34:21 +08:00 via Android
    习惯手搓,不过这个面板也不错
    wangweitung
        17
    wangweitung  
       2023-11-24 20:48:22 +08:00 via Android
    能 docker 部署么
    ospider
        18
    ospider  
       2023-11-24 20:53:46 +08:00
    不错,我一直想弄个这个东西来着
    billytom
        19
    billytom  
       2023-11-24 20:57:34 +08:00
    楼主做的不错!
    iorilu
        20
    iorilu  
       2023-11-24 22:35:44 +08:00
    wireguard 能访问 openai 和 chatgpt 吗

    前几天折腾了下, 看了个 warp 和 wireguard 教程, 弄了个节点, 结果访问不了 openai
    dbg
        21
    dbg  
       2023-11-24 23:52:23 +08:00 via Android
    文中有一处事实错误:WireGuard 是在 Linux 内核 5.6 版本引入的,而不是 6.3 版本。
    还有,sing-box 和最新版 xray 都支持 WireGuard 作为出站协议了,直接用来把 WireGuard 转换为 socks5 和 http 代理用,香的很。
    Songxwn
        22
    Songxwn  
    OP
       2023-11-25 00:06:34 +08:00
    @dbg 谷歌翻译问题导致的。🤣
    505cent
        23
    505cent  
       2023-11-25 00:21:45 +08:00 via Android
    弄个一键脚本吧,操作步骤这么多不如现有的 docker 一把嗦
    Songxwn
        24
    Songxwn  
    OP
       2023-11-25 12:02:50 +08:00
    @505cent 更多的是学习笔记吧,有这个写脚本不是很简单吗?
    JerryYuan
        25
    JerryYuan  
       2023-11-25 12:35:07 +08:00 via Android
    首先肯定题主工作,做的很漂亮,基本功能很够用。
    之前也有类似的想法,做一个 webui 来管理 wg 配置,和层主想法略有不同的是想再做一个更直观的交互,搞一个网络拓扑图,展示节点之间互联关系,自动维护 allowIps 和路由之类的配置,需要两个节点互联就拖一根线过去,然后标记配置需要更新的节点,复制配置后取消标记。
    底层数据的话还是按 wg 的逻辑组织,网络拓扑图现场按配置生成,节点管理手动加的配置可以展示在图上。

    想听听题主关于这种设计的评价。
    smetase
        26
    smetase  
       85 天前
    点赞,完美符合需求,针对不同场景也有细分用法
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1889 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 16:17 · PVG 00:17 · LAX 08:17 · JFK 11:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.