
大家好,我是米开朗基杨。
关注我的读者应该都还记得我之前写过一篇 👉WireGuard 全互联模式 (full mesh) 的配置指南,限于当时还没有成熟的产品来帮助我们简化全互联模式的配置,所以我选择了使用可视化界面 👉wg-gen-web 来达成目的。但 👉wg-gen-web 的缺陷也很明显,它生成的每一个客户端的配置都要手动调整,终究还是不够便利。
今天我将为大家介绍一种更加完美的工具来配置 WireGuard 的全互联模式,这个工具就是 Netmaker[1]。
由于篇幅原因,本系列文章将会分成两篇进行介绍。本篇文章介绍 Netmaker 的工作原理和功能解读;下一篇文章将会介绍如何使用 Netmaker 来配置 WireGuard 全互联模式。
Netmaker 介绍
Netmaker 是一个用来配置 WireGuard 全互联模式的可视化工具,它的功能非常强大,不仅支持 UDP 打洞、NAT 穿透、多租户,还可以使用 Kubernetes 配置清单来部署,客户端几乎适配了所有平台,包括 Linux, Mac 和 Windows,还可以通过 WireGuard 原生客户端连接 iPhone 和 Android,真香!
其最新版本的基准测试结果显示,基于 Netmaker 的 WireGuard 网络速度比其他全互联模式的 VPN(例如 Tailscale 和 ZeroTier)网络速度快 50% 以上。
Netmaker 架构
Netmaker 使用的是 C/S 架构,即客户端/服务器架构。Netmaker Server 包含两个核心组件:用来管理网络的可视化界面,以及与客户端通信的 gRPC Server。你也可以可以选择部署DNS服务器(CoreDNS)来管理私有DNS。
客户端(netclient)是一个二进制文件,可以在绝大多数 Linux 客户端以及 macOS 和 Windows 客户端运行,它的功能就是自动管理 WireGuard,动态更新 Peer 的配置。
注意:这里不要将 Netmaker 理解成我之前的文章所提到的👉中心辐射型网络拓扑。Netmaker Server 只是用来存储虚拟网络的配置并管理各个 Peer 的状态,Peer 之间的网络流量并不会通过 Netmaker Server。
Netmaker 还有一个重要的术语叫签到,客户端会通过定时任务来不断向 Netmaker Server 签到,以动态更新自身的状态和 Peer 的配置,它会从 Netmaker Server 检索 Peer 列表,然后与所有的 Peer 建立点对点连接,即全互联模式。所有的 Peer 通过互联最终呈现出来的网络拓扑结构就类似于本地子网或 VPC。
Netmaker 部署
Netmaker 支持多种部署方式,包括二进制部署和容器化部署,容器化部署还支持 docker-compose 和 Kubernetes。如果你没有可以暴露服务到公网的 Kubernetes 集群,我推荐还是直接通过 docker-compose 来部署,简单粗暴。
官方推荐的做法是使用 Caddy 或 Nginx 来反向代理 Netmaker UI、API Server 和 gRPC Server,但我的域名没有备案,我也怕麻烦,就直接通过公网 IP 来提供服务了。如果你也想通过公网域名来暴露 Netmaker 的服务,可以参考 Netmaker 的官方文档[2]。
本文的部署方案将直接通过公网 IP 来提供服务,首先需要安装 docker-compose,安装方法可以参考 Docker 官方文档[3]。
安装完 docker-compose 后,再下载 docker-compose 的 YAML 配置清单:
$ wget https://cdn.jsdelivr.net/gh/gravitl/netmaker@master/compose/docker-compose.yml
现在还不能直接部署,需要根据自己的实际环境对配置清单进行修改。例如,我修改后的配置清单内容如下:

本文介绍了Netmaker这一用于配置WireGuard全互联模式的可视化工具,详细阐述了其工作原理、功能特点以及部署方法。Netmaker支持UDP打洞、NAT穿透和多租户,并提供了跨平台的客户端。通过定时签到更新配置,实现全互联网络拓扑。此外,还介绍了如何通过docker-compose部署Netmaker,并解析了其主要功能,如网络、节点、访问秘钥和DNS管理。文章最后预告了下篇将详细讲解如何配置Linux、macOS和手机客户端的WireGuard全互联模式。
最低0.47元/天 解锁文章
3300





