背景

服务器上 systemd-resolved 经常挂掉,导致无法解析域名,排查问题无果遂决定使用 bind 替代 systemd-resolved

安装 bind

sudo apt update
sudo apt install bind9

编辑配置文件

编辑 bind 配置文件 /etc/bind/named.conf.options , 配置上游 dns 服务器 forwarders { 8.8.8.8;}; 及监听地址 listen-on { any; }; ,最终配置文件如下:

options {
        directory "/var/cache/bind";

        // If there is a firewall between you and nameservers you want
        // to talk to, you may need to fix the firewall to allow multiple
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113

        // If your ISP provided one or more IP addresses for stable
        // nameservers, you probably want to use them as forwarders.
        // Uncomment the following block, and insert the addresses replacing
        // the all-0's placeholder.

        forwarders {
            8.8.8.8;
        };

        //========================================================================
        // If BIND logs error messages about the root key being expired,
        // you will need to update your keys.  See https://www.isc.org/bind-keys
        //========================================================================
        dnssec-validation auto;

        auth-nxdomain no;    # conform to RFC1035
        listen-on { any; };
        listen-on-v6 { any; };
};

启用 bind 服务

# 禁用 systemd-resolved
sudo systemctl disable systemd-resolved.service
# 启用 bind
sudo systemctl enable bind9 --now