zerotier 组网+moon+dns服务器
zerotier搭建虚拟局域网
整体可以分成三步:
-
zerotier创建网络,各个客户端加入网络。
-
国内公网服务器,搭建moon节点。
-
搭建dns服务器(zeronsd)
⚠但是国内的云服务器默认封禁53端口,即使你在防火墙中打开53端口也不行。所以zeronsd不能安装在云服务器上。
⚠moon服务器需要各个客户端都能访问到才行,所有moon节点必须搭建在具有公网ip的服务器上。
⚠zeronsd需要部署在zerotier的节点服务器上,因为这样才能通过zerotier的网络访问dns服务器。
综上所述推荐在云服务器上部署moon节点,在自己的nas上部署zeronsd服务器。
nas上部署zeronsd
参考文献:
在nas上首选通过docker部署,这样管理和更新起来都很方便。但是网上关于docker安装zeronsd的教程很少,我参考一些文章,经过一番摸索部署成功。
☛前提1:已经在docker上部署了zerotier节点,可以参考教程:群晖异地组网-ZeroTier搭建使用指南(全平台异地组网)_NAS存储_什么值得买
官方提供了用于docker部署的镜像和命令行:
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没有生效。正确的输出如下:
Namespace : .fbh
QueryPolicy : QueryIPv6Only
SecureNameQueryFallback : FallbackPrivate
DirectAccessIPsecCARestriction :
DirectAccessProxyName :
DirectAccessDnsServers :
DirectAccessEnabled : False
DirectAccessProxyType :
DirectAccessQueryIPsecEncryption :
DirectAccessQueryIPsecRequired :
NameServers : 192.168.193.7
DnsSecIPsecCARestriction :
DnsSecQueryIPsecEncryption :
DnsSecQueryIPsecRequired :
DnsSecValidationRequired :
NameEncoding :