Bootstrap

企业内网使用CoreDNS作为内网DNS服务器

企业内网使用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 会按照以下顺序查找配置文件:

  1. 当前工作目录下的名为 Corefile 的文件。

  2. /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的配置文件。

;