【问题标题】:How do I resolve a DNS name for the same zone not found locally but that exists on another DNS server?如何解析本地未找到但存在于另一台 DNS 服务器上的同一区域的 DNS 名称?
【发布时间】:2013-09-09 11:13:25
【问题描述】:

我需要为一系列 Linux 容器运行本地 BIND DNS 服务器。假设区域是 example.com

我的基础架构中已经有一个 example.com 域,我想使用我的本地 DNS 服务器覆盖一些记录(它必须是 DNS 而不是本地主机)。

有没有办法告诉 BIND 检查我的本地 DNS 服务器,如果没有找到记录,请在另一台 DNS 服务器上查找同一区域的记录。

我尝试过设置转发器,但我认为这仅适用于不同的区域而不是同一个区域。

有什么想法吗?

【问题讨论】:

    标签: dns bind


    【解决方案1】:

    您可以使用允许覆盖通过绑定服务器查询的任何名称的响应策略区域(以下称为rpz)。

    路径指的是 Debian。

    在options 部分,/etc/bind/named.conf.options,添加:

    options {
        # Create a response-policy zone to allow overrides
        response-policy { zone "rpz"; };
    };
    

    在/etc/bind/named.conf.local 中添加rpz 区域:

    zone rpz {
        type master;
        file "/etc/bind/db.rpz";
        allow-query { none; };
    };
    

    最后,rpz 区域文件/etc/bind/db.rpz:

    ; BIND zone file for rpz zone
    ;
    $TTL    600
    @               SOA     localhost.        root.localhost. (
                                2017100300      ; Serial
                                86400           ; Refresh
                                10800           ; Retry
                                3600000         ; Expire
                                600             ; Negative Cache TTL
                        )
                NS      localhost.
    
    google.com      CNAME   forcesafesearch.google.com.
    example.com     A       192.0.2.123
    

    【讨论】:

      【解决方案2】:

      没有简单的方法可以做你想做的事。

      对于繁琐的解决方案,您可以为要在父区域内覆盖的每个 DNS 名称定义一个区域文件,例如:

      named.conf:

      zone "foo.domain" {
          type master;
          file "foo.domain";
      }
      
      zone "bar.domain" {
          type master;
          file "bar.domain";
      }
      

      foo.domain:

      foo.domain. SOA ...
                  NS  foo.domain.
                  A   1.2.3.4
      

      bar.domain:

      bar.domain. SOA ...
                  NS  foo.domain.
                  A   2.3.4.5
      

      【讨论】:

        【解决方案3】:

        您也可以尝试使用bind forwarders。 基本上,您的 DNS 服务器(如果它不知道答案)会向转发器请求 IP 解析。

        即:

        # vi /etc/bind/named.conf.options
        options {
              directory "/var/cache/bind";
        
              auth-nxdomain no; # conform to RFC1035
              listen-on-v6 { any; };
              listen-on { 127.0.0.1; 192.168.1.0/24; };
        
              forwarders {
                 10.138.27.194;
              };
        };
        

        【讨论】:

          猜你喜欢
          • 2010-10-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-02-09
          • 1970-01-01
          • 2017-04-19
          相关资源
          最近更新 更多