基于WireGuard或和 WireGuard 有些关联的“开源”网状网络(Mesh Network)组网工具有很多,但完全开源且易于使用的屈指可数,Cloudflare Access是个Zero Trust解决方案,Tailscale并不简洁易用甚至并不完全开源,两者受追捧的原因多少都和富强有关。Netbird 是总部位于德国柏林的开源专用网络平台提供商,2023年刚刚在种子轮融资中筹集了 110 万欧元。所以,考虑到其商业化尚未起步,推广策略和规则仍然是开源社区化的,产品本身也确实过硬,值得大力分享推荐。
1.Netbird简介
NetBird is a simple and fast alternative to corporate VPNs built on top of WireGuard® making it easy to create secure private networks for your organization or home. It requires near zero configuration effort leaving behind the hassle of opening ports, complex firewall rules, vpn gateways, and so forth.
NetBird 是一个简单快速的企业级 VPN 替代方案,建立在原生 WireGuard® 之上,可以轻松为您的组织或家庭创建安全的私人网络。它几乎不需要任何配置工作,从而摆脱了开放端口、复杂的防火墙规则、VPN 网关等烦琐任务的困扰。
Netbird中文可简称“网鸟”,英文可简称“牛逼/NB”。与其他基于WireGuard的组网工具之间最大的区别在于Netbird工作于内核态,linux kernel版本高于5.6的原生支持,且可直接使用wg-tools对网络接口进行配置。同时,高度易用也可以归纳为区别于其他工具的重要特性,官方使用的“near zero configuration”描述是真实、准确的。因为工作在内核态,省去了很多开销,整个linux peer镜像包不到40M,实际部署、使用过程中可以直观体验到内核态、简洁取向带来的高效,连接快、响应快、传输快。Netbird官网及Github项目网址分别如下:
https://github.com/netbirdio/netbird
从官方发布的网络结构示意图来看,Netbird分为Management、Signal、STUN、Relay四个组件,优先P2P直接连接,这一点在自托管部署时(组件的Create、Ready)也会得到验证。官方How works对各组件进行了详细描述。
2.Windows下安装Netbird与Setup Keys的创建
可在以下Netbird Github项目库下载Windows安装包,同官方安装指引页面的链接,也可直接点击【此处】下载。
下载后双击安装,和所有的VPN组网工具一样,Netbird安装过程中会创建wireguard tunnel接口。
安装完成自动启动后,在系统托盘程序中右键点开Netbird,选择connect连接进入虚拟专网。
连接后,通过Admin Panel打开管理面板,顶部管理板块选择【Setup Keys】,打开后点击【Add key】后,在此创建并获取setup key。
设置key名称、打开可重复使用开关、指定过期时间(默认7天)后,即可在后台创建一个Setup-Key。管理面板会生成类似6E1EC378-6059-48B7-B9A8-E09B4809793A的28位setup-key,将其拷贝、保存,在后续添加新的节点/设备时需要使用以避免设备验证。
3.Linux下安装Netbird
3.1 使用脚本安装
官方除了linux下可以直接使用安装脚本,但运行netbird up接入VPN建议添加--setup-key参数指定Setup-Key,可避免进行一次设备验证的过程。
#apt install wireguard-tools curl -fsSL https://pkgs.netbird.io/install.sh | sh netbird up --setup-key 6E1EC378-6059-48B7-B9A8-E09B4809793A #apt remove netbird netbird-ui -y
安装完成后,使用netbird up命令即可连接进入虚拟专网,默认不指定setup-key需要对设备进行验证。
如因网络变化需对节点进行调整,可卸载netbird。
apt remove netbird netbird-ui -y
3.2 docker方式安装
官方指引给定的Docker加载运行命令默认采用的容器名称不便于记忆,可以通过--name指定,同时,NB_SETUP_KEY需要指定在管理面板生成的有效setup key。
#apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker pull netbirdio/netbird docker run --rm -d --net=host --name="nb-xxx"\ --cap-add=NET_ADMIN \ -e NB_SETUP_KEY=6E1EC378-6059-48B7-B9A8-E09B4809793A \ -v netbird-client:/etc/netbird \ netbirdio/netbird:latest
docker安装的netbird peer如需卸载,可使用如下命令。
docker rm -f nb-xxx docker rmi -f netbirdio/netbird:latest
4.测试与总结
Netbird组网后,节点连接进虚拟专网速度很快,连通性ping响应延迟也很快(相较正常值没有任何下降),iperf3测试可以基本跑满终端的接口带宽。
具体到用例,VPN及其他基于Wireguard实现的组网工具能够实现的,Netbird基本都能实现。之所以是“基本”,老E认为Netbird是追求简洁的,没有堆砌任何使用频率较低的功能,就好比各种厂商的“全家桶”以及单体软件中的功能模块,常用的不过2、3成,很庆幸Netbird只提供了“word/ppt/excel”,没有打包“365”,否则会变得臃肿、拖沓和零/低配置的不可实现、以及不可避免的流氓式“捆绑”。
文章评论
生活就是这样。最近了解到netbird,感觉配置确实很省心,不过我已经使用zerotier和tailscale在单位和家庭组建双路的子网融合了。使用也没有啥问题。再折腾netbird感觉没啥动力,可是对新工具还心生向往。。
@ccms 是的,除非遇到问题,否则没必要替换部署,时间和精力可以用来做些更有意义的事
大佬,国内部署了netbird使用不到一周,遇到UDP阻断怎么办?服务端在外面,客户端全都连不上节点了。
@ff 如果确定是udp阻断没什么简便易行的方法 wg就这样 如果不是完全的udp阻断可以试试换端口