快速入门:ZeroNSD DNS服务器指南

你是否曾经遇到DNS问题,而最后的答案总是"这一定是DNS问题"?ZeroNSD是专为ZeroTier用户设计的DNS服务器,它可以帮助你解决与ZeroTier网络相关的DNS查询问题。本文将引导你快速入门使用ZeroNSD,以便在ZeroTier网络上提供高效的DNS服务。

简介

ZeroNSD是一个专为ZeroTier用户设计的DNS服务器,它允许你为ZeroTier网络提供定制的DNS解析服务。通过ZeroNSD,你可以实现以下目标:

  • 为ZeroTier网络提供高性能的DNS解析服务。
  • 自定义DNS记录以满足你的需求。
  • 通过ZeroTier网络轻松访问DNS服务器。

请注意,ZeroNSD目前仍处于Beta测试阶段,但它已经可以在你的ZeroTier网络上提供可靠的DNS解析服务。

先决条件

在开始使用ZeroNSD之前,请确保你已经满足以下先决条件:

概念上的先决条件

  • 当ZeroTier加入一个网络时,它会创建一个虚拟网络接口。
  • 当ZeroTier加入多个网络时,将会存在多个网络接口。
  • 当ZeroNSD启动时,它会绑定到一个ZeroTier网络接口。
  • 当ZeroTier加入多个网络时,需要多个ZeroNSD实例,每个网络接口对应一个实例。

这意味着:

  • ZeroNSD将从运行它的节点访问。
  • ZeroNSD将从ZeroTier网络上的其他节点访问。
  • ZeroNSD将与节点可能连接的其他网络隔离开来。

技术上的先决条件

本快速入门使用了两台机器 - 一个是在Digital Ocean上的Ubuntu虚拟机,另一个是在住宅ISP上的OSX笔记本电脑。为了一步一步跟随本文,你需要提供类似的基础设施。如果你使用不同的平台,你应该能够以最少的努力弄清楚应该怎么做。

步骤

创建一个ZeroTier网络

首先,你需要手动通过ZeroTier Central WebUI创建一个ZeroTier网络。

  1. 登录ZeroTier Central WebUI。
  2. 创建一个新的网络。

安装ZeroTier

接下来,你需要安装ZeroTier并将其加入你打算提供DNS服务的网络中。以下是在大多数平台的CLI上执行的命令。Windows用户可以从ZeroTier下载页面下载MSI安装程序。在本文的其余部分,请将示例网络ID“af78bf94364e2035”替换为你自己的网络ID。

在Ubuntu上执行以下命令:

$ curl -s https://install.zerotier.com | sudo bash
$ sudo zerotier-cli join af78bf94364e2035
$ sudo zerotier-cli set af78bf94364e2035 allowDNS=1

授权节点

在ZeroTier Central WebUI的成员部分,通过点击“Auth”按钮,将节点授权加入网络。

获取ZeroTier Central的API令牌

在开始之前,我们需要登录到my.zerotier.com并在“帐户”部分创建一个API令牌。ZeroNSD将使用此令牌读取网络成员以生成记录,并更新DNS设置。

执行以下命令将API令牌存储到文件中,以便ZeroNSD读取:

$ sudo bash -c "echo YOUR_ZEROTIER_CENTRAL_TOKEN > /var/lib/zerotier-one/token"
$ sudo chown zerotier-one:zerotier-one /var/lib/zerotier-one/token
$ sudo chmod 600 /var/lib/zerotier-one/token

安装ZeroTier Systemd Manager

ZeroTier Systemd Manager发布了rpm和deb软件包,可以在这里下载。

下载并安装ZeroTier Systemd Manager:

$ wget https://github.com/zerotier/zerotier-systemd-manager/releases/download/v0.1.9/zerotier-systemd-manager_0.1.9_linux_amd64.deb
$ sudo dpkg -i zerotier-systemd-manager_0.1.9_linux_amd64.deb

最后,重新启动所有的ZeroTier服务:

$ sudo systemctl daemon-reload
$ sudo systemctl restart zerotier-one
$ sudo systemctl enable zerotier-systemd-manager.timer
$ sudo systemctl start zerotier-systemd-manager.timer

安装ZeroNSD

ZeroNSD应该只在网络中的一个节点上运行。由于DNS的延迟非常重要,请尽量将其放置在距离客户端最近的位置。

使用软件包安装

ZeroNSD发布了rpm、deb和msi软件包,可以在这里找到最新版本。以下是示例命令,注意要替换为最新版本:

$ wget https://github.com/zerotier/zeronsd/releases/download/v0.1.7/zeronsd_0.1.7_amd64.deb
$ sudo dpkg -i zeronsd_0.1.7_amd64.deb

