CoreDNS 是一个灵活、可扩展的 DNS 服务器,常用于 Kubernetes 环境中,但也可以在其他场合单独部署。以下是在 Ubuntu 系统上部署 CoreDNS 的基本步骤:
步骤 1: 安装 CoreDNS
Ubuntu 官方仓库可能不包含最新版本的 CoreDNS,所以我们将手动下载并安装它。
-  首先,访问 CoreDNS 的 GitHub 发布页面来下载最新版本的 CoreDNS 二进制文件: 
 CoreDNS GitHub Releases
-  使用 wget命令下载适合您系统的版本(例如,如果是 Linux amd64 架构):wget https://github.com/coredns/coredns/releases/download/v1.8.3/coredns_1.8.3_linux_amd64.tgz
-  解压下载的文件: tar -zxvf coredns_1.8.3_linux_amd64.tgz
-  移动解压后的 coredns可执行文件到/usr/local/bin/:sudo mv coredns /usr/local/bin/
-  确认 CoreDNS 已正确安装: coredns -version
步骤 2: 配置 CoreDNS
CoreDNS 通过一个名为 Corefile 的配置文件进行配置。
-  创建一个存放 Corefile 的目录(如果尚未存在): sudo mkdir /etc/coredns
-  创建并编辑 Corefile: sudo nano /etc/coredns/Corefile以下是一个基础的配置示例,这配置了一个简单的 DNS 服务器,它处理 .example域的请求:
.:53 {  errors  health  ready  log  cache 30  forward . 8.8.8.8 114.114.114.114  reload  
}  example.com {  hosts {  192.168.1.10 host1.example.com  192.168.1.20 host2.example.com  fallthrough  }  
}  test.com {  hosts {  10.10.100.100 test.com  }  
}  配置文件详解
配置文件中的各个部分详细解释如下:
全局块 (.:53)
 此部分设置了DNS服务器的基本行为和全局配置。
- errors: 启用错误日志记录。如果DNS查询过程中发生错误,这些错误会被记录下来。
- health: 启用健康检查。这通常用于监控DNS服务器的运行状态,确保它正常响应请求。 http://IP:8080/health
- ready: 表示服务准备就绪,通常用于告知系统DNS服务已准备好接受查询。 http://IP:8181/ready
- log: 开启日志记录,用于记录所有接收到的查询和响应的详细信息。
- cache 30: 开启缓存,并设置缓存时间为30秒。这意味着DNS查询的结果会被缓存30秒,重复的查询在这段时间内可以直接从缓存中获得答案,从而加快响应速度和减轻服务器负担。
- forward . 8.8.8.8 114.114.114.114: 设置默认的转发规则。如果DNS服务器无法本地解析某个域名,它会将查询转发到这些上游DNS服务器(Google的8.8.8.8和中国的114.114.114.114)。
- reload: 允许在不重启服务的情况下重新加载配置文件,这对于更新配置而不中断服务非常有用。
example.com 块
 这个块专门处理所有指向 example.com 域的DNS查询。
- hosts: 在这个设置下,你可以直接指定域名到IP地址的映射。 - 192.168.1.10 host1.example.com: 将- host1.example.com解析到- 192.168.1.10。
- 192.168.1.20 host2.example.com: 将- host2.example.com解析到- 192.168.1.20。
 
- fallthrough: 如果在此块中没有找到匹配的记录,DNS查询将继续传递到其他可能的解析器或转发规则中去。
test.com 块
 此块专门处理所有指向 test.com 域的DNS查询。
- hosts: 类似于 example.com的设置,你可以直接指定域名到IP地址的映射。- 10.10.100.100 test.com: 将根域名- test.com直接解析到- 10.10.100.100。
 
通过这种方式,你可以高效地管理和解析特定的域名请求,同时利用转发规则处理那些无法本地解析的查询。这样的配置既保证了响应速度,也增加了灵活性和可控性。
步骤 3: 创建 Systemd 服务文件
为了让 CoreDNS 成为一个系统服务并在启动时自动运行,您需要创建一个 systemd 服务文件。
-  创建并编辑 CoreDNS 服务文件: sudo nano /etc/systemd/system/coredns.service
-  添加以下内容到服务文件: [Unit] Description=CoreDNS DNS server After=network.target [Service] PermissionsStartOnly=true User=root ExecStart=/usr/local/bin/coredns -conf /etc/coredns/Corefile Restart=on-failure [Install] WantedBy=multi-user.target
-  重新加载 systemd 管理器配置: sudo systemctl daemon-reload
-  启动 CoreDNS 服务并设置为开机启动: sudo systemctl start coredns sudo systemctl enable coredns
-  检查 CoreDNS 服务的状态: sudo systemctl status coredns
现在,您已经成功在 Ubuntu 上部署了 CoreDNS
步骤四
测试是否可用
nslookup host1.example.com [DNS的IP]