应用程序堆栈有多个组件。例如 api、公共应用程序和内部应用程序。我想让内部应用程序只能从内部网络 IP 范围访问。我将 nginx(反向代理)配置为仅允许某些 IP 范围(例如 192.168.1.0/24)。我使用的域名是:mydomain.com

假设内部应用程序正在使用子域名app.mydomain.com
下还有一个网站(在外部运行),
(www.)mydomain.com
外部 DNS(授权机构)配置为指向我的服务器的公共静态 IP,这是公共 API(例如
api.mydomain.com)所需要的。

但在本地网络(包括 VPN)上,我想在内部引导流量。例如,PC 应该使用本地 IP 而不是公共 IP,这样 nginx 反向代理才会允许那些具有本地 IP 的 PC。为此,我正在配置还运行 DNS 服务器的 Windows AD 服务器。我正在尝试配置此 DNS 以将网络中的计算机引导到本地网络上的服务器。

当我尝试为 mydomain.com 定义一个主要区域,并为 app.mydomain.com 定义一个条目以指向内部服务器地址时,nslookup app.mydomain.com会返回本地 IP,但mydomain.com不再www.mydomain.com起作用。

有没有办法将所有其他子域指向外部 DNS(权威)?

当我尝试配置辅助区域时,传输失败。我认为权威机构(外部 DNS)不允许我这样做。

我想知道如何才能实现这一点?


最佳答案
1

您可以通过创建一个名为的主要区域app.mydomain.com并在其中创建一个指向服务器内部 IP 地址的 A记录来实现此目的;这是因为空记录与区域本身的名称匹配,而不是其中的实际主机名。

这样,DNS 服务器将只认为自己对该app.mydomain.com区域具有权威性,而对更高级别的mydomain.com区域则不具有权威性;因此,对区域中所有其他内容的查询都将以标准方式解析(从根服务器递归或转发器(如果配置))。

1

  • 这有效。我最初的问题中没有问,但 DNS 中还有另一个子域。所有计算机在另一个子域下都有另一个名称。空白的“A”记录有效,但空白的 CNAME 无效。我发现区域的根不能是 CNAME。我现在会坚持使用 A 记录,但 CNAME 会更方便。


    –