{{i18nTranslate('_layout.t11')}} {{i18nGetLang()==='zh' ? 'EN' : '中文'}}

# 智能DNS新手指南

> 此功能为商业版本专有。

## 1. 简介

GoEdge提供了一个自建域名解析服务的功能，即可以利用你自己的服务器资源向外提供DNS解析功能。

在正式进入使用前，我们可以先来了解域名解析相关的几个名词解释：

- `集群` - 节点集合，用来管理一组有同样功能的节点，每个集群可以服务不同的用户，或者不同的域名；
- `节点` - 接收并处理域名记录查询的应用程序，通常每个节点都分布在不同的服务器或者虚拟机上；
- `域名` - 要在系统中管理的域名，比如`goedge.cloud`；
- `记录` - 域名中包含的对外服务的对象，有不同的类型，常见的有`A`、`CNAME`、`MX`等；

## 2. 原理

    1) 用户终端设备发起查询  -->  2) 查询域名服务器地址(DNS Hosts) -->  3) 查询自建GoEdge DNS节点  --> 4) 查询GoEdge系统里已添加域名解析记录

整个过程对用户来说是自动完成的，用户不会感知DNS的存在；而且已经忽略了多级DNS查询过程。

其中：

1. 用户终端设备发起查询：用户在使用手机、电脑访问网站时，需要查询网站所在服务器的IP地址
2. 查询域名服务器地址(DNS Hosts)：用户第一次查询域名时，需要先获得域名服务器地址，比如`ns1.example.com`等
3. 查询自建GoEdge DNS节点：DNS根据上一步骤获得的域名服务器地址，将地址解析成IP，这里的IP就是我们的DNS节点，具体两者之间如何绑定，请参考本文 `设置第三方解析服务器` 一节
4. 查询GoEdge系统里已添加域名解析记录：在我们的DNS节点接收到域名查询时，会自动查询已经添加的域名解析记录，并返回对应的结果

## 3. 创建集群

进入系统后，可以在左侧”智能DNS”菜单中点击”集群管理”，如果还没有集群，可以点击”创建集群”:

保存后，可以在集群列表中看到这个集群：

## 4. 安装节点

点击集群列表中某个集群的详情，可以进入”集群”管理界面，由于第一次创建可能还没有节点，界面可能是：

点击”创建节点”，填入一个节点名称，并无特别要求，只需要容易识别即可：

其中IP地址是该节点对外访问的节点，后面需要在第三方域名管理平台上将域名解析到这个节点。

然后根据 这里 的帮助安装节点程序。

## 5. 添加域名

在集群和节点都准备就绪后，我们可以添加一个域名试试，在”智能DNS” – “添加域名”里：

其中”所属集群”选择我们刚才创建好的集群，域名`goedge.cloud`需要换成你自己能够管理的域名。

创建后域名列表是：

## 6. 添加记录

在 “域名” 详情中，可以点击 “记录” 页，添加多个记录。在”记录”页点击”创建记录”：

在这里我们添加了`www`的A记录，并填写了一个IP作为记录值。其他选项可以忽略。

点击”保存”后，就可以看到记录列表了：

## 7. 测试

在我们添加完域名、记录后，假设你的DNS节点IP是 `8.8.8.8`，可以使用 `nslookup` 命令来查询我们已经添加的域名记录：

    # 使用 nslookup 命令查询域名解析
    # 其中 8.8.8.8 是你的DNS节点服务器IP
    # A 为记录类型
    nslookup -type=A www.goedge.cloud 8.8.8.8

    # 响应
    Server:		192.168.1.30
    Address:	192.168.1.30#53

    Non-authoritative answer:
    Name:	www.goedge.cloud
    Address: 175.178.206.125

也可以使用 `dig` 命令：

    # 使用 dig 命令查询域名解析命令
    # 其中 8.8.8.8 是你的DNS节点服务器IP
    # A 为记录类型
    dig @8.8.8.8 www.goedge.cloud A

    # 响应
    ; <<>> DiG 9.10.6 <<>> @175.178.206.125 goedge.cloud A
    ; (1 server found)
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28059
    ;; flags: qr rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
    ;; WARNING: recursion requested but not available

    ;; QUESTION SECTION:
    ;goedge.cloud.			IN	A

    ;; ANSWER SECTION:
    goedge.cloud.		600	IN	A	175.178.206.125

    ;; Query time: 38 msec
    ;; SERVER: 175.178.206.125#53(175.178.206.125)
    ;; WHEN: Sat Sep 24 14:17:12 CST 2022
    ;; MSG SIZE  rcvd: 52

如果出现了相对应的结果，说明我们的节点工作正常。

你也可以在”智能DNS” – 左侧 “访问日志” 菜单里查看访问记录，类似于：

## 8. 设置第三方解析服务器

如果只是节点解析生效，并不能让其他用户使用此解析服务，你可以：

1. 让其他用户使用你的DNS节点作为DNS解析服务器，优点是可以非常灵活地控制任何域名的解析记录，但是缺点是用户只能访问在系统里已经设置的域名；
2. 在第三方域名管理平台设置域名的NS记录，然后任何别的域名都可以使用我们的DNS主机地址，下面将以阿里云为例讲述设置方法。

### 利用阿里云云解析DNS设置解析服务器

下面示例将 `goedge.cloud` 的DNS主机地址改成我们自建的DNS，然后就可以使用GoEdge管理 `goedge.cloud` 的域名解析。

1. 假设我们想要把 `example.cn` 作成域名解析服务器的域名，就可以在 `example.cn` 域名管理中添加自定义DNS Host，其中IP为DNS集群中节点的IP，子域名我们可以自己定义，通常为 `ns1`、`ns2`等：

   记住这里添加的子域名，在开通用户套餐的时候需要填入到集群设置中（集群设置–基础设置–DNS主机域名）。
2. 在 `example.cn` 中增加一到多个A记录，名字是`ns1`、`ns2`（跟步骤1中设置的DNS服务器名称对应），记录值跟我们系统的DNS节点的IP相对应；如果只有一个DNS节点，那么两个记录的IP可以是一样的：

   这样就完成了DNS主机域名同我们DNS节点之间的绑定。
3. 在阿里云控制台域名管理里找到要在我们系统中管理的域名（在这里是 `goedge.cloud` ），点击”DNS修改”修改DNS服务器为我们刚添加的DNS Host：

4. 设置成功后，这样别的用户不需要设置，访问 `goedge.cloud` 相关的域名时，都会自动转到我们设置的系统里，只要我们在GoEdge系统里添加了对应的记录，就能正确响应。

可以通过域名whois查询NS记录是否设置成功，类似于：

    DNS服务器
    Name Server
    --------------------
    DNS1：ns1.example.cn
    DNS2：ns2.example.cn

### 第三方DNS服务商相关链接

- 阿里云自定义DNS服务器常见问题：https://help.aliyun.com/document_detail/59949.html
- 腾讯云自定义DNS Host，请参考 https://cloud.tencent.com/document/product/242/54158
- 华为云自定义DNS Host，请参考 https://support.huaweicloud.com/usermanual-domain/domain_ug_330018.html
- GoDaddy添加自定义域名主机，请参考 https://www.godaddy.com/help/add-my-custom-host-names-12320
- namecheap注册个人的域名服务器，请参考 https://www.namecheap.com/support/knowledgebase/article.aspx/768/10/how-do-i-register-personal-nameservers-for-my-domain/
- NameSilo管理域名服务器，请参考 https://www.namesilo.com/support/v2/articles/domain-manager/manage-name-servers

{{i18nTranslate('_layout.t27')}}
{{i18nTranslate('_layout.t12')}}