zerotier 组网+moon+dns服务器

zerotier搭建虚拟局域网

整体可以分成三步:

  1. zerotier创建网络,各个客户端加入网络。

  2. 国内公网服务器,搭建moon节点。

    教程:打洞不成功?来试试 ZeroTier 自建 Moon 中转吧~ | Lufs's Blog

  3. 搭建dns服务器(zeronsd)

    教程:ZeroTier组网:使用zeronsd作为其私有网段DNS_软件应用_什么值得买

    教程:ZeroTier的私有DNS服务器ZeroNSD搭建引导 - Halcyon Zone

⚠但是国内的云服务器默认封禁53端口,即使你在防火墙中打开53端口也不行。所以zeronsd不能安装在云服务器上。

⚠moon服务器需要各个客户端都能访问到才行,所有moon节点必须搭建在具有公网ip的服务器上。

⚠zeronsd需要部署在zerotier的节点服务器上,因为这样才能通过zerotier的网络访问dns服务器。

综上所述推荐在云服务器上部署moon节点,在自己的nas上部署zeronsd服务器。

nas上部署zeronsd

参考文献:

  1. zerotier/zeronsd: A DNS server for ZeroTier users
  2. How to set up in docker compose? · Issue #230 · zerotier/zeronsd
  3. 群晖异地组网-ZeroTier搭建使用指南(全平台异地组网)_NAS存储_什么值得买

在nas上首选通过docker部署,这样管理和更新起来都很方便。但是网上关于docker安装zeronsd的教程很少,我参考一些文章,经过一番摸索部署成功。

☛前提1:已经在docker上部署了zerotier节点,可以参考教程:群晖异地组网-ZeroTier搭建使用指南(全平台异地组网)_NAS存储_什么值得买

‍

官方提供了用于docker部署的镜像和命令行:

bash 复制代码
docker run --net host -it \
  -v /var/lib/zerotier-one/authtoken.secret:/authtoken.secret \
  -v <token file>:/token.txt \
  zeronsd:alpine start -s /authtoken.secret -t /token.txt \
  <network id>

但直接照抄命令行,是无法部署成功的。我才用GUI界面的方式部署,主要注意下面几点:

  • 文件夹映射,在nas上将部署zerotier-one容器时用到的文件夹映射到容器的/var/lib/zerotier-one​目录,目的是让两个容器的/var/lib/zerotier-one​目录内容相同。

    申请api token,并将token写入容器的目录echo <ZEROTIER_CENTRAL_TOKEN> > /var/lib/zerotier-one/token"​。可以参考搭建dns服务器(zeronsd)

  • 容器添加环境变量:``

    • ZEROTIER_CENTRAL_TOKEN: 值是申请的token;这一步可能和将token写入文件重复了。不过我没有验证少了这一步能否成功。
  • 容器启动命令:start --domain <域名后缀> -s /var/lib/zerotier-one/authtoken.secret -t /var/lib/zerotier-one/token <network id>​

✏ dns服务器默认使用53端口,如果dns服务器无法访问,需要检查对应端口是否打开。(nas上默认好像是开的,我部署完就能直接用)

如此就部署完成了,各个客户端打开allow dns​选项后,就可以通过域名访问自己的服务器了。

window可以通过Get-DnsClientNrptPolicy -Effective​(需要管理员权限)命令查看dns的信息。如果输出空白就说明dns没有生效。正确的输出如下:

powershell 复制代码
 Namespace                        : .fbh
QueryPolicy                      : QueryIPv6Only
SecureNameQueryFallback          : FallbackPrivate
DirectAccessIPsecCARestriction   :
DirectAccessProxyName            :
DirectAccessDnsServers           :
DirectAccessEnabled              : False
DirectAccessProxyType            :
DirectAccessQueryIPsecEncryption :
DirectAccessQueryIPsecRequired   :
NameServers                      : 192.168.193.7
DnsSecIPsecCARestriction         :
DnsSecQueryIPsecEncryption       :
DnsSecQueryIPsecRequired         :
DnsSecValidationRequired         :
NameEncoding                     :
相关推荐
Decay__10 小时前
17_MySQL 监控体系构建 —— mysqld_exporter + Prometheus + Grafana 全栈实战
运维·数据库·sql·mysql·架构
天远数科10 小时前
零信任架构实战:基于天远全能家政风险报告构建自动化即时到家保洁与短工抢单安全核验网关
运维·人工智能·架构·自动化
源图客11 小时前
解决CentOS操作系统网络异常问题
linux·运维·centos
分布式存储与RustFS11 小时前
K8s 集群备份落到自建对象存储:Velero 接 RustFS 配置指南
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
Liuqy-0511 小时前
IO模型与并发服务器
服务器·网络·select·多线程·epoll·并发服务器·io多路复用
镜子AI20 小时前
镜子AI 技术复盘:三条自动化链路上的“停止条件“设计
运维·人工智能·自动化
tianyuanwo20 小时前
NetBox 数据库详解:当“关系型数据库”被装进一个网络运维的领域模型里
运维·数据库·netbox
知已难寻1 天前
03 · OpenStack的计算管理 Nova
运维·服务器·开发语言·云原生·云计算·openstack·开源软件
huainingning1 天前
Windows syslog日志服务器搭建与模拟器对接
运维·服务器·智能路由器
say_fall1 天前
【Linux系统编程】Ext 文件系统:磁盘与存储、文件与目录、现代计算机究竟如何寻找文件
linux·运维·服务器·数据库·c++