Linux安装CoreDNS教程
本文详细介绍了在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学习网公众号!
Hyperf配置多Redis集群实例方法
- 上一篇
- Hyperf配置多Redis集群实例方法
- 下一篇
- HTML中使用SpeechRecognition API时,可以通过lang属性指定语音识别的目标语言。该属性接受一个表示语言代码的字符串,例如:en-US:美国英语zh-CN:简体中文es-ES:西班牙语(西班牙)fr-FR:法语(法国)示例代码