使用Cargo安装

如果对于你的平台没有提供软件包,你仍然可以使用Cargo进行安装:

$ sudo /usr/bin/apt-get -y install net-tools librust-openssl-dev pkg-config cargo
$ sudo /usr/bin/cargo install zeronsd --root /usr/local

提供DNS服务

对于你希望提供DNS服务的每个网络,请执行以下操作(将“af78bf94364e2035”替换为你的网络ID):

$ sudo zeronsd supervise -t /var/lib/zerotier-one/token -w -d YOUR_DOMAIN af78bf943

64e2035
$ sudo systemctl start zeronsd-af78bf94364e2035
$ sudo systemctl enable zeronsd-af78bf94364e2035

验证功能

你应该能够通过DNS名称ping到笔记本电脑(或任何前置子域名,因为我们设置了通配符标志):

$ ping laptop.YOUR_DOMAIN
PING laptop.YOUR_DOMAIN (172.22.192.177) 56(84) bytes of data.
64 bytes from 172.22.192.177 (172.22.192.177): icmp_seq=1 ttl=64 time=50.1 ms
64 bytes from 172.22.192.177 (172.22.192.177): icmp_seq=2 ttl=64 time=49.5 ms
64 bytes from 172.22.192.177 (172.22.192.177): icmp_seq=3 ttl=64 time=48.6 ms

或者:

$ ping travel.laptop.YOUR_DOMAIN
PING travel.laptop.YOUR_DOMAIN (172.22.192.177) 56(84) bytes of data.
64 bytes from 172.22.192.177 (172.22.192.177): icmp_seq=1 ttl=64 time=50.1 ms
64 bytes from 172.22.192.177 (172.22.192.177): icmp_seq=2 ttl=64 time=49.5 ms
64 bytes from 172.22.192.177 (172.22.192.177): icmp_seq=3 ttl=64 time=48.6 ms

更新标志设置

如果要更改设置(例如TLD),请执行以下操作(将“af78bf94364e2035”替换为你的网络ID):

$ sudo zeronsd supervise -t /var/lib/zerotier-one/token -w -d YOUR_DOMAIN af78bf94364e2035
$ sudo systemctl daemon-reload
$ sudo systemctl enable zeronsd-af78bf94364e2035

测试DNS查询

要在没有zerotier-systemd-manager的情况下测试与ZeroNSD的DNS查询,请找到ZeroNSD绑定的IP地址,并使用dig命令明确对其进行查询。执行以下命令:

$ sudo lsof -i -n | grep ^zeronsd | grep UDP | awk '{ print $9 }' | cut -f1 -d:
172.22.245.70

然后使用dig命令直接查询DNS服务器:

对Ubuntu机器执行:

$ dig +short @172.22.245.70 zt-3513e8b98d.YOUR_DOMAIN
172.22.245.70
$ dig +short @172.22.245.70 server.YOUR_DOMAIN
172.22.245.70

对OSX笔记本电脑执行:

$ dig +short @172.22.245.70 zt-eff05def90.YOUR_DOMAIN
172.22.245.70
$ dig +short @172.22.245.70 laptop.YOUR_DOMAIN
172.22.192.177

添加到/etc/hosts并再次查询

如果要添加自定义DNS记录,请执行以下操作:

$ sudo bash -c 'echo "1.2.3.4 test" >> /etc/hosts'
$ dig +short @172.22.245.70 test.YOUR_DOMAIN
1.2.3.4

验证通向公共DNS的查询

为了验证失败的情况下,查询会落到公共DNS服务器,执行以下命令:

$ dig +short @172.22.245.70 example.com
93.184.216.34

附加信息

OSX上的DNS解析

在OSX上,DNS解析使用dns-sd。遗憾的是,nslookup、host和dig在OSX上可能无法正常工作,但ping可以。

$ ping server.YOUR_DOMAIN
PING server.YOUR_DOMAIN (172.22.245.70): 56 data bytes
64 bytes from 172.22.245.70: icmp_seq=0 ttl=64 time=37.361 ms
64 bytes from 172.22.245.70: icmp_seq=1 ttl=64 time=38.129 ms
64 bytes from 172.22.245.70: icmp_seq=2 ttl=64 time=37.569 ms

要检查系统解析器设置,使用以下命令:scutil --dns

对于Ubuntu机器,可以执行以下查询:

$ dns-sd -G v4 server.YOUR_DOMAIN
$ dns-sd -G v4 zt-3513e8b98d.YOUR_DOMAIN

对于OSX机器,可以执行以下查询:

$ dns-sd -G v4 laptop.YOUR_DOMAIN
$ dns-sd -G v4 zt-eff05def90.YOUR_DOMAIN

