$ 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 上工作,但从不同的服务器它不起作用
我查看了 - Internal DNS Setup [Bind9] ,无法从另一台机器挖掘,但能够在本地挖掘,但这并不能解决我的问题
telnet
使用 TCP 而 DNS (dig
) 默认使用 UDP 但也使用 TCP,这种差异可以解释您观察到的情况。尝试
dig +tcp
强制 TCP 连接,它可能会成功,证明您在不应该的地方过滤 UDP。在您的系统中删除对 UDP 的过滤,一切都应该开始按预期工作。