本文结合实际场景,从零开始搭建内网 CoreDNS 服务器并完成配置
内网中物理机、虚拟机等设备较多,配置 hosts 文件太麻烦,因此想到利用一台设备搭建 DNS 服务器以解救 hosts 文件
由于之前没有搭建 DNS 服务器的经验,在 GitHub 上搜了一下后,选择了 CoreDNS
内网搭建 DNS 服务器
前言
以前内网都是通过 hosts 管理内网的域名解析,如果设备少还好说,设备多了后,逐个设备维护 hosts 文件非常不现实。
如果能够在内网搭建 DNS 服务器,并调整路由器的 DNS 实现内网域名解析,就能够省去 hosts 配置的时间。
本文实践环境网络拓扑图:

clone 源码,编译,测试
clone & make
本地 Golang 环境直接编译
CoreDNS 使用 Golang 开发,因此编译需要 Golang 环境。
clone 源码并编译
git clone https://github.com/coredns/coredns
cd coredns
make
如果网络环境访问 GitHub 有困难,可以使用 Gitee 提供的镜像源 coredns:
git clone https://gitee.com/mirrors/coredns.git
cd coredns
make
基于 Docker Golang 编译
同样,先 clone 项目到本地
git clone https://github.com/coredns/coredns
cd coredns
如果本地没有 Golang 环境,也可以直接用 Docker 拉一个 Golang 镜像编译,以下为官方文档给出的命令
docker run --rm -i -t -v $PWD:/v -w /v golang:1.12 make
考虑到网络环境的问题,国内用户建议指定环境变量 GOPROXY
docker run --rm -i -t -e GOPROXY="https://goproxy.cn" -v $PWD:/v -w /v golang:1.12 make
测试
编译完成后,项目目录下多了一个 40MB 的二进制可执行文件 coredns
pi@rpi4:~/CoreDNS$ ls -lh
total 40M
-rw-r--r-- 1 pi sudo 3.6K Mar 9 00:39 ADOPTERS.md
lrwxrwxrwx 1 pi sudo 26 Mar 9 00:39 CODE_OF_CONDUCT.md -> .github/CODE_OF_CONDUCT.md
-rw-r--r-- 1 pi sudo 2.4K Mar 9 00:39 CODEOWNERS
lrwxrwxrwx 1 pi sudo 23 Mar 9 00:39 CONTRIBUTING.md -> .github/CONTRIBUTING.md
drwxr-xr-x 4 pi sudo 4.0K Mar 9 00:39 core
-rwxr-xr-x 1 pi sudo 40M Mar 10 20:56 coredns
-rw-r--r-- 1 pi sudo 1.4K Mar 9 00:39 coredns.1.md
-rw-r--r-- 1 pi sudo 246 Mar 9 00:39 coredns.go
-rw-r--r-- 1 pi sudo 3.3K Mar 9 00:39 corefile.5.md
drwxr-xr-x 2 pi sudo 4.0K Mar 9 00:39 coremain
-rw-r--r-- 1 pi sudo 2.4K Mar 9 00:39 directives_generate.go
-rw-r--r-- 1 pi sudo 254 Mar 9 00:39 Dockerfile
-rw-r--r-- 1 pi sudo 2.2K Mar 9 00:39 go.mod
-rw-r--r-- 1 pi sudo 62K Mar 9 00:39 go.sum
-rw-r--r-- 1 pi

本文介绍如何从零开始在内网环境中搭建并配置CoreDNS服务器,解决大规模设备hosts文件管理难题,实现高效域名解析。
最低0.47元/天 解锁文章
4831

被折叠的 条评论
为什么被折叠?



