使用coredns作为你的内网dns
简介
coredns是一个用go语言写的dns服务器,熟悉k8s的同学都知道k8s的服务发现用的就是coredns,之前我一直使用的是dnsmasq,但是不知道为什么dnsmasq的解析在公司总是很慢,所以我就想着换一个dns软件试试,看来看去就选择了coredns
继续简介
首先说一下架构,我内网搭建了两台dns服务器,内网搭建dns服务器最主要是为了给内网各个工具创建域名使用的,得益于coredns的特性,我现在的想法是下面这样的
首先备dns服务器还是使用dnsmasq不变,但是主dns服务器我把他切换为coredns,当用户请求公司域名的时候coredns会把请求直接转发到备dns服务器,让备dns服务器作为公司域名的上游服务器,当用户请求其他域名的时候,coredns会把请求转发到114dns上,这样当公司需要新域名的时候我只要在备dns服务器上做解析即可,主dns服务器几乎就可以不用动了
操作
因为备dns服务器是可以不用动的,现在我就讲主dns服务器上的操作
首先下载coredns
https://github.com/coredns/coredns/releases/download/v1.6.9/coredns_1.6.9_linux_amd64.tgz
解压
tar -zxvf coredns_1.6.9_linux_amd64.tgz
解压完成之后创建coredns的配置文件Corefile
company.com {
forward . 10.10.10.9
log
}
.:53 {
forward . 114.114.114.114
log
errors
prometheus 0.0.0.0:9153
cache
}
解释下参数
company.com 就是公司的域名,只要是这个域名的解析请求,coredns都会转发到上游10.10.10.9上 log 表示开启日志记录 prometheus 表示开启prometheus的mertics cache 表示开启缓存
之后写一个启动脚本
nohup ./coredns -conf Corefile &
最后你就可以使用prometheus去监控你的coredns了,我最喜欢看得是coredns的缓存数
可以看到,因为当中我重启了一次coredns,造成大部分缓存都丢失了