使用CoreDNS搭建DNS服务器
简介
CoreDNS是一个DNS服务器/转发器,用Go编写,可以链接插件。每个插件执行一个 (DNS) 功能。
CoreDNS是云原生计算基金会毕业的项目。
CoreDNS是一个快速灵活的DNS服务器。这里的关键词是_灵活的_:使用CoreDNS,您可以通过利用插件对DNS数据执行所需的操作。如果某些功能不是开箱即用的,您可以通过编写插件来添加它。
安装
获取CoreDNS源代码
git clone https://github.com/coredns/coredns
使用Docker编译CoreDNS
CoreDNS 需要 Go 才能编译。但是,如果您已经安装了 Docker,并且不想设置 Go 环境,则可以使用Docker轻松构建 CoreDNS:
# 进入clone下来的源码目录 docker run --rm -i -t -v $PWD:/v -w /v golang:1.17 make
此处建议安装go 环境进行编译,无论如何编译都需要设置goproxy,否则会因为网络原因导致编译失败。
编译成功后可以看到一个二进制的文件
测试下是否正常
./coredns -dns.port 1053
再开一个会话测试一下
dig @localhost -p 1053 a www.baidu.com
可以看到正常
域名解析配置
基本参数
先看下CoreDns的参数
./coredns -h
编写配置文件
配置文件名称Corefile
# 监听1053端口,将所有域名解析请求转发到223.5.5.5的53端口 .:1053 { forward . 223.5.5.5:53 log }
forward的相关说明
重新开启服务后再次测试下
可以看到已经正常解析了
插件
由于我们的目的是给内网的机器配置上对应的域名,所以这里使用hosts
插件
创建hosts文件
# qanp nas 192.168.0.150 nas.ilomumu.xyz # rancher 172.16.0.7 rancher.ilomumu.xyz # harbor 172.16.0.7 notary.ilomumu.xyz 172.16.0.7 harbor.ilomumu.xyz # gitlab 172.16.0.12 gitlab.ilomumu.xyz # grafana 172.16.0.7 grafana.ilomumu.xyz # traffik 172.16.0.7 traefik.ilomumu.xyz 172.16.0.7 rancher-traefik.ilomumu.xyz
编辑CoreDns配置
# ilomumu.xyz ilomumu.xyz:53 { # 开启缓存 cache # 使用hosts文件 hosts /opt/coredns/hosts { # 解析失败使用下个模块 fallthrough } # 失败后转发 forward . 2400:3200::1 log } # 监听53端口,将所有域名解析请求转发到223.5.5.5的53端口 .:53 { cache forward . 2400:3200::1 log }
测试一下
看到可以正常解析
验证一下
可以看到正常解析内外网
编写service文件
创建文件/usr/lib/systemd/system/coredns.service
[Unit] Description=CoreDns [Service] Type=simple ExecStart=/opt/coredns/coredns -conf /opt/coredns/Corefile -pidfile /opt/coredns/coredns.pid [Install] WantedBy=multi-user.target
启动服务并开机启动
systemctl start coredns systemctl enable coredns
可以看到启动成功