BIND9 - dig 无法从不同的服务器解析

BIND9 - dig 无法从不同的服务器解析
$ 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 '^]'.

现在,当我sudo systemctl restart bind9在 server01 上重新启动时,它会在 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],无法从另一台机器进行挖掘,但可以在本地进行挖掘但这并不能解决我的问题

答案1

telnet使用 TCP 而 DNS(dig)默认使用 UDP 但也使用 TCP,这种差异可以解释您观察到的情况。

尝试dig +tcp强制建立 TCP 连接,它可能会成功,这证明您在某个不应该的地方过滤 UDP。

删除系统中的 UDP 过滤后,一切都会按预期工作。

相关内容