传统 VPN 运维太重,Tailscale 控制平面又不开源。我需要一个既能一键 P2P 组网,又能完全私有化部署的方案。NetBird 满足了这一点:基于 WireGuard,全栈开源,自带 Web 面板和身份认证。
一、 核心架构
二、 5分钟快速部署控制平面
1. 准备工作
- 机器:Linux VM (1核2G足够),公网 IP。
- 域名:解析到该 IP。
- 端口开放:TCP 80/443 (Web/API), UDP 3478 (STUN)。
2. 执行安装脚本
我建议直接用官方一键脚本,它会自动处理 Docker 容器编排。
curl -fsSL https://pkgs.netbird.io/install.sh | sh
3. 初始化配置
- 脚本运行中会询问反向代理,直接选
0(内置 Caddy)。 - 访问
https://your-domain.com/setup。 - 立即创建管理员账号。注意:该页面仅在无用户时开放,创建后自动关闭。
三、 多端接入实战
1. Linux 客户端
# 安装
curl -sSL https://pkgs.netbird.io/debian/public.key | sudo gpg --dearmor -o /usr/share/keyrings/netbird.gpg
echo 'deb [signed-by=/usr/share/keyrings/netbird.gpg] https://pkgs.netbird.io/debian stable main' | sudo tee /etc/apt/sources.list.d/netbird.list
sudo apt update && sudo apt install netbird -y
# 登录自托管服务器
netbird up --management-url https://your-domain.com
2. 服务器无人值守接入 (Setup Key)
在 Dashboard 生成一个 Setup Key,用于 CI/CD 或服务器自动加入。
netbird up --setup-key <YOUR_KEY> --management-url https://your-domain.com
3. macOS / Windows
- 下载地址:
https://pkgs.netbird.io/macos/arm64或https://pkgs.netbird.io/windows/x64。 - 安装后在 Settings 中修改
Management URL为你的私有域名,点击 Connect 即可。
四、 进阶配置:内网穿透与 DNS
1. 访问 K8s 集群或 VPC 子网
如果你想让所有 Peer 访问 10.0.0.0/24 段,无需每台机器装客户端:
- 在 Dashboard 选择一台位于该网段的机器作为 Routing Peer。
- 添加 Network Route:
Network ID: internal-vpc,Range: 10.0.0.0/24。 - 开启策略分发。
2. 自定义私有 DNS (v0.63+ 特性)
在 NetBird 内部定义域名,告别记 IP 的痛苦:
- Custom DNS Zones:添加
dev.internal。 - 添加记录:
api.dev.internal->100.x.x.x(Peer IP)。 - 勾选组分发,关联对应的 Peer 组。
五、 竞品选型参考 (2026版)
| 维度 | NetBird | Tailscale | Headscale | ZeroTier |
|---|---|---|---|---|
| 开源程度 | 全栈全开源 | 仅客户端开源 | 仅控制平面开源 | 部分开源 |
| 底层协议 | WireGuard | WireGuard | WireGuard | 自研 P2P |
| 自托管难度 | 极低 (一键脚本) | 不支持 | 高 (无官方 UI) | 中等 |
| 管理界面 | 原生现代 Web UI | 极佳 | 需第三方 UI | 较成熟 |
| 身份集成 | 内置 Dex/OIDC | 强依赖 OAuth | 手动配置 | 节点 ID 授权 |
六、 避坑指南
- DNS 循环解析:我踩过这个坑。如果 Linux 启用了
systemd-resolved,NetBird 的 DNS 可能会与其冲突。若发现域名不解析,检查/etc/resolv.conf,确保 NetBird 没把上游 DNS 指向自己。 - NAT 穿透失败:如果流量全走 Relay (TURN),检查防火墙是否放行了 UDP 3478。对称型 NAT 很难 P2P,建议在出口路由器上做端口映射。
- jq 解析错误:部分精简版系统缺少
jq,会导致安装脚本报错,预先执行sudo apt install jq。 - 多 TUN 网卡冲突:如果你同时运行了 Mihomo (Tun 模式) 或其他 VPN,路由表会打架。建议在 NetBird 策略中排除特定路由。
七、 总结
NetBird 适合那些既想要 Tailscale 的傻瓜化体验,又必须把数据和控制权握在自己手里的团队。目前 v0.64.x 版本的稳定性已经足够支撑生产环境。