/ 2浏览

零信任点对点组网——Netbird

继Zerotier之后,想实现更方便的IPV4、IPV6以及Tun透传的网络架构,同时还需要满足免费的需求,这种工具少之又少。大部分是同Zerotier一样的闭源商业软件,此外,它们的服务器几乎都在国外,难以在国内提供服务;此时,有款基于WireGuard的开源零信任组网项目诞生,它就是Netbird,也就是下一代组网的神器。

1. 异地组网架构

为了弥补传统组网方式复杂的VPN配置的不足,由此诞生了一套基于零信任网络的组网方式,它不依赖于原网络架构中的复杂配置关系,而是基于不同的Peer对,组成一个架空的虚拟三层网络,在这个网络中各个节点可以不受限制的互相访问,从而简化的复杂星形网络的配置。

根据不同的组网架构区分,目前最常见的两种组网方式分别为Zerotier架构与WireGuard架构

  • Zerotier架构

    • 基于UDP技术实现动态的Mesh VPN组网,由行星节点+卫星节点以及控制平面组成

    • 控制平面下发不同组网的规则,分配路由以及IP地址至行星节点

    • 客户端通过连接卫星及行星节点后,再获取配置信息

    • 由行星节点参与完成UDP组网发现,完成点对点组网,实现P2P数据传输

    • 由于不支持中继模式,因此在P2P组网成功以前,存在一段时间无法访问

  • WireGuard架构

    • 与Zerotier不同的是,WireGuard架构的组网模式是开源的,它只有简单的三层VPN穿透配置,每个节点单独维护

    • 由此衍生出了许多基于WireGuard的商用软件,例如:Tailscale、Netmaker、Netbird等,它们几乎都实现了内核态的WireGuard功能

    • 不同于Zerotier,WireGuard架构都需要显式配置并维护每对Peer的参数,从而实现自动组网,因此配置更加复杂

    • 由于是基于L3隧道形式,因此具有更好的安全性以及更加适用企业的VPN场景

2. Netbird概述

  • 官网地址:

https://netbird.io/knowledge-hub?category=Tutorials

2.1 Netbird简介

  • NetBird 通过 Management、 Signal、 Stun、 Turn 四个后端组件外加一个前端构建出一套完整的零信任组网方案

    • Management负责管理与维护各个Peer的加密配置与通讯规则

    • Signal则负责根据不同节点的触发信号分配对应规则的地址

    • STUN与TURN则参与在未能通过P2P传输时,实现中转传输流量

2.2 部署需求

  • 开放 TCP 端口 80, 443, 33073, 10000

  • 开放 UDP 端口 3478 49152-65535

  • 一个域名外加 TLS 证书(自动申请)。

2.3 部署流程(自托管)

  • 可以直接连接官网服务器实现网络管理,但由于官网服务器在国外不稳定,需要完成国内自部署,以实现组网功能

  • 官网教程最方便的形式是通过Docker部署,具体流程如下:

# 首先是Linux环境安装docker,然后安装配置jq与curl
sudo yum install jq curl

# 设置环境变量,以及自动安装脚本
export NETBIRD_DOMAIN=netbird.example.com;
curl -fsSL https://github.com/netbirdio/netbird/releases/latest/download/getting-started-with-zitadel.sh | bash

2.4 中继节点部署

  • 由于Netbird是由控制平面+不同中继节点组成,控制平面提供不同规则配置与认证,而中继节点则提供加速连接,提升P2P连接成功率以及中转传输的功能

  • 中继节点通过Docker部署配置如下所示,需要注意是否使用TLS进行加密传输(这个只是影响websocket是否明文连接,并不影响WireGuard加密结果)

services:
  netbird-relay:
    image: netbirdio/relay:latest
    network_mode: host
    environment:
      - NB_LISTEN_ADDRESS=:33080
      - NB_QUIC_LISTEN_ADDRESS=:33080
      - NB_EXPOSED_ADDRESS=your.domain.com:33080
      - NB_AUTH_SECRET=你的中继密钥
      - NB_TLS_CERT_FILE=/etc/netbird/certs/server.crt
      - NB_TLS_KEY_FILE=/etc/netbird/certs/server.key
    volumes:
      - ./certs/server.crt:/etc/netbird/certs/server.crt:ro
      - ./certs/server.key:/etc/netbird/certs/server.key:ro
  • 参数说明:

    • NB_QUIC_LISTEN_ADDRESS 启用 QUIC 协议监听

    • NB_EXPOSED_ADDRESS 应使用与证书 CN/SAN 对应的域名或 IP

2.5 中继节点添加

  • management.json 或环境变量中加入:

"Relay": {
  "Addresses": [
    "rels://your.domain.com:33080"
  ],
  "Secret": "你的中继密钥",
  "CredentialsTTL": "24h0m0s"
}
  • 注意使用 rels:// 前缀匹配 TLS WebSocket Relay。之后重启 Management 服务。

  • 客户端 netbird status -d 应显示已可用

达达下雨不吃鱼