AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 771985
Accepted
Delfin
Delfin
Asked: 2024-03-10 12:21:13 +0800 CST2024-03-10 12:21:13 +0800 CST 2024-03-10 12:21:13 +0800 CST

BIND9 作为 DNS 服务器无法回退未定义到公共 DNS 的方向

  • 772

设置

我有一个容器化的命名服务,它通过以下容器文件获得了自己的 IP

FROM alpine:latest
RUN apk --no-cache add bind bind-tools bind-dnssec-tools bind-dnssec-root

COPY --chmod=500 --chown=root:root init.sh /usr/sbin/init

COPY --chmod=444 --chown=root:root bindetc/named.conf /etc/bind/named.conf

RUN chmod 770 /var/bind
RUN chown root:named /var/bind

COPY --chmod=440 --chown=root:named bindetc/direct.db /var/bind/direct.db
COPY --chmod=440 --chown=root:named bindetc/reverse.db /var/bind/reverse.db

VOLUME "/var/bind"
EXPOSE 53/tcp 53/udp
CMD /usr/sbin/named -f -g -u named

我混合了权威服务器和递归服务器,配置如下 bindetec/named.conf

acl LAN {
  192.168.0.0/24;
}

options {
  directory "/var/bind";

  allow-recursion {
    192.168.0.0/24;
    127.0.0.1/32; // localhost      
  };

  forwarders {          
    1.1.1.1; // Cloudflare
    208.67.222.222; // OpenDNS
  };

  listen-on { 192.168.0.136; 127.0.0.1; };
  listen-on-v6 { none; };

  allow-transfer port 53 { 192.168.0.136; 0.0.0.0; };
  allow-query { localhost; LAN; };

  recursion yes;

  pid-file "/var/run/named/named.pid";
  dump-file "/var/bind/data/cache_dump.db";
  statistics-file "/var/bind/data/named_stats.txt";
  memstatistics-file "/var/bind/data/named_mem_stats.txt";
};

zone "." IN {
  type master;
  file "/var/bind/direct.db";
  allow-update { none; };
};

zone "in-addr.arpa" IN {
  type master;
  file "/var/bind/reverse.db";
  allow-update { none; };
};

具有以下内容bindetc/direct.db:

$TTL 3600
$ORIGIN intranet.domain.
@ IN SOA ns1.intranet.domain. postmaster.intranet.domain. (909090 9000 900 604800 1800)

@ IN NS ns1.intranet.domain.

ns1    IN A 192.168.0.136

以及以下内容bindetc/reverse.db:

$TTL 604800
@ IN SOA ns1.intranet.domain. postmaster.intranet.domain. (909090 9000 900 604800 1800)

@   IN NS ns1.intranet.domain.

136.0.168.192   IN PTR ns1.intranet.domain.

容器的IP是192.168.0.136。

问题

当尝试解析任何公共 DNS 记录时,例如,google.com它会给出如下所示的基本空响应,而不是询问 Cloudflare 或 OpenDNS 此类 DNS 记录的 IP 是什么。


; <<>> DiG 9.16.44 <<>> google.com @192.168.0.136
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 27326
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 1f5514b62f24a19b0100000065ed3501a3ae047abe73afef (good)
;; QUESTION SECTION:
;google.com.            IN  A

;; Query time: 48 msec
;; SERVER: 192.168.0.136#53(192.168.0.136)
;; WHEN: Sat Mar 09 22:20:17 CST 2024
;; MSG SIZE  rcvd: 67
bind9
  • 1 1 个回答
  • 12 Views

1 个回答

  • Voted
  1. Best Answer
    telcoM
    2024-03-10T13:32:03+08:002024-03-10T13:32:03+08:00

    该dig命令表明您的 BIND 正在响应SERVFAIL错误代码,因此它可能认为您的配置存在致命错误。您确实应该查看 BIND 生成的日志消息。

    您的区域声明zone "." IN指定您的 BIND 用于type masterDNS 根区域,因此您实际上是在告诉 BIND 它已经知道现有的所有顶级域。那么,当它已经知道不存在“.com”这样的顶级域名时,为什么还要向其他人询问“google.com”呢?

    除非您确实想为自己声明一个单独的 DNS 世界,或者实际上正在维护根名称服务器,否则您永远不应该将您的名称服务器配置为masterof zone "."。

    根区域的更正常声明可能是:

    // prime the server with knowledge of the root servers
    zone "." {
            type hint;
            file "/usr/share/dns/root.hints";
    };
    

    其中/usr/share/dns/root.hints是根 DNS 服务器的标准列表,可从https://www.internic.net/domain/named.cache获取。启动时,BIND 将使用此列表联系根名称服务器之一,以获得同一列表的绝对最新版本。

    因为您计划使用转发器,所以您也可以完全省略它:如果您不指定,BIND 将使用其内置的根 DNS 服务器列表。of只是一种在内置列表过时时替换它的方法zone "."。type hint

    由于您的 BIND 应该向转发器发送对它不具有权威性的任何区域的查询,因此您不需要关心 BIND 是否具有最新的根名称服务器列表。

    如果您不希望 BIND 在转发器没有响应的情况下开始尝试自行联系其他名称服务器,您可能需要将该行添加forward only;到options{ ... };您的配置段中。

    您应该将您的intranet.domain前区声明为:

    zone "intranet.domain" IN {
      type master;
      file "/var/bind/direct.db";
      allow-update { none; };
    };
    

    既然你有allow-query { localhost; LAN; };,你可能也应该在某个地方有一个acl LAN { ... };块。

    • 1

相关问题

  • 使用 Bind9 进行正向反向查找

  • bind9 - 超时解决

  • 如何为 certbot 插件“certbot-dns-rfc2136”生成 TSIG 密钥

  • BIND9 DNS 区域文件检查显示“忽略区域外数据”

  • bind9反向解决问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve