假设我拥有域名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访问应解析为本地 IPcloud.example.com
通过互联网访问应该可以工作(将使用动态 DNS)- 浏览LAN
http://example.com
或http://www.example.com
Internet 时应显示外部托管的网站
我对 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.example
192.168.7.0/24
localhost
192.168.8.0/24
答案2
我通过将远程 DNS 上的相同 A 记录复制到本地 DNS 服务器来解决这个问题。由于存在一些重复,因此并非 100% 理想,但这些记录很可能永远不会改变。