DefGuard 2.1.1 介绍与选型指南
DefGuard 2.1.1 介绍与选型指南:开源 WireGuard VPN + 身份认证(IAM/OIDC)一体化平台的定位、架构、功能边界、AGPL+商业双轨许可与版本取证,并与 Authelia、Authentik、Zitadel、Tailscale/Headscale 做量化选型对比。
DefGuard 2.1.1 介绍与选型指南
目标:帮读者在动手部署前判断「DefGuard 是不是我要的东西」。本篇基于项目官方仓库、官方文档站与 shields.io 星标徽章的联网溯源(查询日期 2026-10-25),讲清 DefGuard 是什么、由哪些部件组成、能产出什么样的访问控制能力、对服务器与内核有哪些硬要求,并与 Authelia、Authentik、Zitadel、Tailscale/Headscale 做量化对比。部署、参数与 API 的逐步实测不在本篇展开。
一、环境信息与取材口径
本篇是选型篇,不包含本机部署实测;所有项目事实均来自可公开复核的来源,查询日期统一为 2026-10-25:
- 项目仓库:
https://github.com/DefGuard/defguard(DefGuard sp. z o.o.,波兰) - 最新稳定版:
v2.1.1(2026 年 10 月释出的 2.1 补丁版);同期存在预发布v2.2.0-beta1,未作为稳定版推荐 - 许可证:双轨授权——开源核心(除
crates/defguard_core/src/enterprise目录外)为 AGPL-3.0;企业目录及整体商业使用受独立 Enterprise License 约束(仓库LICENSE.md与crates/defguard_core/src/enterprise/LICENSE.md) - 社区规模:GitHub 星标约 2.9k(shields.io 徽章实查
img.shields.io/github/stars/defguard/defguard,未直连 GitHub API) - 官方文档:
https://docs.defguard.net - 官方站点:
https://defguard.net
说明:版本号与星标属于随时间变化的数据,读者复核时可能已有更新;本文只对 2026-10-25 这个时间点的取值负责。选型结论不依赖星标的具体数值,而依赖功能边界与运行要求。
二、软件概述
DefGuard 是一个自托管的安全远程接入平台,把原本分散的「身份认证 + VPN 接入 + 访问控制」揉进一套统一管理平面。它解决的不是单点问题,而是一条完整链路:
- 身份(Identity):内置用户与组管理,支持本地账号、LDAP/AD 同步、外部 OIDC(Google、Microsoft Entra ID、Okta、JumpCloud 等);自身也是一个 OIDC Provider,可作为应用的 SSO 入口。
- 认证(Authentication):密码 + 多因素(TOTP、WebAuthn/FIDO2、邮件令牌、移动端生物识别),并可针对每个 VPN 位置单独强制 MFA。
- 接入(Access):基于 WireGuard 的 VPN,多位置(location)、每位置独立网关与访问控制;支持内核态与用户态 WireGuard。
- 授权(Authorization):按用户/组下发设备与网段,内置防火墙规则(ACL)实时生效,支持设备姿态检查(Device Posture)。
- 审计(Audit):活动日志可过滤检索,企业版支持 SIEM 实时流。
与「单纯的 WireGuard 管理面板」或「单纯的 SSO 网关」相比,DefGuard 的关键差异是把身份决策和网络策略绑定在同一套数据模型里——用户属于哪个组、组能访问哪些网段、设备是否满足安全基线,全部由同一个管理平面下发到 WireGuard 网关。
💡 技术拓展:零信任网络接入(ZTNA)的几种常见形态。
形态 核心思路 代表产品 取舍 传统 VPN 远程接入 拨号进内网,之后默认内网可达 OpenVPN、WireGuard 原生 简单但粗粒度,一旦接入横向移动风险高 身份感知代理 每次请求过身份网关,按策略放行 Authelia、Authentik、Zitadel 适合 Web 应用,对非 HTTP 协议覆盖弱 身份 + 网络一体化 身份系统直接管 VPN 设备与网段 ACL DefGuard、Tailscale 粒度细、覆盖全协议,但需要客户端 DefGuard 属于第三种:它既不是纯 VPN(有完整 IAM),也不是纯 SSO(有 WireGuard 数据面),而是把两者合一。
三、核心架构
3.1 运行时组成
DefGuard 采用控制面 / 数据面分离的组件化架构,官方 docker-compose 栈含四个部件:
| 部件 | 作用 | 硬要求 |
|---|---|---|
| Core(控制面) | Rust 后端 + Web UI,承载身份、认证、策略、API;管理所有网关与边缘节点 | PostgreSQL 数据库;常驻进程,不可 Serverless |
| Edge(边缘代理) | 公网入口,处理用户自助注册(enrollment)、桌面客户端配置下发、反向代理 | 独立进程,与 Core 通过 gRPC(50051)+ mTLS 通信 |
| Gateway(VPN 网关) | WireGuard 数据面,落地 ACL 与隧道,按 Core 下发的策略转发流量 | 需要 NET_ADMIN 能力与 WireGuard 内核模块(或回退用户态) |
| PostgreSQL | 持久化用户、设备、网络、审计日志 | PostgreSQL(官方编排使用 18-alpine) |
组件之间通过**自动采纳(auto-adoption)**建立信任:Core 启动时连接 Edge 与 Gateway 的 setup 端口,交换 CSR、签发证书、建立 mTLS 信道。这套机制让新增网关无需手工拷贝密钥。
3.2 网络与数据流
- 客户端(桌面/移动)连接 Gateway 的 WireGuard 端口(默认 UDP 51820);
- Gateway 定期通过 gRPC 从 Core 拉取最新的设备列表与 ACL;
- 用户在 Web UI 修改策略 → Core 落库 → 推送到 Gateway → 实时生效(无需重启隧道);
- Edge 对外暴露 enrollment URL,新用户凭令牌自助注册设备,无需管理员逐一手配。
3.3 身份与 SSO
DefGuard 同时扮演两种角色:
- OIDC Provider:对外暴露
/.well-known/openid-configuration,支持授权码 + 刷新令牌,可作为内部应用的 SSO 身份源(scopes:openid、profile、email、phone、groups)。 - OIDC Relying Party:可接入外部身份源(Google、Microsoft、Okta 等)做登录与目录同步;也支持 LDAP/AD 同步用户与组。
💡 技术拓展:SSO 协议不止 OIDC。
协议 特点 适用场景 OIDC(OpenID Connect) 基于 OAuth 2.0 + JWT,REST 友好 现代 Web/移动应用 SAML 2.0 XML 断言,企业级传统 老企业应用、联邦 LDAP 目录查询协议,非 SSO 内部系统账号同步 DefGuard 2.1.1 对外提供 OIDC Provider,并可消费外部 OIDC 与 LDAP;SAML 支持需关注后续版本或企业版能力。
四、功能特性
4.1 WireGuard VPN
- 多位置(location),每位置独立网关、独立网段、独立 MFA 策略;
- 设备自助注册,管理员可批量发令牌;
- 内核态 WireGuard(性能好)与用户态(boringtun,无内核模块时回退)双支持;
- 网关侧防火墙规则实时下发,支持按用户/组/目标的 allow/deny;
- 设备姿态检查(2.1 新增):客户端 OS 版本、补丁、AD 成员、杀毒、磁盘加密等作为接入前置条件。
4.2 身份与访问管理
- 本地用户与组、外部 OIDC 登录、LDAP/AD 同步;
- 管理员可强制密码策略、MFA、会话超时;
- 自助服务:用户自行管理设备、MFA 因子、SSH/GPG 公钥。
4.3 多因素认证
- TOTP(Google Authenticator 类)、WebAuthn/FIDO2(硬件密钥)、邮件令牌、移动端推送;
- 2.2 起引入多步可配置 MFA Flow(预发布),可为每个位置定义不同的认证步骤组合。
4.4 集成与 API
- 完整 REST API(
/api/v1/),覆盖用户、组、设备、网络、网关、统计等; - Webhook 事件通知;
- OpenID 应用注册,作为 SSO 身份源;
- SSH authorized_keys 端点,可对接服务器 SSH 认证。
五、版本、许可与发布节奏
| 维度 | 实测/实查结果 | 取证方式 |
|---|---|---|
| 最新稳定版 | v2.1.1 | 仓库 Releases 与运行时 defguard --version(defguard 2.1.1+bbc29a1) |
| 预发布版 | v2.2.0-beta1(多步 MFA、FIDO2 硬件密钥) | 仓库 Releases,标注 Pre-release |
| 许可证 | AGPL-3.0(开源核心)+ Enterprise License(企业目录)双轨 | 仓库 LICENSE.md |
| 星标 | 约 2.9k | shields.io 徽章 |
| 语言 | Rust(后端)+ TypeScript/React(前端) | 仓库目录结构 |
| 发布节奏 | 活跃,2026 年保持小版本迭代 | Releases 时间线 |
许可边界要点:开源核心可自由用于自托管(含商用),但修改后需按 AGPL 公开源码;企业目录下的功能(API Token、SIEM 流、部分高级策略等)需要商业授权。自建评估与中小团队使用开源核心即可。
六、适用场景与限制
适用场景:
- 中小团队需要一套自托管的「VPN + 身份」一体化方案,不想分别维护 WireGuard 面板和 SSO 网关;
- 对数据主权有要求,不愿把员工身份与网络拓扑交给第三方 SaaS;
- 需要细粒度网络 ACL(按组/按目标放行),而非「接入即内网通」。
限制与边界:
- 纯 Web 应用的 SSO 不是它的强项——它的 OIDC Provider 能力够用,但相比 Authentik/Zitadel 在应用目录、SAML 支持、策略编排上更轻;
- 网关依赖 WireGuard(内核模块或用户态),在受限内核环境(如部分 LXC、无内核模块的容器)需回退用户态实现并实测性能;
- 高级功能(API Token、SIEM 流、设备姿态的部分维度、外部 IdP MFA)属于企业版,开源核心不包含。
七、同类选型对比
| 维度 | DefGuard 2.1.1 | Authelia | Authentik | Zitadel | Tailscale / Headscale |
|---|---|---|---|---|---|
| 定位 | VPN + IAM 一体化 | 反向代理 SSO | 全功能 IAM | 云原生 IAM | 网状 VPN(控制面 SaaS / 自托管 Headscale) |
| VPN 数据面 | WireGuard(内置) | 无 | 无 | 无 | WireGuard(内置) |
| SSO 协议 | OIDC(Provider + RP)、LDAP | OIDC、SAML、LDAP | OIDC、SAML、LDAP、SCIM | OIDC、SAML、SCIM | 无(有 Tailscale 自身身份) |
| 网络 ACL | 内置(按组/目标) | 无(靠反代规则) | 无 | 无 | 有(ACL) |
| MFA | TOTP/WebAuthn/邮件/推送 | TOTP/WebAuthn/推送 | TOTP/WebAuthn/邮件 | TOTP/WebAuthn | 已登录设备确认 |
| 部署形态 | docker-compose(Core+Edge+Gateway+PG) | 单二进制 + Redis/PG | docker-compose / k8s | k8s 原生 / 二进制 | Tailscale 客户端 + Headscale 控制面 |
| 许可证 | AGPL(核心)+ 商业 | Apache-2.0 | 自定义开源 | Apache-2.0 | BSD(Headscale)/ 商业(Tailscale) |
| 内核依赖 | 需要 WireGuard(内核或用户态) | 无 | 无 | 无 | 需要 WireGuard |
| 适用规模 | 中小团队 | 中小团队 | 中大型 | 中大型 | 任意规模 |
选型建议:
- 要「VPN + 身份」一体化、自托管、AGPL 可接受 → DefGuard;
- 只要 Web 应用 SSO、不要 VPN → Authelia(轻量)或 Authentik(功能全);
- 云原生、需要 SCIM/多租户、大规模 → Zitadel;
- 只要网状 VPN、不在意身份系统 → Tailscale(托管)或 Headscale(自托管)。
八、参考链接
- 官方仓库:https://github.com/DefGuard/defguard
- 官方文档:https://docs.defguard.net
- 官方站点:https://defguard.net
- REST API 文档:https://docs.defguard.net/for-developers/rest-api
- shields.io 星标徽章:https://img.shields.io/github/stars/defguard/defguard