因此我查看了 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 服务器(一个是私有的,内部的,另一个是公共的),它们会产生不同的结果。