内网DNS服务器的软件有许多,比如Bind9,dnsmasq,PowerDNS等等
而这次搭建内网dns服务的软件CoreDNS,CoreDNS是Golang编写的一个插件式DNS服务器,也是Kubernetes 1.13 后所内置的默认DNS服务器.自己也考虑过使用Bind9,但配置感觉太麻烦了,故选择了比较简单灵活的CoreDNS作为搭建dns服务的软件

下载安装
- 
编译安装(不推荐)
# 编译安装首先确保环境中有Golang且版本为1.12或者更高 # 且因为软件编译时会下载来自谷歌的依赖,所以还是不是特别推荐编译安装 git clone https://github.com/coredns/coredns cd coredns make - 
下载安装
从Github下载对应系统的依赖 https://github.com/coredns/coredns/releases
# 下载依赖 wget https://github.com/coredns/coredns/releases/download/v1.7.1/coredns_1.7.1_linux_amd64.tgz # 解压 tar -zxvf coredns_1.7.1_linux_arm.tgz 
编译/解压 完成后,都会得到一个coredns 的二进制文件,这个就是CoreDNS软件
域名解析配置
CoreDNS基本参数
./coredns -h
| 参数 | 解释 | 
|---|---|
| -conf | 指定配置文件(默认为当前目录的 Corefile) | 
| -dns.port | 指定 DNS 服务监听端口 | 
| -pidfile | 指定 pid 文件的存放路径 | 
| -plugins | 列出已安装的插件 | 
| -quiet | 不打印日志 | 
| -version | 显示版本信息 | 
域名解析
coredns 所在目录下,新建文件 Corefile,并且添加一下内容
.:53 {
    forward . 8.8.8.8:53
    log
}
forward是将DNS消息转发到上游DNS服务器上
当时你也可以添加多个上游DNS服务器
.:53 {
    forward . 8.8.8.8:53 223.5.5.5:53 223.6.6.6:53 [2400:3200::1]:53
    log
}
在终端输入 ./coredns -conf Corefile 即可运行(未root用户则需要添加sudo)
打开一个新终端,输入 dig @localhost a baidu.com 就可以测试coredns是否运行成功(未安装dig的输入apt-get install dnsutils进行安装)

可以看到,域名解析成功了
内网域名解析
内网的环境比较简单,这里使用hosts插件进行解析
.:53 {
    forward . 8.8.8.8:53
    hosts {
        172.10.162.32 guiyun.test
        # ttl
        ttl 60
        # 重载hosts配置
        reload 1m
        # 继续执行
        fallthrough
    }
    log
}
如果域名比较多,也可以使用
 .:53 {
    forward . 8.8.8.8:53
    hosts /opt/coredns/hosts
    log
}
并在**/opt/coredns/hosts**创建文件
172.10.162.32  guiyun.test
172.10.162.31  admin.guiyun.test
编辑保存运行后可以使用dig命令进行测试
终端,输入dig @localhost a guiyun.test就可以测试

更多的详细用法,可以去官网 进行学习
参考网站
https://blog.csdn.net/enweitech/article/details/84582800
https://draveness.me/dns-coredns/