Windows

如果你是Windows用户,请尝试使用默认设置。如果有任何问题,请提供反馈或提交拉取请求以帮助改进ZeroNSD在Windows上的兼容性。

提供非ZeroTier记录

注意: 以下部分主要面向希望充分利用zeronsd的服务的高级用户。

zeronsd还将在两种情况下提供非ZeroTier记录:

  1. 在TLD不匹配时,它将转发/etc/resolv.conf中的名称服务器。此行为类似于Linux上常用的DNS服务器dnsmasq。

  2. 为了提供自定义记录,你可以使用-f标志和一个hosts格式的文件,它将在提供的TLD下提供来自该文件的记录,与ZeroTier节点合并。以下是示例。

注意: 如果按照上述步骤进行了操作,请在继续之前执行以下命令以停止ZeroNSD的服务和监督:

$ systemctl stop zeronsd-<network id>
$ zeronsd unsupervise <network id>

创建一个名为hosts的文件,将以下内容放入其中:

1.1.1.1 cloudflare-dns

然后,我们将只使用zeronsd的start子命令启动一个临时服务器。这将在前台运行,因此请在新终端中运行或使用&运行。

$ zeronsd start -t

 /var/lib/zerotier-one/token -f ./hosts -d YOUR_DOMAIN <network id>

最后,我们可以查询cloudflare-dns.YOUR_DOMAIN以查找CloudFlare的DNS服务器,速度非常快!

$ host cloudflare-dns.YOUR_DOMAIN 1.2.3.4
cloudflare-dns.YOUR_DOMAIN has address 1.1.1.1

结论

使用ZeroNSD,你可以为你的ZeroTier网络提供高性能的DNS解析服务,并根据需要自定义DNS记录。这可以帮助你更好地管理你的网络,提高性能,减少DNS查询的延迟,并提供更好的用户体验。

如果你是ZeroTier用户,ZeroNSD绝对值得一试。通过按照本指南的步骤进行操作,你可以轻松地将ZeroNSD集成到你的网络中,并提供可靠的DNS解析服务。

本文由作者 王大神 原创发布于 大神网的AI博客。

转载请注明作者:王大神

原文出处:快速入门:ZeroNSD DNS服务器指南

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2023年9月14日
下一篇 2023年9月14日

相关推荐

  • 在Docker容器内部如何ping通宿主机IP?

    在Docker容器内部访问宿主机IP通常会遇到网络隔离的问题。因为Docker容器默认是在一个虚拟网络中运行的,与宿主机有自己的网络命名空间,无法直接访问宿主机的IP地址。但是有时候,我们需要在容器内部访问宿主机的…

    2024年3月17日
    00
  • gai.conf配置文件详解

    在那远去的夏天,我遇到了一个技术挑战,需要对一个名为gai.conf的配置文件进行深入研究。当时,面对这个文件,我如同面对一个神秘的旧盒子,充满好奇与探索欲望。然而,正如每一个探险家的探险过程都充满了未知与…

    2023年10月10日
    00
  • 项目介绍:Dnsmasq – 集成的DHCP服务器和DNS转发器

    在数字时代,无论是家庭网络还是企业网络,DHCP(动态主机配置协议)和DNS(域名系统)都是不可或缺的基础服务。它们为我们的设备提供了IP地址分配和域名解析,让我们能够轻松地连接到互联网上的资源。但是,有时候…

    2023年10月14日
    00
  • Ubuntu 22.04 LTS网络问题解决:为什么Ping不通?

    在使用Ubuntu 22.04 LTS的虚拟机上,突然遇到了网络连接问题,无法正常上网,甚至无法ping通。这个问题可能让人感到困惑,但我们将在本文中尝试解决这个问题,并了解它可能出现的原因。 背景故事 假设您正在使用一…

    2023年10月25日
    00
  • Ubuntu 22.04网络配置指南:一步步教你如何轻松设置静态IP、网关和DNS

    Ubuntu 22.04是一款备受欢迎的Linux发行版,拥有强大的功能和广泛的应用领域。然而,在安装完成后,许多用户可能会遇到网络配置的问题,特别是需要设置静态IP、网关和DNS的情况。本教程将详细介绍如何在Ubuntu 22.0…

    2023年8月19日
    00
  • 打造多重收入流:告别单一工资来源的新时代

    你是否只依赖工作的薪水来维持生计?如果是的话,你可能正面临着一定的经济风险。现实中,大多数人的工资往往无法覆盖生活成本,有时甚至难以维持基本生活需求。因此,拓宽收入渠道并确保持续的资金流入对于生活的…

    2023年9月26日
    00