Domain-Name-System

BIND9 - dig 無法從不同的伺服器解析

  • December 29, 2021
$ named -v
BIND 9.16.1-Ubuntu (Stable Release) <id:d497c32>

我在 digitalocean nyc1 中配置了 3 台伺服器,它們都在同一個子網中

在 server01 上 - 我已經安裝了 bind9 並配置了區域,效果很好

server01 $ dig @10.116.16.2 -p 53 ns1.prod.nyc1.example

...
;; ANSWER SECTION:
ns1.prod.nyc1.example. 43200    IN  A   10.116.16.2

當我在 server01 上時,這很好用

來自 server02(也在同一個子網中)

server02 $ dig @10.116.16.2 -p 53 ns1.prod.nyc1.example

; <<>> DiG 9.16.1-Ubuntu <<>> @10.116.16.2 -p 53 ns1.prod.nyc1.example
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached

但是我可以從 server02 telnet 到它

server02 $ telnet 10.116.16.2 53
Trying 10.116.16.2...
Connected to 10.116.16.2.
Escape character is '^]'.

現在當我在 server01 上重新啟動sudo systemctl restart bind9時,它在 server02 上斷開連接

這裡是/etc/bind/named.conf.options

options {
       directory "/var/cache/bind";
       recursion yes;
       listen-on port 53 { any; };
       allow-query { any; };
       allow-recursion { any; };


       dnssec-enable no;
       dnssec-validation no;

       auth-nxdomain no;    # conform to RFC1035
};

include "/etc/bind/consul.conf";

我究竟做錯了什麼?查找在 server01 上工作,但從不同的伺服器它不起作用

我看了 -內部 DNS 設置$$ Bind9 $$,無法從另一台機器探勘,但能夠在本地探勘,但這並不能解決我的問題

telnet使用 TCP 而 DNS ( dig) 預設使用 UDP 但也使用 TCP,這種差異可以解釋您觀察到的情況。

嘗試dig +tcp強制 TCP 連接,它可能會成功,證明您在不應該的地方過濾 UDP。

在您的系統中刪除對 UDP 的過濾,一切都應該開始按預期工作。

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