这是这个问题的后续。
我遇到了不支持发夹的路由器的问题。 有关详情,请参阅上面的链接。
现在我想build立一个本地DNS服务器,在我们的局域网中的主机可以用来解决公共主机名(通常的webbrowsing …)。
另外我想修改某些区域。
在我们的局域网中,我们有一些服务器为我们的公共DNS区域中没有的资源提供服务。
我们总是必须相应地configuration我们的本地LMHost文件。
例如,我们有一个在本地Web服务器上运行一个新function的分段安装,我们不能直接使用IP访问它,因为网站运行在一个命名的虚拟主机容器中,我们必须configurationLMHost文件来指向某个域到本地IP地址。
而现在我们也有头发钉住的问题。
所以我的问题是:我可以使用什么软件? 将绑定做的工作? 我只需要在区域中插入一些条目。 尽可能简单。 我们有本地的Linux / Ubuntu服务器。
根据你的networking大小绑定可能是矫枉过正的。 对于较小的networking,您可以使用dnsmasq来读取hosts文件来configuration地址。 它也可以用作DHCP服务器和本地DNScaching。
绑定configuration可能会有点困难,如果你以前没有做过。 如果无法从Internet访问绑定,则不需要拆分configuration,configuration也更简单。 如果不是的话,你应该实现并testing一个拆分configuration。
一旦您configuration了DNS服务器,您将需要更改用于parsing地址的服务器列表,以将服务器作为第一个要查询的服务器。 如果使用DHCP来configurationIP地址,则可以在更新地址时将更改推送出去。 通常,DHCP被configuration为提供要使用的DNS服务器的列表。 DHCP租约通常在其一生的一半后更新。 如果您的租赁时间很长,则可能需要一段时间才能推出更改。 重新引导系统应该使它们从DHCP刷新它们的configuration。
您可以使用BIND来做到这一点,但是如何取决于您要使用的BIND服务器是否已经公开提供服务。
如果是,您需要使用view语句和多个区域文件: –
view "internal" { match-clients { 192.168.0.0/24; }; recursion yes; zone "your-domain.com" { type master; file "your-domain-internal.db"; }; }; view "external" { match-clients { any; }; recursion no; zone "your-domain.com" { type master; file "your-domain-external.db"; }; };
(为了节省一些重复,两个视图的共同logging可以存储在另一个文件中, $INCLUDE d存储在两个区域中。)
如果它不是(例如,它是一个只有内部的服务器),你可以像正常一样为你的域设置一个区域,或者设置你需要修改的特定主机作为它们自己的不同区域,以便DNS查询其他主机将退回到您的公共DNS,而不是您需要在内部复制所有公共主机。
zone "www.your-domain.com" { ... }
不过,如果你不绑定到BIND,你可能会想看看像dnsmasq这样的东西,它支持“DNS修改”: –
-V, --alias=[<old-ip>]|[<start-ip>-<end-ip>],<new-ip>[,<mask>] Modify IPv4 addresses returned from upstream nameservers; old-ip is replaced by new-ip. If the optional mask is given then any address which matches the masked old-ip will be re-written.
使用上一个问题的IP,这将像下面一样简单,以修改与您的公共IP地址匹配的所有 DNS查询。
--alias=123.45.67.89,192.168.0.123
正如我和joeqwerty之前在ServerFault上所说 :您需要的是“水平分割”DNS服务, 有几种方法可以设置 ,部分取决于您使用的软件。 正如你所看到的,你可以使用一系列的软件,从微软的DNS服务器和ISC的BIND到djbdns的 tinydns 。
一旦设置好之后,不要忘记在你的内部视图中,将你想要存在的DNS名称空间部分的外部视图的部分映射到它们。 有两种方法可以做到这一点。
Ubuntu服务器作为DNS服务器或绑定,他们都支持它