我正在尝试为我的DNS问题find最佳解决scheme。 我们在公司运行多个服务,只能通过VPN访问。 通过互联网可到达的其他服务得到了域…目前VPNnetworking内的所有服务都通过.local …这些具有专用networking192.168.252.0/24的VPN IP。 客户端从Linux到OSX到Windows。
我可以想到实现DNS基础架构的四种可能性:
最常见的是由VPN推送的内部DNS服务器。 但这有几个缺点:您的DNS响应仅限于VPN连接和您自己的DNS服务器的速度。 由于网站非常复杂,这可能会增加页面加载的时间。 另外:我们有几个不相互连接的VPN,它们都有自己的DNS服务器。
本地有几台DNS服务器。 这些必须手工configuration。 你必须使用一些第三方工具,如dnsmasq 。 如果你启动一个DNS请求,你会问你的本地运行的DNS服务器,它决定哪个服务器要求哪个域名。 我的一所大学使用这个OSX的解决scheme(我很抱歉,我不记得应用程序的名称)。
您使用您的域名托pipe商。 他们大多数都有可用来操纵你的DNS条目的API。 因此,您可以将您的私人networking信息提供给您的域名托pipe商。 我不确定他们是否都接受专用networkingIP。 但是我觉得会有一些和4号一样的问题。
我们目前使用的一个,因为它是我们最合理的select:我们将子域* .local ..转发到我们自己的公共DNS服务器。 这对于一些像Google这样的公共DNS服务器来说相当有用。 但是大多数ISP不提供答案。 或者不要那样做。 就像我的ISP每隔10次向nslookup发送一次* .local域名的DNS请求的正面结果。 (有人可以解释这一点?)
这里真正的问题:
还有没有我们没有想到的另一个解决scheme?
要么:
你用什么方法?
解决scheme1是正确的解决scheme。 如果用户通过VPN连接,则包括DNS在内的所有stream量都应在VPN上运行。 VPN应该推送一个或多个DNS服务器地址。
您不应该通过Internet提供.local或private IP地址。 解决scheme4被破坏,解决scheme3也是如此。
如果您有分布式办公室,则使用VPN将其互连,然后在每个站点中使用DNS服务器。 在这种情况下,您可能在每个站点上运行DHCP,并且应该提供DNS服务器地址。
大多数浏览器都会将DNS名称caching一段时间。 你也可以在Linux上安装一个名字服务器caching守护进程来caching地址。
如果您的网站是从这么多的主机拉动加载时间过于缓慢,那么你可能希望看起来像简化你的网站。 通常情况下,页面会从1到3个网站加载,不包括添加内容。 也可以通过服务器代理内容以限制所需的DNS查找次数。