整理测试不易,转载请注明本文链接,感谢。
安装智能DNS前,你需要安装好GoEdge 管理平台:
1. 简介
GoEdge提供了一个自建域名解析服务的功能,即可以利用你自己的服务器资源向外提供DNS解析功能。
在正式进入使用前,我们可以先来了解域名解析相关的几个名词解释:
记录
– 域名中包含的对外服务的对象,有不同的类型,常见的有A
、CNAME
、MX
等;
集群
– 节点集合,用来管理一组有同样功能的节点,每个集群可以服务不同的用户,或者不同的域名;
节点
– 接收并处理域名记录查询的应用程序,通常每个节点都分布在不同的服务器或者虚拟机上;
域名
– 要在系统中管理的域名,比如goedge.cn
;
2. 原理
1) 用户终端设备发起查询 --> 2) 查询域名服务器地址(DNS Hosts) --> 3) 查询自建GoEdge DNS节点 --> 4) 查询GoEdge系统里已添加域名解析记录
整个过程对用户来说是自动完成的,用户不会感知DNS的存在;而且已经忽略了多级DNS查询过程。
其中:
- 用户终端设备发起查询:用户在使用手机、电脑访问网站时,需要查询网站所在服务器的IP地址
- 查询域名服务器地址(DNS Hosts):用户第一次查询域名时,需要先获得域名服务器地址,比如
ns1.mydomain.com
等 - 查询自建GoEdge DNS节点:DNS根据上一步骤获得的域名服务器地址,将地址解析成IP,这里的IP就是我们的DNS节点,具体两者之间如何绑定,请参考本文
设置第三方解析服务器
一节 - 查询GoEdge系统里已添加域名解析记录:在我们的DNS节点接收到域名查询时,会自动查询已经添加的域名解析记录,并返回对应的结果
3. 创建DNS集群
进入系统后,可以在左侧”智能DNS”菜单中点击”集群管理”,如果还没有集群,可以点击”创建集群”(其中dns主机域名可以先不设置,本文第9节会介绍):
4. 配置DNS节点服务器
4.1 系统需求
单节点最低需求:
操作系统:Linux
包括并不限于CentOS、RHEL、Debian、Ubuntu、RockyLinux、AlpineLinux及其他各种发行版本
CPU不少于1核心
可用内存不少于1G
可用硬盘不小于10G
当单节点日访问量超千万时建议配置:
CPU不少于4核心
可用内存不少于8G
可用硬盘不小于100G(解析记录数超过千万时)
硬盘使用SSD硬盘
由于DNS服务通常使用UDP协议通讯,所以请确保服务器所在带宽服务商可以正常接收和发送UDP数据流量。
4.2 对边缘节点机器的配置
这里使用1h1g的小鸡进行测试,添加了1g swap。可以使用以下一键脚本,便捷开启bbr+fq并添加swap。脚本中添加swap时的单位为MB。
当然,你也可以在管理平台所在服务器安装。
wget -O box.sh https://raw.githubusercontent.com/BlueSkyXN/SKY-BOX/main/box.sh && chmod +x box.sh && clear && ./box.sh
4.3 如果你使用开心版,屏蔽服务器与官方域名通讯
echo "127.0.0.1 goedge.cloud" | sudo tee -a /etc/hosts > /dev/null
echo "127.0.0.1 goedge.cn" | sudo tee -a /etc/hosts > /dev/null
echo "127.0.0.1 dl.goedge.cloud" | sudo tee -a /etc/hosts > /dev/null
echo "127.0.0.1 dl.goedge.cn" | sudo tee -a /etc/hosts > /dev/null
echo "127.0.0.1 global.dl.goedge.cloud" | sudo tee -a /etc/hosts > /dev/null
echo "127.0.0.1 global.dl.goedge.cn" | sudo tee -a /etc/hosts > /dev/null
cat /etc/hosts
4.4 如果你使用开心版,且使用ssh自动安装,替换dns节点安装文件
替换 ./edge-admin/edge-api/deploy
下的两个dns节点安装文件。
edge-dns-linux-amd64-v1.3.9.zip
edge-dns-linux-arm64-v1.3.9.zip
- 国际源(Cloudflare)
# X86_64
wget https://static-file-global.353355.xyz/goedge/edge-dns-linux-amd64-v1.3.9.zip
# aarch64
wget https://static-file-global.353355.xyz/goedge/edge-dns-linux-arm64-v1.3.9.zip
- 国内源(阿里云CDN)
# X86_64
wget https://fj.ly93.cc/37/1809540514/edge-dns-linux-amd64-v1.3.9.zip
# aarch64
wget https://fj.ly93.cc/37/1809540511/edge-dns-linux-arm64-v1.3.9.zip
以上是fastoo大佬在https://www.nodeseek.com/post-139661-1提供的包,你也可以在这里查看DigitalVirt提供的备份,并校验md5 。
5. 安装DNS节点
5.1 创建DNS节点
保存后,发现节点处于未安装状态。点击“未安装”跳转安装。
这里为了便捷,使用SSH自动安装,如果你想手动安装,按照配置和官网教程配置即可。
安装完成后,在节点列表可以看到节点正在运行。
如果你发现节点异常,可以查看节点日志:
比如我这里出现53端口被占用的情况,查看占用的程序并将其关闭:
apt-get install lsof
lsof -i :53
发现systemd-resolve
进程(PID 408)正在占用端口 53。
root@sg-1h1g:# sudo lsof -i :53
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd-r 408 systemd-resolve 18u IPv4 16526 0t0 UDP 127.0.0.53:domain
systemd-r 408 systemd-resolve 19u IPv4 16527 0t0 TCP 127.0.0.53:domain (LISTEN)
systemd-r 408 systemd-resolve 20u IPv4 16528 0t0 UDP 127.0.0.54:domain
systemd-r 408 systemd-resolve 21u IPv4 16529 0t0 TCP 127.0.0.54:domain (LISTEN)
将其关闭:
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved
然后再次安装节点即可。
5.2 安装nftables
GoEdge可以使用nftables有效拦截恶意IP访问。查看是否已安装:
nft --version
如果未安装,
在CentOS(5、6、7)下可以使用:
sudo yum -y install nftables
RedHat/CentOS 8/CentOS 9/RockyLinux9/Fedora下可以使用:
dnf -y install nftables
在Debian/Ubuntu下可以使用:
sudo apt install nftables
异常处理
如果安装后边缘节点有 Receive: netlink receive: no such file or directory
类似的提示,可以尝试重启 edge-dns
进程(edge-dns restart
)。
6. 添加域名
在集群和节点都准备就绪后,我们可以添加一个域名试试,在”智能DNS” – “添加域名”里:
其中”所属集群”选择我们刚才创建好的集群,域名goedge.cn
需要换成你自己能够管理的域名。
创建后域名列表是:
7. 添加记录
在 “域名” 详情中,可以点击 “记录” 页,添加多个记录。在”记录”页点击”创建记录”:
在这里我们添加了www
的A记录,并填写了一个IP作为记录值。其他选项可以忽略。
点击”保存”后,就可以看到记录列表了:
8. 测试
在我们添加完域名、记录后,假设你的DNS节点IP是 8.8.8.8
,可以使用 nslookup
命令来查询我们已经添加的域名记录:
# 使用 nslookup 命令查询域名解析
# 其中 8.8.8.8 是你的DNS节点服务器IP
# A 为记录类型
nslookup -type=A www.goedge.cn 8.8.8.8
# 响应
Server: 192.168.1.30
Address: 192.168.1.30#53
Non-authoritative answer:
Name: www.goedge.cn
如果出现了相对应的结果,说明我们的节点工作正常。
你也可以在”智能DNS” – 左侧 “访问日志” 菜单里查看访问记录,类似于:
9. 设置第三方解析服务器
如果只是节点解析生效,并不能让其他用户使用此解析服务,你可以:
- 让其他用户使用你的DNS节点作为DNS解析服务器,优点是可以非常灵活地控制任何域名的解析记录,但是缺点是用户只能访问在系统里已经设置的域名;
- 在第三方域名管理平台设置域名的NS记录,然后任何别的域名都可以使用我们的DNS主机地址,下面将以namesilo为例讲述设置方法。
9.1 利用NameSilo管理域名服务器
官方教程中使用阿里云云解析演示,我不使用阿里云,因此使用namesilo测试。
比如我要把mydomain.com
作为DNS服务器的域名,在namesilo后台选择域名,点击domain manager中的View/Manage Registered NameServers,
点register new nameserver。这么长时间了namesilo管理界面还是新老ui反复横跳,没给员工发工资吗?
输入host和host ip。host一般需要两个,host ip至少需要一个,如果你只有一个dns节点,可以把两个host解析到同一个host ip。host(即DNS Host)就如常见的ns1.mydomain.com ns2.mydomain.com,host ip就是你的dns节点ip。子域名可以自定义,这里学cf创建pite.mydomain.com和3mz.mydomain.com两个dns host。
重复操作,创建两个dns host:
在Manage DNS给mydomain.com增加一到多个A记录,名字是pite
、3mz
(跟上一步中设置的DNS服务器名称对应),记录值跟我们系统的DNS节点的IP相对应;如果只有一个DNS节点,那么两个记录的IP可以是一样的:
这样就完成了DNS主机域名同我们DNS节点之间的绑定。
记住这里添加的子域名,要填入到集群设置中(集群设置–基础设置–DNS主机域名)。
现在可以将其他域名——比如我们要在系统中管理的域名(在这里是 goedge.cn
),在注册商处的”DNS修改”修改DNS服务器为我们刚添加的DNS Host:
设置成功后,这样别的用户不需要设置,访问 goedge.cn
相关的域名时,都会自动转到我们设置的系统里,只要我们在GoEdge系统里添加了对应的记录,就能正确响应。
可以通过域名whois查询NS记录是否设置成功,类似于:
DNS服务器
Name Server
--------------------
DNS1:ns1.example.cn
DNS2:ns2.example.cn
9.2 第三方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
参考
https://goedge.cloud/docs/NS/Guide.md
https://www.youtube.com/watch?v=PaWIl27t0dc
暂无评论内容