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

WireGuard-UI 安装和配置

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

    简介

    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
    onR3OQ22adAGKq8g
        1
    onR3OQ22adAGKq8g  
       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
    非常感谢,马一下先
    bigmomo
        8
    bigmomo  
    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 不?
    Mar5
        12
    Mar5  
       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
      &nsp; 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 部署么
    4BVL25L90W260T9U
        18
    4BVL25L90W260T9U  
       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 代理用,香的很。
    bigmomo
        22
    bigmomo  
    OP
       2023-11-25 00:06:34 +08:00
    @dbg 谷歌翻译问题导致的。
    505cent
        23
    505cent  
       2023-11-25 00:21:45 +08:00 via Android
    弄个一键脚本吧,操作步骤这么多不如现有的 docker 一把嗦
    bigmomo
        24
    bigmomo  
    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  
       2024-09-24 13:04:03 +08:00
    点赞,完美符合需求,针对不同场景也有细分用法
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2690 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 08:56 PVG 16:56 LAX 00:56 JFK 03:56
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86