一、功能介绍
CoreDNS是一个灵活、可扩展的开源DNS服务器,它支持多种协议和后端存储,使其成为构建现代、可定制的DNS基础设施的理想选择。本文将介绍如何安装和配置CoreDNS,以便你可以快速搭建一个强大而稳定的DNS服务。
二、操作流程
-
下载 CoreDNS 并将二进制文件放置到bin文件夹,这里我们以1.11.1为例,下载链接:Github
wget https://github.com/coredns/coredns/releases/download/v1.11.1/coredns_1.11.1_linux_amd64.tgz tar -xvf coredns_1.11.1_linux_amd64.tgz cd coredns_1.11.1_linux_amd64 cp coredns /usr/bin/coredns
-
创建启动文件
vi /etc/systemd/system/coredns.service
输入以下内容:
[Unit] Description=CoreDNS DNS server Documentation=https://coredns.io After=network.target [Service] PermissionsStartOnly=true LimitNOFILE=1048576 LimitNPROC=512 CapabilityBoundingSet=CAP_NET_BIND_SERVICE AmbientCapabilities=CAP_NET_BIND_SERVICE NoNewPrivileges=true User=root WorkingDirectory=~ ExecStart=/usr/bin/coredns -conf=/etc/coredns/Corefile ExecReload=/bin/kill -SIGUSR1 Restart=on-failure [Install] WantedBy=multi-user.target
保存完成后重载 systemd 配置:
systemctl daemon-reload
-
创建配置文件 Corefile
首先创建文件夹用于存放配置文件
mkdir /etc/coredns
新建配置文件
vi /etc/coredns/Corefile
这是一个简单的配置,它使用114的公共DNS服务器进行域名解析,并启用了一些基本的插件。
. { errors log health ready forward . 114.114.114.114 cache }
保存文件
-
确保53端口未被占用
lsof -i:53
dnsmasq 占用53端口(Centos 7常见) 首先查看状态是否启用 systemctl status dnsmasq.service。 若启用,先kill -9 端口号,停掉
systemctl stop dnsmasq.service
,后禁止开机启动systemctl disable dnsmasq.service
。 禁用后重启服务器测试,确保服务不会再起来。systemd-resolved 占用53端口(Ubuntu Server常见) 首先修改 /etc/systemd/resolved.conf,内容如下:
[Resolve] DNS=114.114.114.114 DNSStubListener=no
DNS 是配置本机指向的DNS服务器,建议配置运营商或者公共DNS。 DNSStubListener=no 是指不监听53端口。 配置完成后执行命令重启系统服务:
sudo systemctl daemon-reload
sudo systemctl restart systemd-resolved
查看/etc/resolv.conf 软链位置,执行命令ll /etc/resolv.conf
,如果软链显示如下,则不需要改动:/etc/resolv.conf -> /run/systemd/resolve/resolv.conf
,否则设置软链sudo ln -s -f /run/systemd/resolve/resolv.conf /etc/resolv.conf
。 -
设置开机自启动并启动 CoreDNS
systemctl enable coredns systemctl start coredns
三、FAQ
问题1:配置后依旧无法访问怎么办? 回答1:检查 CoreDNS是否监听53端口,如果正常,请检查防火墙是否允许访问53端口。