![BIND9 - dig 无法从不同的服务器解析](https://linux22.com/image/773524/BIND9%20-%20dig%20%E6%97%A0%E6%B3%95%E4%BB%8E%E4%B8%8D%E5%90%8C%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%A7%A3%E6%9E%90.png)
$ 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 过滤后,一切都会按预期工作。