CoreDNS的安装教程

一、功能介绍

CoreDNS是一个灵活、可扩展的开源DNS服务器,它支持多种协议和后端存储,使其成为构建现代、可定制的DNS基础设施的理想选择。本文将介绍如何安装和配置CoreDNS,以便你可以快速搭建一个强大而稳定的DNS服务。

二、操作流程

  1. 下载 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
    
  2. 创建启动文件

    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

  3. 创建配置文件 Corefile

    首先创建文件夹用于存放配置文件

    mkdir /etc/coredns
    

    新建配置文件

    vi /etc/coredns/Corefile
    

    这是一个简单的配置,它使用114的公共DNS服务器进行域名解析,并启用了一些基本的插件。

    . {
        errors
        log
        health
        ready
        forward . 114.114.114.114
        cache
    }
    

    保存文件

  4. 确保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

  5. 设置开机自启动并启动 CoreDNS

    systemctl enable coredns
    systemctl start coredns
    

三、FAQ

问题1:配置后依旧无法访问怎么办? 回答1:检查 CoreDNS是否监听53端口,如果正常,请检查防火墙是否允许访问53端口。