记录一次安装GoEdge CDN智能DNS的流程

安装智能DNS前,你需要安装好GoEdge 管理平台:

1. 简介

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

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

记录 – 域名中包含的对外服务的对象,有不同的类型,常见的有ACNAMEMX等;

集群 – 节点集合,用来管理一组有同样功能的节点,每个集群可以服务不同的用户,或者不同的域名;

节点 – 接收并处理域名记录查询的应用程序,通常每个节点都分布在不同的服务器或者虚拟机上;

域名 – 要在系统中管理的域名,比如goedge.cn

2. 原理

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

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

其中:

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

3. 创建DNS集群

进入系统后,可以在左侧”智能DNS”菜单中点击”集群管理”,如果还没有集群,可以点击”创建集群”(其中dns主机域名可以先不设置,本文第9节会介绍):

图片[1]-记录一次安装GoEdge CDN智能DNS的流程-THsInk

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节点

图片[2]-记录一次安装GoEdge CDN智能DNS的流程-THsInk

保存后,发现节点处于未安装状态。点击“未安装”跳转安装。

图片[3]-记录一次安装GoEdge CDN智能DNS的流程-THsInk

这里为了便捷,使用SSH自动安装,如果你想手动安装,按照配置和官网教程配置即可。

图片[4]-记录一次安装GoEdge CDN智能DNS的流程-THsInk

安装完成后,在节点列表可以看到节点正在运行。

图片[5]-记录一次安装GoEdge CDN智能DNS的流程-THsInk

如果你发现节点异常,可以查看节点日志:

图片[6]-记录一次安装GoEdge CDN智能DNS的流程-THsInk

比如我这里出现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
图片[7]-记录一次安装GoEdge CDN智能DNS的流程-THsInk

异常处理

如果安装后边缘节点有 Receive: netlink receive: no such file or directory 类似的提示,可以尝试重启 edge-dns 进程(edge-dns restart)。

6. 添加域名

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

图片[8]-记录一次安装GoEdge CDN智能DNS的流程-THsInk

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

创建后域名列表是:

图片[9]-记录一次安装GoEdge CDN智能DNS的流程-THsInk

7. 添加记录

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

图片[10]-记录一次安装GoEdge CDN智能DNS的流程-THsInk

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

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

图片[11]-记录一次安装GoEdge CDN智能DNS的流程-THsInk

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

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

图片[12]-记录一次安装GoEdge CDN智能DNS的流程-THsInk

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

图片[13]-记录一次安装GoEdge CDN智能DNS的流程-THsInk

9. 设置第三方解析服务器

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

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

9.1 利用NameSilo管理域名服务器

官方教程中使用阿里云云解析演示,我不使用阿里云,因此使用namesilo测试。

比如我要把mydomain.com作为DNS服务器的域名,在namesilo后台选择域名,点击domain manager中的View/Manage Registered NameServers,

图片[14]-记录一次安装GoEdge CDN智能DNS的流程-THsInk

点register new nameserver。这么长时间了namesilo管理界面还是新老ui反复横跳,没给员工发工资吗?

图片[15]-记录一次安装GoEdge CDN智能DNS的流程-THsInk

输入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。

图片[16]-记录一次安装GoEdge CDN智能DNS的流程-THsInk

重复操作,创建两个dns host:

图片[17]-记录一次安装GoEdge CDN智能DNS的流程-THsInk

在Manage DNS给mydomain.com增加一到多个A记录,名字是pite3mz(跟上一步中设置的DNS服务器名称对应),记录值跟我们系统的DNS节点的IP相对应;如果只有一个DNS节点,那么两个记录的IP可以是一样的:

图片[18]-记录一次安装GoEdge CDN智能DNS的流程-THsInk

这样就完成了DNS主机域名同我们DNS节点之间的绑定。

记住这里添加的子域名,要填入到集群设置中(集群设置–基础设置–DNS主机域名)。

图片[19]-记录一次安装GoEdge CDN智能DNS的流程-THsInk

现在可以将其他域名——比如我们要在系统中管理的域名(在这里是 goedge.cn ),在注册商处的”DNS修改”修改DNS服务器为我们刚添加的DNS Host:

图片[20]-记录一次安装GoEdge CDN智能DNS的流程-THsInk

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

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

DNS服务器
Name Server	
--------------------
DNS1:ns1.example.cn
DNS2:ns2.example.cn
图片[21]-记录一次安装GoEdge CDN智能DNS的流程-THsInk

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

参考

https://goedge.cloud/docs/NS/Guide.md

https://www.youtube.com/watch?v=PaWIl27t0dc

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!无需注册,过短或乱码评论会被屏蔽。
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容