Netmaker

#代理 #网络

介绍

Netmaker是一个[[开源]]的、基于[[WireGuard]]的网络控制工具,可以非常快速的用来组建WireGuard网络。 Netmaker可以给两台设备之间组建网络,也可以为更多分布在不同地区的机器组建网络

类似的产品有Tailscale,ZeroTier。不同于这些产品,Netmaker使用WireGuard,所以连接更快。

Netmaker server的另外一个特点就是不会路由网络流量。Netmaker会告诉网络中的节点他们之间可以互相直接通信,这会让节点和节点之间的连接更快。即使管理机宕机,只要现存的节点没有变化,那么这个网络依然可以正常工作。

安装

要求

  • 一个可用的域名(可选)

  • 可以操作管理 DNS 服务(53端口)

  • 保证 443(tcp), 53(tcp udp), 51821-518XX(udp) 端口可用

    • 443 端口,Dashboard,REST API 和 gRPC

    • 53 端口,CoreDNS

    • 51821-518XX,WireGuard,每一个网络需要一个端口,起始端口会使用 51821,可以根据自己的网络端数量需要设定端口范围

需要注意的是,如果使用自己的域名需要添加一个泛域名 A 记录(wildcard A record),比如想要后台访问地址是 dashboard.nm.example.com 那么需要添加*.nm.example.com。 Caddy 会创建三个子域名:

  • dashboard.nm.example.com

  • api.nm.example.com

  • grpc.nm.example.com

docker-compose

从官网下载 docker-compose.yml 文件:

wget -O docker-compose.yml https://raw.githubusercontent.com/gravitl/netmaker/master/compose/docker-compose.contained.yml
sed -i 's/NETMAKER_BASE_DOMAIN/<your base domain>/g' docker-compose.yml
sed -i 's/SERVER_PUBLIC_IP/<your server ip>/g' docker-compose.yml
sed -i 's/COREDNS_IP/<default interface ip>/g' docker-compose.yml

生成唯一的 master key:

tr -dc A-Za-z0-9 </dev/urandom | head -c 30 ; echo ''
sed -i 's/REPLACE_MASTER_KEY/<your generated key>/g' docker-compose.yml

配置 Caddy

wget -O /root/Caddyfile https://raw.githubusercontent.com/gravitl/netmaker/master/docker/Caddyfile

sed -i 's/NETMAKER_BASE_DOMAIN/<your base domain>/g' /root/Caddyfile
sed -i 's/YOUR_EMAIL/<your email>/g' /root/Caddyfile

然后启动:

sudo docker-compose up -d

然后可以访问 dashboard.nm.example.com 后台。

参考文档

最后更新于