配置 DNS 以远程解析根域并在本地解析子域

配置 DNS 以远程解析根域并在本地解析子域

假设我拥有域名example.com,并在 的外部服务器上托管一个网站http://example.com,该网站也可以从 访问http://www.example.com

我想在 运行我的本地 OwnCloud 实例http://cloud.example.com,该实例应该可以在本地和远程访问。为了使它可以通过我自己的网络中的 LAN 访问,我设置了一个本地 BIND 服务器,该服务器解析cloud.example.com为服务器的本地 IP 地址。但是,由于这是唯一的服务器,因此浏览 会http://example.com解析为同一台机器而不是远程网站。

我如何设置我的 BIND 服务器来执行以下操作?

  • cloud.example.com从 LAN访问应解析为本地 IP
  • cloud.example.com通过互联网访问应该可以工作(将使用动态 DNS)
  • 浏览LANhttp://example.comhttp://www.example.comInternet 时应显示外部托管的网站

我对 DNS 实现还不太熟悉,所以如果需要的话,我很乐意阅读手册。谢谢。

答案1

您需要 BIND 中的视图功能。如果您满意,这里isc 知识库文章是否有示例:

# named.example02.conf

acl trusted { 192.168.7.0/24; localhost; };
acl guest   { 192.168.8.0/24; };

view trusted {
    match-clients { trusted; };

    allow-recursion { any; };

    zone "myzone.example" {
        type master;
        file "trusted/db.myzone.example";
    };
    zone "7.168.192.in-addr.arpa" {
        type master;
        file "trusted/db.192.168.7";
    };
};

view guest {
    match-clients { guest; };

    allow-recursion { any; };

    zone "myzone.example" {
        type master;
        file "guest/db.myzone.example";
    };
};

正如您所见,上面将从和myzone.example读取,但区域将从另一个文件读取。trusted/db.myzone.example192.168.7.0/24localhost192.168.8.0/24

答案2

我通过将远程 DNS 上的相同 A 记录复制到本地 DNS 服务器来解决这个问题。由于存在一些重复,因此并非 100% 理想,但这些记录很可能永远不会改变。

相关内容