当从内部网络和外部网络解析时,如何使域名解析为不同的IP?

当从内部网络和外部网络解析时,如何使域名解析为不同的IP?

因此我查看了 BIND 和 Dnsmasq,但无法解决这个问题。

我在 DigitalOcean 上有几台服务器,它们位于同一个数据中心。我希望能够使用内部 IP 来获得更好的网络内 ping 和(显然,免费的私有网络流量)。给定以下两台服务器:

Name   Public IP          Private IP
srv1   192.0.2.1          10.10.10.1
srv2   198.51.100.2       10.10.10.2

当从外部网络挖掘时(比如我的笔记本电脑),我想要这样的东西

account.codingblocks.com. 79    IN  CNAME   srv2.cb.lk.
srv2.cb.lk.               85844 IN  A       198.51.100.2

当从 srv1 内部挖掘时,我想要的是这个

account.codingblocks.com. 79    IN  CNAME   srv2.cb.lk.
srv2.cb.lk.               85844 IN  A       10.10.10.2

这可能吗?如果可以,怎么做?

答案1

在 BIND 9 中,您可以定义多个“视图”:实际上,BIND 向指定客户端显示 DNS 区域的一个版本,向其他客户端显示另一个版本。这似乎正是您所需要的。

以下是关于在 BIND 9 中使用视图的精彩介绍: https://kb.isc.org/article/AA-00851/0/Understanding-views-in-BIND-9-by-example.html

不过,就你的情况而言,外部的观点是:

match-clients { any; };

而不是指定任何网络段。

答案2

至少有 3 个解决方案:

  • 您可以使用 /etc/hosts 来覆盖 DNS 答案
  • 您可以使用第二个 tld,例如 account.codingblocks.com 将提供 222.222.222.222 而 account.example.mytld 将提供 10.10.10.2
  • 您可以拥有 2 个不同的 DNS 服务器(一个是私有的,内部的,另一个是公共的),它们会产生不同的结果。

相关内容