wg-easy vs WireGuard:GUI vs 命令行

发布: (2026年3月14日 GMT+8 12:46)
8 分钟阅读
原文: Dev.to

要为您完成翻译,我需要您提供要翻译的正文内容(除代码块、URL 之外的文字)。请把文章的文本粘贴在这里,我会按照要求保留源链接并进行简体中文翻译。

Source:

快速判定

wg‑easy 是大多数自行托管 WireGuard VPN 服务器的用户的更佳选择。它在底层使用完全相同的 WireGuard 协议,但在其上包装了一个简洁的网页 UI 来管理客户端。您可以通过点击来创建、禁用和撤销 VPN 客户端,而无需手动编辑配置文件。

仅在以下情况下才选择原生 WireGuard:需要在受限硬件上获得内核模式的性能、想将 WireGuard 集成到自定义自动化流水线中,或仅仅偏好命令行操作。

这并不是两种不同 VPN 协议的比较——wg‑easy 就是 WireGuard,只是在其上加了一个网页界面。

什么是 WireGuard?

WireGuard 是底层 VPN 协议和内核模块。您通过配置文件(例如 /etc/wireguard/wg0.conf)进行配置,使用 wg genkey 生成密钥,并通过编辑这些文件来管理对等点。它速度快、安全、简洁,但所有管理都是手动完成的。

wg‑easy 是什么?

wg‑easy 是一个 Docker 容器,运行 WireGuard 并添加基于网页的管理界面。您可以通过浏览器创建和管理 VPN 客户端。每个客户端都会得到一个可下载的配置文件和用于移动端设置的二维码。在内部,它生成相同的 WireGuard 配置并管理相同的 WireGuard 接口。

功能比较

功能WireGuard(原始)wg‑easy
VPN 协议WireGuardWireGuard(相同)
客户端管理手动编辑配置文件Web UI(创建/禁用/撤销)
移动端二维码使用 qrencode 生成内置
客户端下载手动从服务器复制一键下载
客户端流量统计wg show 命令Web UI 仪表盘
密码保护不适用Web UI 密码
客户端启用/禁用在配置中添加/删除对等点在 UI 中切换
DNS 配置客户端配置中手动设置可通过环境变量配置
多服务器支持多个 wg 接口每个容器单实例
自定义路由规则完全的 iptables 控制基本(通过环境变量)
内核模块支持有(性能最佳)有(使用宿主内核模块)
安装方式包管理器 / 内核模块仅 Docker
资源开销~5 MB RAM(仅内核)~30‑50 MB RAM(Node.js UI + WireGuard)
自动化/脚本完整 CLI 控制(wg 命令)提供 REST API
是否可在无 Docker 环境运行否(需要 Docker)

安装概览

WireGuard (raw)

  1. 安装 wireguard-tools 包。
  2. 生成服务器和客户端的密钥对。
  3. 创建 /etc/wireguard/wg0.conf
  4. 配置 iptables 进行 NAT 并启用 IP 转发。
  5. 使用 wg‑quick up wg0 启动接口。
  6. 添加客户端:生成新的密钥对,在服务器配置中添加 [Peer] 部分,创建客户端配置文件,然后重启接口。

wg‑easy

  1. 创建使用 wg‑easy 镜像的 docker‑compose.yml
  2. 通过环境变量设置你的公共主机名和管理员密码。
  3. 运行 docker compose up -d
  4. 通过网页 UI 添加客户端(约 10 秒)。

性能与资源使用

资源消耗

指标WireGuardwg‑easy
RAM(空闲)~5 MB~30‑50 MB
CPU(隧道)内核级内核级(相同)
磁盘占用~1 MB(配置)~100 MB(Node.js + 依赖)
吞吐量最大(内核)最大(相同内核模块)

对 wg‑easy 的管理服务器额外约 25‑45 MB 的 RAM 在现代硬件上可以忽略不计。

许可与社区

指标WireGuardwg‑easy
许可证GPLv2自定义(类似 AGPL,见仓库)
GitHub 星标不适用(内核树)18 k+
Docker 拉取次数数百万(LSIO 镜像)12 M+
维护者Jason Donenfeld / Linux 内核社区(wg‑easy 组织)
文档手册页,WireGuard.comREADME + 环境变量
活跃开发稳定(协议“已完成”)活跃(定期发布)

何时选择哪种

  • 选择原生 WireGuard 如果你:

    • 在路由器、嵌入式设备或任何没有 Docker 的系统上运行。
    • 需要多个 WireGuard 接口以实现复杂路由。
    • 想将 WireGuard 集成到 Ansible/Terraform/脚本中。
    • 偏好命令行工具并希望实现极低的开销。
  • 选择 wg‑easy 如果你:

    • 想在不手动编辑配置文件的情况下管理 VPN 客户端。
    • 需要二维码以快速设置移动客户端。
    • 想一目了然地查看客户端连接状态和带宽。
    • 已经在其他服务上使用 Docker。
    • 需要一个非技术家庭成员也能使用的 UI。
    • 想通过一次点击启用/禁用客户端。

结论

wg‑easy 是大多数自托管用户的显而易见的选择。它消除了运行 WireGuard 唯一真正的痛点——客户端管理,同时保留了 100 % 的 WireGuard 性能。适度的 RAM 开销是值得的,因为不必每次需要新 VPN 配置时都 SSH 进入服务器。

如果你在路由器上运行 WireGuard,或在脚本化的基础设施即代码设置中,或在没有 Docker 的设备上,仍然使用原生 WireGuard。对于其他所有人,wg‑easy 让 WireGuard 更加实用。

常见问题

Q: wg‑easy 会影响 VPN 隧道性能吗?
A: 不会。隧道使用相同的 WireGuard 内核模块,性能完全相同。Web UI 只是在上面添加了一个 HTTP 管理层。

Q: 我可以将已有的 WireGuard 密钥导入 wg‑easy 吗?
A: 不能直接导入。wg‑easy 会生成自己的密钥和配置格式。您需要通过 wg‑easy UI 创建新的客户端配置。

Q: 单个 wg‑easy 容器能管理多个 WireGuard 接口吗?
A: 不能。每个 wg‑easy 容器只管理一个接口(例如 wg0)。如果需要多个接口,请使用原生 WireGuard。

Q: 应该如何安全地暴露 wg‑easy UI?
A: 限制访问。将 51821 端口放在带身份验证的反向代理后面,只绑定到 localhost,或仅通过 VPN 暴露。切勿在没有保护的情况下公开管理员 UI。

0 浏览
Back to Blog

相关文章

阅读更多 »