在 Centos 7 上的 resolv.conf 中指定 localhost 时 DNS 解析不起作用

在 Centos 7 上的 resolv.conf 中指定 localhost 时 DNS 解析不起作用

我有这样一个 /etc/resolv.conf:

# Generated by NetworkManager
search mydom.com-local site
nameserver 127.0.0.1
nameserver 10.11.12.13
nameserver 8.8.8.8

如果我搜索具有域名的主机只有公司的 DNS 服务器知道(这里是 10.11.12.13),如果我使用命令“host”,它不起作用:

# host myhost.mycompany.grp    
Host myhost.mycompany.grp not found: 3(NXDOMAIN)

但是如果我在 resolv.conf 中注释掉名称服务器 127.0.0.1

# Generated by NetworkManager
search mydom.com-local site
#nameserver 127.0.0.1
nameserver 10.11.12.13
nameserver 8.8.8.8

它立即起作用:

# host myhost.mycompany.grp
myhost.mycompany.grp has address 10.55.66.77

看起来“名称服务器 127.0.0.1”没有将外部区域的请求转发到其他 DNS 服务器。

我不使用 dnsmasq(我也不想使用)。我在 named.conf 中尝试了很多选项,但都没有成功。

我的named.conf:

options {
    check-names master warn;
    directory "/var/named";
    dump-file "/var/log/named_dump.db";
    include "/etc/named/forwarders.conf";
    listen-on-v6 { any; };
    notify no;
    statistics-file "/var/log/named.stats";
    empty-zones-enable no;

    recursion yes;

    dnssec-enable yes;
    dnssec-validation yes;

    /* Path to ISC DLV key */
    bindkeys-file "/etc/named.iscdlv.key";

    managed-keys-directory "/var/named/dynamic";

    pid-file "/run/named/named.pid";
    session-keyfile "/run/named/session.key";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "appdom.com-local" in {
    type master;
    file "master/appdom.com-local.zone";
    allow-transfer { any; };
};
zone "in-addr.arpa" in {
    type master;
    file "master/appdom.com-local_reverse.zone";
    allow-transfer { any; };
};

zone "." IN {
        type hint;
        file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

我的 /etc/named/forwarders.conf:

forwarders { 10.11.12.13; 8.8.8.8; };

我已将命名(rndc trace 1000)置于调试模式:我没有在跟踪中看到命名试图将请求转发到 10.11.12.13。

我的本地名称服务器上的转发有什么问题?

答案1

虽然我很难判断,因为您正在使用其中一个 BIND 安装,它将配置分散到许多小文件中(并且因为您没有告诉我们您正在尝试做什么,只告诉我们您如何尝试去做),但我怀疑您想要做的是基于每个区域进行转发(因为我做的也是同样的事情)。

这有两种情况:本地 BIND 应解决除应继续发送的某些区域的查询之外的所有问题,本地 BIND 应仅解决某些区域的查询,而其他所有区域均应继续发送。对于前者,请尝试

zone "example.org" {
        type forward;
        forward first;
        forwarders {
                10.11.12.13 ;
        } ;
} ;

如果你选择后者,请删除区域的提示.- 如果你的本地服务器可以解析一切,为什么它需要转发查询?

答案2

我终于找到了解决办法,

激活查询日志记录(rndc querylog)后,我能够在消息中看到:

error (insecurity proof failed) resolving 'myhost.mycompany.grp/A/IN': 10.11.12.13#53

我停用了 DNSSEC 验证:

dnssec-validation no;

然后我遇到了一个非常奇怪的行为,比如转发器 IP 以循环方式使用:有时主机被解析,有时不解析(仅从第一个 IP 可以知道主机)

通过仅将第一个 IP 放入转发器中,它现在就可以工作了。

如果可能的话,我会尽快尝试在转发器 IP 上添加一些优先级。

所以,现在它更多的是一个 DNSSEC 问题,我稍后会处理它。

相关内容