我正在尝试为我的 DNS 问题寻找最佳解决方案。我们公司正在运行一些只能通过 VPN 访问的服务。其他可通过互联网访问的服务都拥有域名...目前 VPN 网络内的所有服务都通过 .local 访问...这些服务的 VPN IP 为专用网络 192.168.252.0/24。客户端通过 OSX 从 Linux 访问到 Windows。
我可以想到 4 种实现 DNS 基础设施的可能性:
最常见的是:由 VPN 推送的内部 DNS 服务器。但这有几个缺点:您的 DNS 响应受限于 VPN 连接和您自己的 DNS 服务器的速度。由于网站非常复杂,这会增加页面加载时间。另外:我们有几个彼此不连接的 VPN,它们都有自己的 DNS 服务器。
本地有多个 DNS 服务器。这些必须手动配置。而且您必须使用一些第三方工具,例如
dnsmasq
。如果您启动 DNS 请求,则询问本地运行的 DNS 服务器,该服务器决定向哪个服务器询问哪个域名。我的一个大学在 OSX 上使用这样的解决方案(抱歉,我不记得应用程序的名称了)。您使用域名托管服务商。大多数托管服务商都有可用于操作 DNS 条目的 API。因此,您可以将私有网络信息拉到域名托管服务商。我不确定它们是否都接受私有网络 IP。但我猜会存在与第 4 点相同的一些问题。
我们目前使用的是这个,因为对我们来说这是最合理的选择:我们将子域 *.local.. 转发到我们自己的公共 DNS 服务器。这对于 Google 等一些公共 DNS 服务器来说非常有效。但大多数 ISP 不会转发答案。或者不总是这样做。例如,我的 ISP 仅在我每 10 次发出 DNS 请求时才向我发送 *.local.. 域的肯定结果
nslookup
。(有人可以解释一下吗?)
这是真正的问题:
是否存在我们没有想到的其他解决方案?
或者:
您使用了以下哪些方法?
答案1
解决方案 1 是正确的解决方案。如果用户通过 VPN 连接,则包括 DNS 在内的所有流量都应通过 VPN 运行。VPN 应该推送一个或多个 DNS 服务器地址。
您不应该.local
在互联网上提供私有 IP 地址。解决方案 4 已失效,解决方案 3 也同样失效。
如果您有分布式办公室,并使用 VPN 将它们连接起来,则在每个站点使用 DNS 服务器。在这种情况下,您可能在每个站点上运行 DHCP,它应该提供 DNS 服务器地址。
大多数浏览器都会在一段时间内缓存 DNS 名称。您还可以在 Linux 上安装名称服务器缓存守护程序来缓存地址。
如果您的网站需要从太多主机加载数据,导致加载时间过慢,那么您可能需要简化您的网站。通常,一个页面会加载 1 到 3 个网站,不包括添加内容。也可以通过服务器代理内容,以限制所需的 DNS 查找次数。