Linux安装CoreDNS教程
时间:2026-05-25 17:10:12 417浏览 收藏
本文详细介绍了在Linux系统上安装与配置CoreDNS的两种主流方式——直接下载预编译二进制和通过Go源码编译,并指导用户编写精简高效的Corefile配置文件,最后以systemd服务形式实现稳定、自动化的DNS服务部署;无论你是追求轻量可控的运维人员,还是需要高度定制化DNS功能的开发者,这篇实操性强、步骤清晰的教程都能助你快速搭建一个现代、高性能且易于维护的DNS解析服务。

如果您需要在Linux系统上部署轻量、高性能的DNS服务,CoreDNS是一个现代且可扩展的选择。以下是安装与配置CoreDNS的具体操作步骤:
一、使用包管理器安装CoreDNS
CoreDNS官方不提供主流发行版的原生包,但可通过二进制下载或第三方仓库安装。部分Linux发行版(如Arch Linux)已将CoreDNS纳入AUR或社区仓库;其他系统推荐直接获取预编译二进制文件,确保版本可控且无依赖冲突。
1、打开终端,创建专用目录并进入:
mkdir -p /opt/coredns && cd /opt/coredns
2、下载最新稳定版CoreDNS二进制文件(以v1.11.3为例):
wget https://github.com/coredns/coredns/releases/download/v1.11.3/coredns_1.11.3_linux_amd64.tgz
3、解压并提取coredns可执行文件:
tar -xzf coredns_1.11.3_linux_amd64.tgz
4、赋予执行权限:
chmod +x coredns
5、验证是否可运行:
./coredns -version
二、通过Go环境源码编译安装
该方式适用于需定制插件、调试底层行为或运行非x86_64架构的场景。编译过程生成静态链接二进制,不依赖系统glibc,兼容性更强。
1、确认已安装Go 1.20或更高版本:
go version
2、克隆CoreDNS官方代码仓库:
git clone https://github.com/coredns/coredns.git && cd coredns
3、检出稳定发布标签(例如v1.11.3):
git checkout v1.11.3
4、执行编译:
go build
5、检查生成的二进制文件:
ls -l coredns
三、配置CoreDNS基础服务文件
CoreDNS通过纯文本Corefile定义服务行为,包括监听地址、插件启用顺序及区域策略。默认配置支持本地解析与上游转发,无需额外依赖数据库或区域文件。
1、在/opt/coredns/目录下创建Corefile配置文件:
touch Corefile
2、写入最小可用配置(监听53端口,启用log和health插件,转发所有查询至114.114.114.114):
echo -e ". {\n log\n health\n forward . 114.114.114.114\n}" > Corefile
3、测试配置语法是否合法:
./coredns -validate -conf Corefile
4、若输出Corefile is valid,表示配置无误。
四、以Systemd服务方式运行CoreDNS
将CoreDNS注册为systemd服务可实现开机自启、进程守护与日志集成,符合生产环境管理规范。
1、创建systemd单元文件:
sudo tee /etc/systemd/system/coredns.service [Unit]
Description=CoreDNS DNS server
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/coredns
ExecStart=/opt/coredns/coredns -conf /opt/coredns/Corefile
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
2、重载systemd配置:
sudo systemctl daemon-reload
3、启用并启动服务:
sudo systemctl enable coredns
sudo systemctl start coredns
4、检查服务状态是否为active (running):
sudo systemctl status coredns
五、配置客户端指向CoreDNS服务器
使本机或其他局域网设备将DNS查询发送至刚部署的CoreDNS实例,需修改其resolv.conf或网络接口配置,确保DNS请求路径生效。
1、临时修改当前会话DNS(仅限本机测试):
echo "nameserver 127.0.0.1" | sudo tee /etc/resolv.conf
2、验证解析功能是否正常:
dig @127.0.0.1 google.com +short
3、若返回IP地址,说明CoreDNS已响应查询;若超时或报错,请确认防火墙未拦截UDP/TCP 53端口:
sudo ss -tuln | grep :53
4、如使用firewalld,放行DNS服务:
sudo firewall-cmd --permanent --add-service=dns
sudo firewall-cmd --reload
本篇关于《Linux安装CoreDNS教程》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于文章的相关知识,请关注golang学习网公众号!
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
417 收藏
-
231 收藏
-
386 收藏
-
230 收藏
-
467 收藏
-
393 收藏
-
189 收藏
-
246 收藏
-
186 收藏
-
417 收藏
-
356 收藏
-
147 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习