我为一家拥有两个公共URL的小公司工作。DNS由一个大型ISP提供,它有几个A&CNAMElogging。
在我们的专用networking中,我们有许多相互连接的服务器和主机。 我正在使用yp / nis来发布他们的名字。 当Linux工作站configuration到nis域,并且设置nsswitch.conf文件时,我可以使用这些名称。
Windows工作站必须手动更新主机文件。
天真地,我想要做的是有一个本地DNS服务器,扩展company.com
域,但只是为我的内部系统。 例如,我会运行绑定在IP 10.10.10.10。 我的本地系统将获得额外的条目,但10.10.10.10不会尝试传递有关company.com上游的任何信息。
www.company.com
– 对地球上的每个人都可见
ralph.company.com
– 仅对使用10.10.10.10的内部系统可见
这可能吗 ? 还是10.10.10.10必须定义一个子域。
www.company.com
ralph.sandbox.company.com
它可以像你期望的那样工作,如果将区域添加到内部DNSparsing器,则可以掩盖公有域。 如果你使用你的ISP的DNSparsing器,你将不得不按照你的问题设置你自己的。
必须将您的内部DNSparsing器添加到networking上每台计算机上的resolv.conf
文件(或Windows上的相应文件),并且必须允许recursion查询,否则您的主机将无法parsing任何公用名称。
这样,内部networking上的主机将看到company.com
的本地版本,世界其他地方将看到公共ISP的版本。
然而,有一个问题:内部networking上的任何计算机都不会看到本地company.com
区域中不存在的任何logging,因为内部DNS不会将任何*.company.com
查询转发给外部世界。 因此,为了让您的内部networking访问www.company.com
您必须将logging添加到您的内部DNS服务器中的该区域。
开始:是的,这是可能的。
一种方法是实现水平分割DNS ,
是域名系统(DNS)实施的工具,以提供通常由DNS请求的源地址select的不同组DNS信息。
但是,如果您的域的权威名称服务器由您的提供商托pipe,则这不起作用。
所以,我想到了两种可能性,但还有更多的可能性(DNS非常复杂,因此至less对我来说,写一个通用的答案是不可能的):
自己托pipe名称服务器,例如使用绑定 。
让您的提供者继续承载权威名称服务器。 在你的私人networking里面设置了另一个(这次是recursion的)名字服务器,例如unbound 。 将您的客户端指向此服务器以进行域名parsing。
把你的专用networking中需要的logging放在configuration中,例如:
local-data: "ralph.company.com A 10.10.10.10" local-data-ptr: "10.10.10.10 ralph.company.com"
将unbound
请求转发到可公开访问的DNSparsing器,例如通过
forward-zone: name: "." forward-addr: ${RESOLVER_IP_1} forward-addr: ${RESOLVER_IP_2}
编辑:采取这第二种方法将阻止你遇到安德烈·费尔南德斯的答案中提到的“赶上”。