Nebula VPN 1.11.2 介绍与选型指南
Nebula VPN 1.11.2 网状组网 VPN 工具介绍:核心架构、证书体系、NAT 穿透与防火墙机制,及与 Tailscale/Headscale/WireGuard/NetBird 的量化选型对比,版本与社区数据取证于 2026-10-20。
Nebula VPN 1.11.2 介绍与选型指南
目标:说清 Nebula VPN 是什么、怎么组网、适合谁用,并给出与 Tailscale、Headscale、WireGuard、NetBird 的量化选型对比。本文版本与社区数据取证于 2026-10-20(GitHub Releases atom 订阅源与仓库页实测抓取),安装与配置的完整实操见本专栏后续篇章,本篇快速开始一节的所有命令均已在 Ubuntu 22.04 实机执行并保留真实回显。
一、环境信息
本文取证与快速开始实测所用的环境如下:
- 操作系统:Ubuntu 22.04.4 LTS(x86_64,内核带
/dev/net/tun设备) - 软件版本:Nebula VPN 1.11.2(当前最新稳定版,2026-09-22 发布)
- 安装方式:官方 GitHub Releases 二进制包(nebula-linux-amd64.tar.gz)
- 部署形态:单机部署 lighthouse(信标)节点,systemd 托管
- 网络参数:overlay 网段 10.99.0.0/24,underlay 监听 UDP 4242
- 数据来源:github.com/slackhq/nebula 的 releases.atom 订阅源与仓库页 HTML,抓取日期 2026-10-20
💡 说明:Nebula VPN 是 Slack 开源、现由 Defined Networking 维护的 VPN 网状组网工具(github.com/slackhq/nebula),与站内《NebulaGraph》图数据库专栏同名异物,两者毫无关系。检索本文时认准「Nebula VPN」全称与 defined.net 官网即可避免混淆。
二、软件概述
Nebula 是一个可伸缩的网状(mesh)VPN 工具,用 Go 语言编写,目标是把分布在世界各地、位于不同 NAT 与防火墙之后的机器,组成一张基于证书身份的加密扁平网络。它最初由 Slack 开源(解决自家跨云、跨办公网机器互联的需求),2022 年起由 Slack 联合创始人成立的 Defined Networking 公司继续维护,并在此基础上提供商业托管控制面。本项目采用 MIT 协议开源,仓库页实查数据(2026-10-20):stargazerCount 18451、forksCount 1197。
与「连上中央服务器再转发全部流量」的传统 VPN 不同,Nebula 的定位是主机间的加密组网层:每台机器运行一个 nebula 守护进程,持有一张由私有 CA 签发的证书(证书里写死了该主机的 overlay IP、所属组、有效期),节点之间通过 UDP 直接建立加密隧道,流量在节点之间点对点直达,不经过任何中心节点转发。
一句话概括它的技术画像:
| 维度 | 事实(官方 Release/仓库页实测取证) |
|---|---|
| 语言与形态 | Go 编写的单二进制守护进程(nebula)+ 证书工具(nebula-cert),v1.11.2 的 linux-amd64 tar 包 18,600,385 字节且两个二进制已合并打包 |
| 开源协议 | MIT(仓库页 LICENSE 标签实测) |
| 当前稳定版 | v1.11.2(2026-09-22 发布,releases.atom 实查) |
| 传输层 | UDP(默认端口 4242),加密基于 Noise 思想的握手(运行日志中握手风格为 ix_psk0) |
| 身份体系 | 自建 CA + Nebula 证书(当前默认 v2 证书格式,curve 25519) |
| 组网形态 | 全网状直连 + lighthouse 信标节点做地址索引,NAT 环境差时可选 relay 中继 |
| 平台支持 | Linux/macOS/Windows/FreeBSD 官方二进制,iOS/Android 由官方或第三方 App 提供 |
如何理解「全网状」与其他组网拓扑的差异,直接决定选型:
💡 技术拓展:VPN 组网拓扑主要有以下几种,Nebula 属于第一种(全网状直连)。
拓扑 原理/特点 代表实现 适用场景 全网状 mesh 节点两两直连,任意两点流量不绕行第三方 Nebula、Tailscale/Headscale(数据面) 节点数适中、追求低延迟点对点 中心星型 hub-spoke 所有流量经中心网关转发 OpenVPN、strongSwan 经典部署 需要统一审计出口、访问内网服务端 中继 relay 打洞失败时经中继转发,成功则回落直连 Nebula relay、Tailscale DERP 大量节点处于严格 NAT 之后 内核路由型 不做用户态加密隧道,靠内核加密接口 WireGuard 固定 IP 点对点、追求极限性能 Nebula 的取舍:用 lighthouse 只做「通讯录」不做「搬运工」,数据面尽量点对点;打不通时才用 relay 兜底,因此大规模下控制面开销极低。
三、核心架构
Nebula 的架构围绕「证书即身份、lighthouse 即索引、TUN 即出口」展开。理解三个角色后,配置文件里每个段落都有了着落点。
3.1 三个核心角色
- nebula 守护进程(每个节点一个):负责握手、加解密、防火墙过滤、TUN 设备收发包。本文实测 v1.11.2 单节点内存占用约 9.8 MB(
systemctl status实测 Memory: 9.8M)。 - lighthouse(信标节点):持有全网节点的「证书 IP → 公网地址」映射表。新节点上线时向 lighthouse 汇报自己的地址,想连别人时先问 lighthouse 要地址,然后直接向对方发起握手——lighthouse 只参与控制面,不转发业务流量。一个网络至少部署一个 lighthouse,生产建议 2 个以上。
- nebula-cert(证书工具):签发 CA、签发节点证书、打印与校验证书。证书里写明节点 overlay IP(v2 格式叫 networks)、组(groups)、有效期,是防火墙规则与身份识别的唯一依据。
3.2 一次连接的完整流程(实测日志还原)
本机实测的 lighthouse(10.99.0.1)与 client(10.99.0.2)握手过程,两侧日志均为真实回显:
client 侧(发起方):
time=2026-10-20T18:28:05.088+08:00 level=INFO msg="Handshake message sent" vpnAddrs=[10.99.0.1] localIndex=2297257411 remoteIndex=0 udpAddrs=[10.200.0.1:4242] initiatorIndex=2297257411 handshake="map[stage:1 style:ix_psk0]"
time=2026-10-20T18:28:05.089+08:00 level=INFO msg="Handshake message received" vpnAddrs=[10.99.0.1] from=10.200.0.1:4242 certName=lighthouse certVersion=2 fingerprint=6ba4197fd96fa91cb41bd5c74881ad61c460459e6b1f64d8e81b870d4bb5c998 issuer=d3fc0ec8573301be67e8224b622b19022ba555b63d0d6820f58dc2799b3163ce initiatorIndex=2297257411 responderIndex=2184454339 handshake="map[stage:2 style:ix_psk0]" durationNs=822435 sentCachedPackets=1
lighthouse 侧(应答方,journalctl 实测):
nebula[1459489]: time=2026-10-20T18:28:05.088+08:00 level=INFO msg="Handshake message received" vpnAddrs=[10.99.0.2] from=10.200.0.2:4243 certName=client certVersion=2 fingerprint=b13d16e2ddaf8bb1dc710448405f94d480e0bc838f5997e62b102bae528afffc issuer=d3fc0ec8573301be67e8224b622b19022ba555b63d0d6820f58dc2799b3163ce initiatorIndex=2297257411 responderIndex=2184454339 handshake="map[stage:2 style:ix_psk0]"
流程拆解:client 从 static_host_map 拿到 lighthouse 的 underlay 地址(10.200.0.1:4242)发送 stage 1 握手;双方在 stage 2 互验证书链(日志里的 certVersion=2、fingerprint、issuer 即证书指纹与签发 CA 指纹);隧道建立后,lighthouse 顺带把 client 的真实地址(10.200.0.2:4243)记入映射表,供其他节点查询。整个握手在一毫秒内完成(durationNs=822435 纳秒)。
3.3 数据面:加密与 NAT 穿透
- 加密:数据包使用 ChaCha20-Poly1305 或 AES-GCM 封装(
cipher参数,双端可协商,实测见 C1 篇);握手密钥交换基于证书里的 curve25519 公钥。 - NAT 穿透:
punchy组件周期性向对端发送打洞包维持 NAT 映射(punch),并支持「对端主动回连」(respond)。实测开启 punch 后,单侧 NAT 后的节点可直接互通。 - TUN 接口:nebula 在本机创建一块 TUN 网卡(默认名 nebula0,可用
tun.dev定制),overlay IP 直接落在网卡上,路由层面与普通网卡无异。实测ip addr show nebula0:
912: nebula0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1300 qdisc fq_codel state UNKNOWN group default qlen 500
link/none
inet 10.99.0.1/24 brd 10.99.0.255 scope global nebula0
valid_lft forever preferred_lft forever
3.4 控制面:没有控制面的「控制面」
Nebula 没有常驻控制服务器。所谓控制面就是 CA 私钥签发证书 + 配置文件分发:管理员用 nebula-cert 签出每个节点的证书,连同 ca.crt、config.yaml 发放到节点即可。节点配置里只需知道 lighthouse 的 overlay IP 与 underlay 地址(static_host_map)。这是它与 Tailscale(依赖 SaaS 控制面或自托管 Headscale)最本质的差异,也是选型时最需要权衡的一点。
四、功能特性
以下特性均有对应配置段或命令行参数,全部参数的逐项实测见本专栏《Nebula VPN 1.11.2 配置参数详解》篇。
4.1 证书身份与分组授权
每张证书绑定 overlay IP、groups 组列表与有效期;防火墙规则可以按 group/groups/host/cidr/ca_name/ca_sha 精确授权,例如「只允许 laptop 组访问 443 端口」。CA 还可以用 -groups 参数限制子证书能使用的组,用 -networks 限制能分配的网段。
4.2 内置防火墙(default deny)
Nebula 自带按规则过滤的防火墙,默认拒绝一切入站与出站(inbound_action/outbound_action 默认 drop),必须显式放行。规则支持协议(tcp/udp/icmp/any)、端口(单值/范围/any)、主机、组、CIDR 多维组合。本实测验证:把 lighthouse 入站规则收窄为仅 icmp 后,client 的 TCP 请求立即被丢弃(curl 4 秒超时退出码 28),随后通过 kill -HUP 热加载恢复放行,无需重启进程。
4.3 NAT 穿透与 relay 中继
节点主动向 lighthouse 汇报地址、周期打洞(punchy.punch)、支持对称 NAT 的 respond 回连与 respond_delay;直连完全打不通时,可以把某节点配置为 relay(relay.am_relay: true),其他节点经其中转。
4.4 路由扩展:unsafe_routes
证书除自身 IP 外还可携带 unsafe_networks,允许节点作为网关把 overlay 流量路由到它身后的非 Nebula 网段(如站点内网 192.168.87.0/24),实现「连入整个站点」的效果。
4.5 可观测性
内置 graphite 与 prometheus 两种指标后端。实测在 lighthouse 开启 stats.type: prometheus 后,kill -HUP 热加载即监听 127.0.0.1:9801,日志出现 Starting prometheus stats listener addr=127.0.0.1:9801,/metrics 返回 286 行指标,包含 firewall_conntrack_count、hostmap_main_hosts、certificate_ttl_seconds 等。
4.6 平台与部署形态
官方 Release 提供 linux(amd64/arm64/arm-5/6/7/386/loong64)、darwin、freebsd 的 tar/zip 包;v1.11.2 起 tar 包内同时包含 nebula 与 nebula-cert 两个二进制。另有 iOS/Android 客户端与 Defined Networking 的商业托管控制面。
五、快速开始(最小可用示例)
以下命令在 Ubuntu 22.04 实机全部执行过,回显逐行照抄。目标是:下载官方二进制 → 签发 CA 与节点证书 → 跑起一个 lighthouse 节点。
5.1 下载官方二进制
curl -LO "https://github.com/slackhq/nebula/releases/download/v1.11.2/nebula-linux-amd64.tar.gz"
实测文件大小与官方发布页一致(18,600,385 字节)。v1.11.2 的发布件不再附带 CHECKSUMS 清单文件(发布资产实测仅含各平台 tar/zip),建议下载后记录 sha256 以便比对:
sha256sum nebula-linux-amd64.tar.gz
实测输出:
6140d33f2ec21ce7f6b655b5bc820e93a684d97e51d0ddcf907324b5b28aac1e nebula-linux-amd64.tar.gz
5.2 解压并安装到系统路径
tar xzf nebula-linux-amd64.tar.gz
ls
install -m 0755 nebula /usr/local/bin/nebula
install -m 0755 nebula-cert /usr/local/bin/nebula-cert
nebula -version
nebula-cert -version
实测输出:
nebula
nebula-cert
Version: 1.11.2
Version: 1.11.2
5.3 签发 CA 与 lighthouse 节点证书
mkdir -p /etc/nebula
nebula-cert ca -name "Quzuo Nebula CA" -duration 87600h -out-crt /etc/nebula/ca.crt -out-key /etc/nebula/ca.key
nebula-cert sign -name lighthouse -networks "10.99.0.1/24" -groups "lighthouse" -ca-crt /etc/nebula/ca.crt -ca-key /etc/nebula/ca.key -out-crt /etc/nebula/host.crt -out-key /etc/nebula/host.key
ls -l /etc/nebula/
实测输出(命令全部静默成功,exit=0,ls 回显):
total 16
-rw------- 1 root root 261 10月 20 18:20 ca.crt
-rw------- 1 root root 174 10月 20 18:20 ca.key
-rw------- 1 root root 326 10月 20 18:20 host.crt
-rw------- 1 root root 127 10月 20 18:20 host.key
5.4 最小 lighthouse 配置
写入 /etc/nebula/config.yaml(lighthouse 不需要 static_host_map 与 lighthouse.hosts):
pki:
ca: /etc/nebula/ca.crt
cert: /etc/nebula/host.crt
key: /etc/nebula/host.key
lighthouse:
am_lighthouse: true
interval: 60
listen:
host: 0.0.0.0
port: 4242
tun:
dev: nebula0
mtu: 1300
firewall:
outbound:
- port: any
proto: any
host: any
inbound:
- port: any
proto: any
host: any
5.5 校验配置并启动
nebula -test -config /etc/nebula/config.yaml
echo "exit=$?"
实测输出节选(实测尾部,首行为完整配置回显故略;exit 为 0 表示配置可用):
time=2026-10-20T18:21:10.771+08:00 level=INFO msg="Firewall rule added" firewallRule="map[caName: caSha: cidr: direction:outgoing endPort:0 groups:[] host:any localCidr: proto:0 startPort:0]"
time=2026-10-20T18:21:10.771+08:00 level=INFO msg="Firewall rule added" firewallRule="map[caName: caSha: cidr: direction:incoming endPort:0 groups:[] host:any localCidr: proto:0 startPort:0]"
time=2026-10-20T18:21:10.771+08:00 level=INFO msg="Firewall started" firewallHashes=SHA:498215dec4e5687a2353f51c10838c113bd1af35ef72b8e8c9f536986ada5417,FNV:2782948616
time=2026-10-20T18:21:10.771+08:00 level=INFO msg="Main HostMap created" preferredRanges=[]
time=2026-10-20T18:21:10.771+08:00 level=INFO msg="punchy enabled"
exit=0
前台启动验证监听与 TUN 网卡:
nebula -config /etc/nebula/config.yaml
实测日志(另开终端核查端口与网卡):
time=2026-10-20T18:21:28.491+08:00 level=INFO msg=listening addr=0.0.0.0:4242
time=2026-10-20T18:21:28.491+08:00 level=INFO msg="Nebula interface is active" interface=nebula0 networks=[10.99.0.1/24] build=1.11.2 udpAddr=0.0.0.0:4242 boringcrypto=false
ss -lunp | grep 4242
实测输出:
UNCONN 0 0 0.0.0.0:4242 0.0.0.0:* users:(("nebula",pid=1457634,fd=7))
看到 0.0.0.0:4242 的 UDP 监听与 Nebula interface is active 日志,lighthouse 即已就绪。systemd 托管、开机自启、client 节点接入与升级卸载的完整流程见《Ubuntu 22.04 安装 Nebula VPN 指南》。
六、适用场景与限制
6.1 适用场景
- 跨云/多机房主机组网:各云厂商的内网不互通时,用 Nebula 把所有 Linux 主机拉进一张 10.99.0.0/24,服务之间直接用 overlay IP 互访。
- 运维后门与安全隔离:SSH/数据库管理口只监听 overlay IP,配合分组防火墙(只有 ops 组能连 22 端口),公网完全不暴露。
- 分支机构互访:站点 A/B 各部署一台 lighthouse 可达的节点,通过 unsafe_routes 把站点内网发布进 overlay。
- 大量节点、低控制面预算:lighthouse 无状态轻量(实测单节点内存 ~10MB),不需要为控制面买单或维护数据库——对比 Headscale 需要 PostgreSQL/SQLite 与常驻服务。
6.2 限制与短板(选型前必须接受)
- 证书分发是手工活:新增节点 = 签证书 + 发证书 + 发配置,没有自助注册、扫码入网这类体验(商业版 Defined 平台才有)。节点多且变动频繁时,运维成本线性增长。
- 无 Web 管理界面:纯配置文件驱动,规则变更靠改 yaml + HUP/重启。
- 移动端体验一般:iOS/Android 客户端可用,但证书导入与配置仍偏手工。
- UDP 单协议:underlay 只有 UDP,在 UDP 被严防的网络(部分企业出口)需要自备 relay 或其他通道。
七、同类选型对比
对比口径:2026-10-20 实查各项目 GitHub 仓库页(stars/forks/license 为页面 JSON 数据实测抓取),功能维度来自各自官方文档;Nebula 版本节奏取自 releases.atom 实测(v1.10.1 2026-01-16 → v1.10.2 2026-01-21 → v1.10.3 2026-02-08 → v1.11.0 2026-07-23 → v1.11.1 2026-08-21 → v1.11.2 2026-09-22,9 个月 6 个稳定版)。
| 维度 | Nebula VPN | Tailscale | Headscale | WireGuard | NetBird |
|---|---|---|---|---|---|
| 定位 | 证书驱动的全网状组网工具 | 商业级零配置组网网络 | Tailscale 控制面的自托管实现 | 内核级点对点 VPN 协议/工具 | 自托管或云控制面的组网平台 |
| 控制面 | 无常驻服务(证书+配置分发) | SaaS(可自托管 enterprise) | 自托管 Go 服务 + 数据库 | 无(手工密钥交换) | 自托管 Go 服务(含数据库)或 NetBird 云 |
| 数据面 | 用户态 UDP 隧道(Noise 系握手) | WireGuard(用户态适配) | WireGuard(官方客户端) | 内核态 WireGuard | WireGuard |
| NAT 穿透 | punchy 打洞 + relay 中继 | NAT 打洞 + DERP 中继 | 同 Tailscale(DERP 自建可选) | 无自动穿透(需公网可达或端口转发) | 打洞 + 自托管 TURN 类中继 |
| 身份/授权 | CA 证书 v2(IP/组/有效期内置) | SSO/邮箱登录 + ACL | 同 Tailscale 策略 | 静态公钥对 | SSO/ACO + ACL/分组 |
| 内置防火墙 | 有(default deny,双端规则) | ACL 在控制面下发 | 同 Tailscale | 无(交给系统 iptables) | 有(控制面下发) |
| 开源协议 | MIT | BSD-3-Clause(客户端) | BSD-3-Clause | GPL-2.0(内核与工具) | 自定义许可(仓库 spdxId 实测 NOASSERTION) |
| GitHub stars(2026-10-20) | 18,451 | 37,809 | 44,825 | 非仓库中心化项目(内核树/官网分发) | 30,086 |
| forks(2026-10-20) | 1,197 | 3,375 | 2,645 | 同上 | 1,770 |
| 部署上手成本 | 低-中(签证书+单配置文件) | 极低(登录即用) | 中(自建控制面+客户端配置) | 中(逐节点写 wg 配置) | 中(自建需数据库/对象存储) |
| 站内实测文档 | 本专栏 | 《Tailscale 1.104 介绍与选型指南》 | 《Headscale 介绍与选型指南》 | 《WireGuard 1.0 工具线介绍与选型指南》 | 暂无 |
关键差异与选型解读:
- 要「零运维控制面 + 数据自主」:Nebula 最彻底——控制面退化成一次性的证书签发,没有数据库、没有常驻服务,节点数量多也不增加控制面负担;代价是没有自助入网体验。
- 要「体验优先、允许 SaaS」:Tailscale(客户端开源、控制面托管);在意数据主权又想要 Tailscale 体验则自建 Headscale(控制面仍需托管数据库与域名,参考 《Ubuntu 22.04 安装 Headscale 指南》)。
- 要「内核级性能、点对点固定拓扑」:直接 WireGuard,但失去自动穿透与身份分组;两者也常组合使用(Nebula/Headscale 的数据面都是 WireGuard 思想的变体或实现)。
- 要「自托管 + 丰富 UI + ACL」:NetBird 功能面最接近商业产品,但自托管栈更重(Go 服务 + 数据库 + 中继组件)。
- 传统站点到站点的加密互联选 OpenVPN/strongSwan 更合适(参考 《OpenVPN 2.7 介绍与选型指南》),它们是 hub-spoke 拓扑的成熟方案,不适合做全网状。
八、参考链接
- 官网与文档:https://nebula.defined.net/docs/
- 代码仓库:https://github.com/slackhq/nebula
- 发布页(版本取证源):https://github.com/slackhq/nebula/releases
- 官方示例配置(v1.11.2):https://github.com/slackhq/nebula/blob/v1.11.2/examples/config.yml
- 站内实操篇:《Ubuntu 22.04 安装 Nebula VPN 指南》《Nebula VPN 1.11.2 配置参数详解》《Nebula VPN 1.11.2 常用 CLI 命令详解》(Nebula VPN 专栏)
- 站内同类对比:《Tailscale 1.104 介绍与选型指南》、《Headscale 介绍与选型指南》、《WireGuard 1.0 工具线介绍与选型指南》