![递归绑定 DNS 服务器在云中工作,但不在 VM 中工作](https://linux22.com/image/773954/%E9%80%92%E5%BD%92%E7%BB%91%E5%AE%9A%20DNS%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%9C%A8%E4%BA%91%E4%B8%AD%E5%B7%A5%E4%BD%9C%EF%BC%8C%E4%BD%86%E4%B8%8D%E5%9C%A8%20VM%20%E4%B8%AD%E5%B7%A5%E4%BD%9C.png)
我正在使用 ansible 在云中以及我的工作站上的 VM(Virtualbox)中启动相同的服务器。该实例使用非面向公众的递归绑定 DNS 服务器来缓存查询,当它在云中时,它工作得很好,但在 VM 中时,它无法解决任何问题,我不知道为什么。以下是named.conf
...
# Bind9
options {
listen-on port 53 { 127.0.0.1; 10.1/16; 10.2/16; 10.3/16; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
secroots-file "/var/named/data/named.secroots";
recursing-file "/var/named/data/named.recursing";
allow-query { validated; };
auth-nxdomain no;
recursion yes;
max-cache-size 16m;
cleaning-interval 60;
max-cache-ttl 3600;
max-ncache-ttl 3600;
version "";
querylog no;
dnssec-enable yes;
dnssec-validation yes;
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
include "/etc/crypto-policies/back-ends/bind.config";
};
acl validated {
10.1.0.0/24;
10.2.0.0/24;
localhost;
localnets;
};
controls { };
logging {
channel default_syslog {
syslog daemon;
severity warning;
};
category default { default_syslog; };
category unmatched { null; };
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
机器 IP 在 192.168 范围内,conf 文件中的 10... 范围与机器上运行的 VPN 相关。该resolve.conf
文件指向127.0.0.1
。否则一切都很简单。
运行dig google.com
结果如SERVFAIL
您在此处所见...
; <<>> DiG 9.11.26-RedHat-9.11.26-6.el8 <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 59078
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 84042dfe2a471323626805ee61d1e76c742ad5196cf79d37 (good)
;; QUESTION SECTION:
;google.com. IN A
;; Query time: 832 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Jan 02 12:57:00 EST 2022
;; MSG SIZE rcvd: 67
我的感觉是,这与 Virtualbox 有关,因为相同的配置在云中有效。Vbox 是否以某种方式拦截 DNS 请求并且不提供正确的响应?不过,我正在使用 Bridge 网络,所以我的理解是,所有流量都被路由到网络,就好像这是一个独立实例一样,事实不是这样吗?
不确定它是否指向任何东西,但当我systemctl status named
在云机器上运行时一切看起来都很好,但是当我在虚拟机上运行它时,我看到错误......
... managed-keys-zone: No valid trust anchors for '.'!
... managed-keys-zone: 0 key(s) revoked, 1 still pending
... managed-keys-zone: All queries to '.' will fail
我不知道从哪里开始诊断,感谢您提供的任何帮助!
答案1
因此,经过进一步调查后发现,如果配置为 IPv6,BIND/named 似乎会首先尝试 IPv6,如果无法访问,则会完全失败,而不是根本尝试 IPv4。
就我而言,工作站上的 VM 没有 IPv6 连接,只是因为我当前的 ISP 尚不支持 IPv6……是的,在 2022 年,呃。因此,通过执行以下操作,您应该能够让您的 DNS 解析恢复在线状态。
在 中/etc/sysconfig/named
,添加...
OPTIONS="-4"
在 中/etc/named.conf
,添加...
filter-aaaa-on-v4 yes;
...如果存在,则注释掉以下内容
// listen-on-v6 port 53 { ::1; };
最后,named
使用重新启动systemctl restart named
。这对我有用,希望对你也有帮助。干杯!