递归绑定 DNS 服务器在云中工作,但不在 VM 中工作

递归绑定 DNS 服务器在云中工作,但不在 VM 中工作

我正在使用 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。这对我有用,希望对你也有帮助。干杯!

相关内容