DNS:将子域名的解析委托给另一个名称服务器

DNS:将子域名的解析委托给另一个名称服务器

我正在家里设置 DNS 服务器,以便更轻松地为一些本地服务器设置别名,同时也是为了更好地理解 DNS。由于我是新手,请原谅(并纠正)任何术语错误!

我的本地 DNS 服务器的目的是使用我的域名来访问我的一些本地机器。假设我的域名是my-domain.com。我家里有一个媒体服务器,我想以 的身份访问它media.my-domain.com,并且我有两个本地 DNS 服务器用于此目的。这些 DNS 服务器将其他查询委托给 Google DNS。

这是我的区域文件my-domain.com,存储在/etc/bind/zones/db.my-domain.com我的本地 DNS 服务器上ns1

;
; BIND data file for local loopback interface
;
$TTL    604800
@   IN  SOA ns1.my-domain.com. admin.my-domain.com. (
                  3     ; Serial
             604800     ; Refresh
              86400     ; Retry
            2419200     ; Expire
             604800 )   ; Negative Cache TTL
;
; name servers - NS records
@   IN  NS  ns1.my-domain.com.
@   IN  NS  ns2.my-domain.com.
;
; name servers - A records
ns1.my-domain.com.  IN  A   10.55.55.55
ns2.my-domain.com.  IN  A   10.55.55.56
;
; 10.55.55.0/24 - A records
media.my-domain.com.    IN  A   10.55.55.100

/etc/bind/named.conf.options这是存储在我的本地 DNS 服务器上的选项文件ns1

acl "trusted" {
    10.55.55.0/24; # home network
};
options {
    directory "/var/cache/bind";

    recursion yes;
    allow-recursion { trusted; };
    listen-on { 10.55.55.55; };
    allow-transfer {none; }; # disable zone transfers

    forwarders {
        8.8.8.8; # google1
        8.8.4.4; # google2
    };

    //========================================================================
    // If BIND logs error messages about the root key being expired,
    // you will need to update your keys.  See https://www.isc.org/bind-keys
    //========================================================================
    dnssec-validation auto;

    auth-nxdomain no;    # conform to RFC1035
    listen-on-v6 { any; };
};

10.55.55.0/24是我的本地子网,和ns1分别ns2是我的主 DNS 服务器和辅助 DNS 服务器。

my-domain.com在互联网上将其用于其他目的,因此例如当我访问时,admin.my-domain.com它会将我带到一个公开可见的网站的管理控制台。这意味着,如果您从 Google 的 DNS 服务器执行nslookupon admin.my-domain.com,您将看到它映射到一个全球可访问的公共 IP 地址。

不幸的是,在我实施本地 DNS 服务器后,我无法admin.my-domain.com正确解析。我的nslookup请求到达了本地 DNS 服务器,但这些服务器未针对此子域进行配置,因此本地 DNS 给出“无响应”的提示。

相反,我希望我的 DNS 服务器将 的请求转发my-domain.com到 Google DNS,并仅提供 、 和 的答案。我看到了一些与我的问题类似的问题,但答案往往是为每个子域创建一个区域文件。这真的是唯一的方法吗?我真的很想说,“如果我为ns1.my-domain.com指定ns2.my-domain.commedia.my-domain.com规则,那么就x.my-domain.com遵循该规则。否则,将链委托给上级(在我的情况下是委托给 Google DNS)。”

我不确定如何使用 Google 来解决这个问题,因为我对术语不是很了解,而且由于我是个菜鸟,我不知道从哪里开始自己修复它。我所要求的可能吗?任何关于如何实现此行为或搜索此行为的帮助都将不胜感激。谢谢!

答案1

问题在于,您将 Bi​​nd 配置为对整个 具有权威性example.com

因此,您必须配置本地 Bind 以不仅保存内部 DNS 记录,而且还保存区域文件中所有公共 DNS 记录的副本example.com

或者,不要让 Bind 对您具有权威性,而是example.com保留 example.com 的子域供您内部使用,而是让您的内部 DNS 仅对此具有权威性。即创建一个名为的区域home.example.com并使用media.home.example.com。这样,您的内部和公共 DNS 中就不会出现冲突的记录。

相关内容