docker 部署 coredns 构建内部 dns 解析
- coredns 官网
- CoreDNS 配置说明
coredns
是一个用 go 语言编写的 DNS 服务器- 目前,默认的
coredns
包含了大约30个插件,插件只有在被启用的时候才会创建响应
- 相比较
bind
,coredns
更轻量,也更具备扩展性- 加入了 CNCF 基金会
- 有现成的镜像可以直接使用
准备配置文件
本地创建目录,用来持久化配置文件
mkdir -p /approot/docker_volumes/coredns
配置文件内容
.:53 {
# 输出日志
log
# 输出错误
errors
ready
# 自定义域名解析
hosts /etc/coredns/hostsfile {
fallthrough
}
# CoreDNS 自身 metrics 数据接口。
## 可以通过http://localhost:9153/metrics获取 prometheus 格式的监控数据。
prometheus :9153
# 最后所有的都转发到系统配置的上游dns服务器去解析
# 如果多个 dns 服务器,可以写成:forward . 10.10.0.10 10.10.0.20
# 可以读取本地 resolv.conf 文件:forward . /etc/resolv.conf
forward . 114.114.114.114 114.114.115.119 {
max_concurrent 1000
}
# 缓存时间
cache 30
# 环路检测,如果检测到环路,则停止 CoreDNS
loop
# 自动加载配置文件
reload
# 循环 DNS 负载均衡器
loadbalance
}
hostsfile 的内容
192.168.18.222 localrepo.icu
启动 coredns
docker run -d \
--memory 200m \
--name coredns \
--restart always \
--network host \
-v /approot/docker_volumes/coredns:/etc/coredns \
registry.aliyuncs.com/google_containers/coredns:1.11.3 \
-conf /etc/coredns/corefile
验证端口,方法有很多,大家自己选择
ss -anput | grep 53
telnet 192.168.18.222 53
配置 resolv.conf
要把自己的 dns 服务器地址加到 resolv.conf 文件里面,本地才能找到对应的 dns 服务器
nameserver 192.168.18.222
验证 dns 解析
访问域名,看能不能返回状态码,这里的域名,是配置文件里面配置的
curl -I localrepo.icu
安装 bind-utils 解析工具,包含了 dig,host,nslookup 等命令
dig localrepo.icu
host localrepo.icu
nslookup localrepo.icu
只要能找到对应的 dns 服务器,能解析成功,表示 coredns 服务部署完成了
验证配置文件热更新
可以随意定义一个域名,或者现有的,修改一下 hostsfile,追加域名
能解析,说明配置文件加载成功了
dig xxx
host xxx
nslookup xxx