解放你的 hosts 文件!从零开始内网搭建 DNS 服务器 CoreDNS 实战 您所在的位置:网站首页 搭建远程下载服务器的软件 解放你的 hosts 文件!从零开始内网搭建 DNS 服务器 CoreDNS 实战

解放你的 hosts 文件!从零开始内网搭建 DNS 服务器 CoreDNS 实战

#解放你的 hosts 文件!从零开始内网搭建 DNS 服务器 CoreDNS 实战| 来源: 网络整理| 查看: 265

本文结合实际场景,从零开始搭建内网 CoreDNS 服务器并完成配置 内网中物理机、虚拟机等设备较多,配置 hosts 文件太麻烦,因此想到利用一台设备搭建 DNS 服务器以解救 hosts 文件 由于之前没有搭建 DNS 服务器的经验,在 GitHub 上搜了一下后,选择了 CoreDNS

内网搭建 DNS 服务器 前言clone 源码,编译,测试clone & make本地 Golang 环境直接编译基于 Docker Golang 编译 测试 域名解析配置coredns 基本参数创建配置文件hello, world 配置按照需求进行配置启动 coredns 并验证配置验证内网域名解析验证其他域名解析 修改路由器 DNS 配置或部署到公网 将 CoreDNS 作为服务 Service 运行

前言

以前内网都是通过 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 sudo 6.6K Mar 9 00:39 GOVERNANCE.md -rw-r--r-- 1 pi sudo 12K Mar 9 00:39 LICENSE -rw-r--r-- 1 pi sudo 1.9K Mar 9 00:39 Makefile -rw-r--r-- 1 pi sudo 1.6K Mar 9 00:39 Makefile.doc -rw-r--r-- 1 pi sudo 1.7K Mar 9 00:39 Makefile.fuzz -rw-r--r-- 1 pi sudo 7.0K Mar 9 00:39 Makefile.release drwxr-xr-x 2 pi sudo 4.0K Mar 10 20:16 man drwxr-xr-x 2 pi sudo 4.0K Mar 9 00:39 notes -rw-r--r-- 1 pi sudo 1.7K Mar 9 00:39 owners_generate.go drwxr-xr-x 2 pi sudo 4.0K Mar 9 00:39 pb drwxr-xr-x 49 pi sudo 4.0K Mar 9 00:39 plugin -rw-r--r-- 1 pi sudo 1.3K Mar 9 00:39 plugin.cfg -rw-r--r-- 1 pi sudo 5.7K Mar 9 00:39 plugin.md -rw-r--r-- 1 pi sudo 8.4K Mar 9 00:39 README.md drwxr-xr-x 2 pi sudo 4.0K Mar 9 00:39 request lrwxrwxrwx 1 pi sudo 19 Mar 9 00:39 SECURITY.md -> .github/SECURITY.md drwxr-xr-x 2 pi sudo 4.0K Mar 9 00:39 test

运行 coredns 并监听 1053 端口,此时由于没有配置文件,只能验证 DNS 服务器是否工作

./coredns -dns.port 1053

使用 dig 命令验证 DNS 服务器运行状况

dig @localhost -p 1053 a whiami.expamle.org

输出结果:

; DiG 9.11.5-P4-5.1-Debian @localhost -p 1053 a whiami.expamle.org ; (2 servers found) ;; global options: +cmd ;; Got answer: ;; ->>HEADERHEADERHEADERHEADER


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有