使用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

1
2
3
4
5
6
7
8
9
10
11
12
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,造成大部分缓存都丢失了

欢迎关注Bboysoul的博客www.bboy.app

Have Fun

欢迎关注我的其它发布渠道