使用 bind9 时 systemd-resolve 无法解析主机名

使用 bind9 时 systemd-resolve 无法解析主机名

我正在运行 Ubuntu 20.04。我在 docker 容器内进行了设置bind9,我想将其用作 dns 服务器。容器运行良好,如果使用 进行查询,它将正确解析dig

dig在主机上运行(而不是在容器内部运行):

dig @localhost google.com +short
142.250.185.78

bind9 也能正确解析我自己的区域(示例):

dig @localhost myexample.com +short
213.133.98.98

我面临的问题是systemd-resolve无法使用bind9其 DNS:

ping google.com
ping: google.com: Temporary failure in name resolution

我配置/etc/systemd/resolved.conf为使用 localhost 作为 DNS,我必须禁用 DNSStubListener,因为它会堵塞端口 53:

[Resolve]
DNS=127.0.0.1
DNSStubListener=no

我还设置/etc/netplan/00-config.yaml使用 localhost 作为名称服务器:

network:
  nameservers:
    addresses:
      - 127.0.0.1

运行systemd-resolve --status后输出如下,表明 localhost 正在用作 DNS:

Global
       LLMNR setting: no                  
MulticastDNS setting: no                  
  DNSOverTLS setting: no                  
      DNSSEC setting: no                  
    DNSSEC supported: no                  
         DNS Servers: 127.0.0.1   
  
Link 2 (enp1s0)
      Current Scopes: DNS            
DefaultRoute setting: yes            
       LLMNR setting: yes            
MulticastDNS setting: no             
  DNSOverTLS setting: no             
      DNSSEC setting: no             
    DNSSEC supported: no             
         DNS Servers: 127.0.0.1        

那么为什么我无法解析主机名,例如使用ping?bind9 dns 工作正常,如果直接通过 寻址,它将正确解析dig @localhost。还systemd-resolve配置为通过 localhost 解析但失败了。

答案1

我通过删除以下内容解决了这个问题systemd-resolved

systemctl disable systemd-resolved.service
systemctl stop systemd-resolved

相关内容