news 2026/3/1 8:38:17

麒麟Kylin | CoreDNS部署

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
麒麟Kylin | CoreDNS部署

一、CoreDNS基本概念

1. CoreDNS概述

CoreDNS 是 CNCF(云原生计算基金会)毕业的开源 DNS 服务器,由 Miek Gieben 主导开发,基于 Go 语言实现,是云原生时代 kube-dns 的替代方案,同时也可作为通用 DNS 服务独立部署。其核心设计理念是「插件化、极简配置、云原生原生适配」,既兼容传统 DNS 场景,又能完美适配容器、K8s 等动态环境。

  • 独立运行:作为独立守护进程常驻内存,监听 53 端口(DNS 默认端口),无需依附任何其他服务;
  • 插件化扩展:通过插件实现健康检查、域名重写、缓存、转发等功能,配置极简;
  • 多场景适配:既支持传统内网域名的静态解析,也支持云原生环境的动态服务发现;
  • 热重载:修改配置后无需重启进程,通过信号量即可重载配置,无服务中断。

2. 与传统的DNS软件对比

特性CoreDNSBindUnbound
架构设计插件化、单进程、轻量模块化、多进程、重量级单进程、专注递归、轻量
云原生适配原生支持 K8s/ETCD无原生支持无原生支持
健康检查内置health插件需第三方脚本需第三方工具联动
配置复杂度Corefile 声明式多配置文件专注递归
动态能力插件化动态解析(如 K8s)静态配置为主静态 / 转发为主
热重载原生支持(SIGUSR1 信号支持但配置复杂支持(unbound-control)
资源占用极低(MB 级内存)较高(GB 级内存)低(MB 级)
监控能力内置prometheus插件需额外配置需额外配置

3. CoreDNS核心架构模型

CoreDNS的核心是:「插件链+Corefile配置」。所有功能均通过插件实现,配置文件定义插件的执行顺序和规则。

  • 插件链执行逻辑:请求按Corefile中插件的声明顺序依次执行,插件可决定终止请求(返回结果)或传递给下一个插件。
  • 插件优先级:核心基础插件(如 log/errors)通常放在最前,业务插件(如 hosts/kubernetes)居中,兜底插件(如 forward/rewrite)放在最后。

4. Corefile语法解析

Corefile是CoreDNS的唯一配置文件,采用【域+插件块】的声明式语法,格式极简。

<域名>[:端口] { <插件1>[插件参数] <插件1>[插件参数] ... }

极简配置案例:所有域名监听 53 端口

.:53 { bind 0.0.0.0 # 绑定所有网卡 log # 记录查询日志 hosts { # 静态解析 192.168.1.1 www.meaauf.com } forward . 8.8.8.8 # 未匹配的域名转发到谷歌 DNS cache 60 # 缓存 60 秒 }

5. 基础类插件介绍

插件类核心功能示例
bind指定监听的网卡 / 端口bind 192.168.8.10
log记录所有DNS查询日志,如客户端IP、域名、查询类型、响应状态等log【无需参数】
errors记录解析过程中的错误日志,如域名不存在、后端服务异常errors【无需参数】
cache缓存解析结果,减少重复查询,提升性能cache 60【缓存60秒】
reload支持配置热重载,修改Corefile后自动重载,无需重启进程reload【无需参数】

6. 解析类插件介绍

插件类核心功能示例
hosts静态解析域名hosts { 192.168.1.1 www.meaauf.com;}
forward将域名查询转发到上游DNS服务器forward 114.114.114.114
kubernetesK8s 集群内域名解析kubernets cluster.loacal in-addr.arpa ip6.arpa { pods verified; fallthrough}
file从Zone文件(Bind 格式)读取解析记录,兼容传统DNS配置file /etc/coredns/meaauf.zone

二、CoreDNS部署

1. 二进制方式部署

[Step1]访问CoreDNS的官网或GitHub,下载CoreDNS二进制包。

官网:https://coredns.io GitHub:https://github.com/coredns/coredns/releases

[Step2]将软件包上传到CoreDNS。

[Step3]将coredns解压缩,解压出来的是一个二进制命令。

[root@CoreDNS ~]# tar zxf coredns_1.14.1_linux_amd64.tgz

[Step4]确保coredns命令具备执行权限,将其移动到“/usr/local/bin”目录。

[root@CoreDNS ~]# chmod +x coredns [root@CoreDNS ~]# mv coredns /usr/local/bin/

[Step5]验证:输出coredns的版本号。

[root@CoreDNS ~]# coredns -version

2. Docker方式部署

[Step1]确保本地Docker服务状态正常。

[root@CoreDNS ~]# systemctl status docker.service

[Step2]拉取官方镜像。

[root@CoreDNS ~]# docker pull coredns/coredns:latest

[Step3]临时启动一个 CoreDNS 容器,查看其版本信息,并且容器运行结束后自动删除。

[root@CoreDNS ~]# docker run --rm coredns/coredns -version

三、传统内网静态解析案例配置

1. 节点设置

主机名网络参数系统版本说明
CoreDNS192.168.8.100/24Kylin Linux Advanced Server V11 (Swan25)DNS服务器
Client192.168.8.200/24Kylin Linux Advanced Server V11 (Swan25)测试客户端

2. CoreDNS服务器配置

[Step1]安装coredns,以下使用二进制安装方式。

[root@CoreDNS ~]# coredns -version

[Step2]创建配置文件目录,编写Corefile。

[root@CoreDNS ~]# mkdir /etc/coredns [root@CoreDNS ~]# vim /etc/coredns/Corefile # 写入下列内容 .:53 { bind 192.168.8.100 # 仅监听指定网卡,增强安全性 log # 记录所有 DNS 查询日志 errors # 记录错误日志 reload # 支持配置热重载 # 静态解析域名 hosts { 192.168.8.100 coredns.meaauf.com 192.168.8.101 www.meaauf.com 192.168.8.200 client.meaauf.com } cache 60 # 缓存优化 }

[Step3]启动coredns,同时观察回显日志。

[root@CoreDNS ~]# coredns -conf /etc/coredns/Corefile

3. 客户端验证

[Step1]验证:使用nslookup测试正向解析,该命令需要先安装bind-utils。

[root@client ~]# dnf install -y bind-utils [root@client ~]# nslookup coredns.meaauf.com [root@client ~]# nslookup www.meaauf.com [root@client ~]# nslookup client.meaauf.com

[Step2]验证:使用nslookup测试反向解析。

[root@client ~]# nslookup 192.168.8.100 [root@client ~]# nslookup 192.168.8.101 [root@client ~]# nslookup 192.168.8.200

[Step3]验证:在CoreDNS上查看日志信息,能够看到刚刚的解析记录。

4. 系统服务部署

[Step1]在CoreDNS服务器上创建CoreDNS systemd服务文件。

[root@CoreDNS ~]# vim /etc/systemd/system/coredns.service # 写入下列内容 [Unit] Description=CoreDNS DNS Server Documentation=https://coredns.io After=network.target network-online.target Wants=network-online.target [Service] User=root Group=root ExecStart=/usr/local/bin/coredns -conf /etc/coredns/Corefile Restart=on-failure RestartSec=5s StartLimitInterval=0 StandardOutput=journal StandardError=journal SyslogIdentifier=coredns Nice=-5 [Install] WantedBy=multi-user.target

[Step2]在CoreDNS服务器重新加载systemd配置,启动CoreDNS服务并设置开机自启。

[root@CoreDNS ~]# systemctl daemon-reload [root@CoreDNS ~]# systemctl enable --now coredns.service

四、搭配file模块实现静态解析

1. 节点设置

主机名网络参数系统版本说明
CoreDNS192.168.8.100/24Kylin Linux Advanced Server V11 (Swan25)DNS服务器
Client192.168.8.200/24Kylin Linux Advanced Server V11 (Swan25)测试客户端

2. CoreDNS服务器配置

[Step1]安装coredns,以下使用二进制安装方式。

[Step2]创建配置文件目录,编写Corefile。

[root@CoreDNS ~]# mkdir /etc/coredns [root@CoreDNS ~]# vim /etc/coredns/Corefile # 写入下列内容 .:53 { bind 192.168.8.100 # 仅监听指定网卡,增强安全性 log # 记录所有 DNS 查询日志 errors # 记录错误日志 reload # 支持配置热重载 # 使用file插件加载解析规则,替代hosts file /etc/coredns/zones/meaauf.db cache 60 # 缓存优化 }

[Step3]编写“meaauf.db”文件,类似于Bind的解析文件。

[root@CoreDNS ~]# mkdir /etc/coredns/zones [root@CoreDNS ~]# vim /etc/coredns/zones/meaauf.db # 写入下列内容 $TTL 1D @ IN SOA @ rname.invalid. ( 2026012701 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum coredns.meaauf.com. IN A 192.168.8.100 www.meaauf.com. IN A 192.168.8.101 client.meaauf.com. IN A 192.168.8.200

[Step4]编写systemd服务文件,编写systemd服务文件的过程省略。启动coredns服务。

[root@CoreDNS ~]# systemctl restart coredns.service

3. 客户端验证

[Step1]验证:使用nslookup测试正向解析,该命令需要先安装bind-utils。

[root@client ~]# dnf install -y bind-utils [root@client ~]# nslookup coredns.meaauf.com [root@client ~]# nslookup www.meaauf.com [root@client ~]# nslookup client.meaauf.com

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/26 4:58:59

高频注入法详细教程:从理论到产品实现

今天讲下高频注入法。 第一部分:引言与基本概念 1.1 为什么需要高频注入法? 在现代电机控制中,无传感器控制是一项关键技术。它消除了物理传感器(如编码器、旋转变压器),降低了系统成本、体积和复杂度,提高了可靠性。传统的无传感器方法(如模型参考自适应、滑模观测器…

作者头像 李华
网站建设 2026/2/27 1:10:25

UEDITOR的ELECTRON版本如何优化WORD图片转存速度?

企业级Word导入与粘贴功能解决方案 作为安徽IT行业集团上市公司的项目负责人&#xff0c;针对文章中提出的需求&#xff0c;我将提供一套完整的解决方案。 一、需求分析与技术评估 核心需求总结 Word粘贴功能&#xff1a;支持从Word复制内容粘贴到编辑器中&#xff0c;自动…

作者头像 李华
网站建设 2026/2/26 19:01:53

终端渲染天花板:技术诗《永恒工具》

基于本质铸代码&#xff0c;囹圄效用展智慧。 笔记模板由python脚本于2026-01-27 12:38:48创建&#xff0c;本篇笔记适合终端渲染学习的coder翻阅。 学习的细节是欢悦的历程 博客的核心价值&#xff1a;在于输出思考与经验&#xff0c;而不仅仅是知识的简单复述。 Python官网&a…

作者头像 李华
网站建设 2026/2/26 5:07:57

springboot的高校安全治安管理系统-vue

目录 系统概述技术架构核心功能模块创新点应用价值 开发技术源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 系统概述 基于SpringBoot和Vue的高校安全治安管理系统是一个现代化、模块化的平台&#xff0c;旨在提升校园安全管理效率。系…

作者头像 李华
网站建设 2026/2/24 10:33:34

高频动效引发内存暴涨?

你可能遇到过这种场景: 测试同事说:“我就一直点按钮,点了五分钟,游戏内存从 800M 涨到 1.4G,然后啪一下闪退了。” 你一看代码: 没有疯狂 new 没有静态 List 疯狂堆对象 各种事件也都解绑了 GC 跑起来也正常 更离谱的是:只要人不操作,内存就相当稳定,一猛点就嗖嗖涨。…

作者头像 李华
网站建设 2026/2/25 4:36:36

mfc80d.dll文件丢失找不到 免费下载方法

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

作者头像 李华