企业内网使用CoreDNS作为内网DNS服务器
CoreDNS 简介
CoreDNS 是一个高度可扩展和灵活的 DNS 服务器,它的设计目标是易于使用且具有强大的功能。CoreDNS 由 Go 语言编写,其架构允许使用插件来扩展其功能。这使得 CoreDNS 不仅可以用作传统的 DNS 服务器,还可以用作服务发现、负载均衡和其他用途。
CoreDNS 的一些核心特点包括:
-
插件架构:通过插件,可以轻松扩展 CoreDNS 的功能。插件可以用于处理 DNS 请求、转发请求、缓存结果、记录日志等。插件的使用和配置都非常简单。
-
性能和可靠性:CoreDNS 使用 Go 语言编写,具有很高的性能。同时,它具有自动重试、健康检查和负载均衡等功能,以确保 DNS 服务的可靠性。
-
易于配置:CoreDNS 使用名为 Caddyfile 的配置文件格式,这种格式简单易懂,易于编写和维护。
-
Kubernetes 集成:CoreDNS 可以与 Kubernetes 集成,作为集群内的 DNS 服务器。自 Kubernetes 1.11 版本起,CoreDNS 成为 Kubernetes 的默认 DNS 服务器,替代了之前的 kube-dns。
安装 CoreDNS
wget https://github.com/coredns/coredns/releases/download/v1.10.1/coredns_1.10.1_linux_amd64.tgz
tar xf coredns_1.10.1_linux_amd64.tgz
配置文件说明
CoreDNS 在启动时会查找并加载配置文件。默认情况下,CoreDNS 会按照以下顺序查找配置文件:
-
当前工作目录下的名为
Corefile
的文件。 -
/etc/coredns/Corefile
. {
hosts {
192.168.3.51 rocketmq-01.tiga.cc
192.168.3.52 rocketmq-02.tiga.cc
192.168.3.53 web01.tiga.cc
1.1.1.1 dns.tiga.cc
# 如果查询的域名不在 `hosts` 配置中,则继续执行下一个插件。
fallthrough
}
# 当查询的域名不在 hosts 配置中时,将 DNS 查询请求转发到指定的上游 DNS 服务器
forward . 114.114.114.114 223.5.5.5
# 用于缓存 DNS 查询结果。启用此插件后,CoreDNS 将根据 DNS 记录的 TTL(Time to Live)值缓存查询结果,以提高 DNS 解析速度。
cache
# 用于记录 DNS 查询过程中的错误。启用此插件后,CoreDNS 将在其日志中记录查询错误。
errors
# 启用reload插件,启用该插件后,每隔10s检查配置文件是否更改,不添加值则使用默认值30s
reload 10
}
启动 CoreDNS
./coredns
关于区域传送
在 CoreDNS 配置文件中,file 插件用于加载一个区域文件。区域文件是一个包含 DNS 记录的文本文件,它遵循 BIND 风格的区域格式。区域文件中包括资源记录(如 A、AAAA、CNAME、MX 等)以及 SOA(Start of Authority)记录。
稍微麻烦点,和bind一样,使用起来就没有上述方式简便,不如直接同步CoreDNS的配置文件。