Domain-Name-System

Bind9 中的區域已成功載入。如何調試?Ubuntu

  • March 11, 2019

我是這個 SysAdmin-things 的新手。

我在 Ubuntu Server 18 上安裝了 Bind9 ( apt-get install bind9)。我配置了轉發,設置了區域。但它不起作用。

日誌顯示新區域已啟動。

當我 ping 或主機ns.ubuntu.local時,它說:ping: ns.ubuntu.local: Temporary failure in name resolution

我怎樣才能知道,我錯過了什麼?

日誌:

Mär 11 08:18:42 server named[4201]: managed-keys-zone: loaded serial 21
Mär 11 08:18:42 server named[4201]: zone 0.in-addr.arpa/IN: loaded serial 1
Mär 11 08:18:42 server named[4201]: zone 127.in-addr.arpa/IN: loaded serial 1
Mär 11 08:18:42 server named[4201]: zone 255.in-addr.arpa/IN: loaded serial 1
Mär 11 08:18:42 server named[4201]: zone ubuntu.local/IN: loaded serial 1
Mär 11 08:18:42 server named[4201]: zone localhost/IN: loaded serial 2
Mär 11 08:18:42 server named[4201]: all zones loaded

我的named.conf.options

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;
           8.8.4.4;
       };

       //========================================================================
       // 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
       //========================================================================
       listen-on { any; };
       allow-query { any; };
       recursion yes;
       dnssec-validation auto;

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

我的named-conf.local

//
// Do any local configuration here
//
zone "ubuntu.local" {
   type master;
   file "/etc/bind/zones/db.ubuntu.local";
};

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";

我的zones/db.ubuntu.local

;
; BIND data file for local loopback interface
;
$TTL    604800
@       IN      SOA     ns.ubuntu.local. root.ubuntu.local. (
                             1         ; Serial
                        604800         ; Refresh
                         86400         ; Retry
                       2419200         ; Expire
                        604800 )       ; Negative Cache TTL
;
@       IN      NS      ns.ubuntu.local.
ns      IN      A       192.168.2.10
www     IN      A       102.168.2.10

基於您提到名稱伺服器在您的 127.0.0.53 中設置的事實/etc/resolv.conf,這意味著 systemd 正在為您處理名稱解析。為了快速分解該行的含義,name server 127.0.0.53意味著使用正在偵聽該 IP 地址的名稱伺服器,在這種情況下,它是 systemd-resolved。支持擴展 DNS 選項的options edns0意思是允許更大的 UDP 數據包大小,您無需擔心這裡。

有兩種可能的解決方法。第一個是修復 systemd-resolved,使其指向在您的伺服器上執行的 Bind9 實例。您可以通過 a) 編輯 /etc/systemd/resolved.conf 來做到這一點,因此它會說類似於以下內容:

[Resolve]
DNS=127.0.0.1

它可能8.8.8.8在裡面。/etc/systemd/network/或者 b)使用.network副檔名配置 systemd 解析的配置文件。創建一個類似的文件50-mydns.network,並在其中放入:

[Match]
Name=eth0 # Your interface name

[Network]
DNS=127.0.0.1

如果您不確定界面,您可以隨時進行systemd-resolve --status,並且應該在此處列出。一旦完成了這些選項中的任何一個,請使用以下命令重新啟動 systemd-resolved:

sudo systemctl restart systemd-resolved`.

第二個選項是禁用 systemd-resolved 並安裝 resolvconf 執行以下操作:

sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved
sudo apt install resolvconf

然後查看/etc/resolvconf/resolv.conf.d/base並將名稱伺服器行更新為nameserver 127.0.0.1. 完成後,您可以使用以下命令重新啟動 resolvconf:

sudo systemctl restart resolvconf

在這些選項中的任何一個之後,您應該看到您/etc/resolv.conf現在擁有配置中定義的名稱伺服器,並且您的 DNS 查找應該使用您的本地綁定。如果命令有效,您沒有在評論中提及dig,但我會假設他們確實有效。

引用自:https://serverfault.com/questions/957694