docker 部署 coredns 构建内部 dns 解析

  • coredns 官网
  • CoreDNS 配置说明
  • coredns 是一个用 go 语言编写的 DNS 服务器
  • 目前,默认的 coredns 包含了大约30个插件,插件只有在被启用的时候才会创建响应
    • 相比较 bindcoredns 更轻量,也更具备扩展性
  • 加入了 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
posted @ 2024-08-19 19:30  月巴左耳东  阅读(106)  评论(0编辑  收藏  举报  来源