我刚刚在一个小型网络(大约 30 台 PC)中设置了一个供内部使用的内部 http 服务器(我设置了 Redmine)。
我在虚拟机 ubuntu 上设置了 http 服务器,该虚拟机还运行 DNS 服务器 (bind)。在 DNS 查找中,我添加了 Redmine 服务器名称 (redmine.engserver <-> 192.168.1.14) 并将外部 ISP DNS IP 地址作为转发器。
我使用小型 Wi-Fi 路由器 (ASUS RT-N66U) 作为 DHCP(和网关)。在 DHCP 配置页面中,我将 ubuntu 服务器 IP 设置为 DNS(固定为 192.168.1.14)。现在,当我将新 PC 连接到网络时,DHCP 路由器会发出其新 IP,并将其作为 DNS 服务器发出:主 IP:192.168.1.14(ubuntu 机器)和辅助 IP:192.168.1.1(路由器本身)。
ipconfig /all 默认网关......................: 192.168.1.1 DHCP 服务器............................: 192.168.1.1 DHCPv6 IAID............................: 248539109 DHCPv6 客户端 DUID.........................: 00-01-00-01-17-15-AA-3F-D0-67-E5-49-A7-EF
DNS 服务器 . ...
在更改路由器上的 DHCP 设置之前,我始终只会得到一个 DNS 服务器:192.168.1.1(可能使用 DNS 转发到外部公共 DNS 服务)。
问题是这样的:如果我在浏览器中输入 www.google.com,它总是有效的。如果我在浏览器中输入http://redmine.engserver/它大多数时候都有效,但有时最终会以 yahoo 页面搜索或其他内容结束。在 DNS 缓存中,它显示为(未找到服务器)。ipconfig /displaydns
我使用 wireshark 查看,似乎有时客户端 PC 会查询辅助 DNS (192.168.1.1),而不是第一个 192.168.1.14。显然,这是一个公共域,并且它没有 redmine.engserver 条目。
这个配置有什么问题? 2 个 DNS(一个内部 DNS,一个由路由器转发)不一致是否合法? 还有其他方法可以在小型办公网络中使用本地名称服务吗? 为什么路由器 DHCP 会将自己发布为 DNS?
答案1
您已经弄清楚了。一半的 DNS 请求都发往路由器,而不是内部 DNS 服务器(无法在内部解析“redmine”)。您的路由器应该只将 192.168.1.14 指定为 DHCP 中的 DNS 服务器。在您规模的网络中,您可能只需要一台 DNS 服务器。(这应该是配置中的一个选项。)
有 2 个不一致的 DNS(一个内部 DNS,一个由路由器转发)是否合法?
不,由于您所遇到的原因,这是非常糟糕的做法。
为什么路由器DHCP会将自己发布为DNS?
任何路由器上的 DHCP 默认设置都会执行此操作。我想这可能是某种完全垃圾的设备,不允许您禁用它。如果是这样,请立即将其扔进垃圾桶,并用可以控制网络的设备替换它。
答案2
仅供参考 - 我在我的华硕 WiFi 路由器上看到了完全相同的问题。我有一台华硕 RT-N16。我还配置了 dhcp 服务器以向客户端提供不同的 DNS 服务器。但是,这台华硕坚持还向客户端提供路由器的 192.168.1.1 地址。由于您提到的原因,这很糟糕。
有没有办法在路由器上使用 dhcp,但不使用其 DNS?我想知道是否最好只用 dd-wrt 重新刷新路由器。
答案3
如果您的 ubuntu 机器上有 DNS,您也可以从路由器的 DHCP 中删除 DNS 条目(这样它只将路由器本身作为 DNS 提供给客户端),并将 ubunto 添加为主 DNS 服务器,将后备服务器添加为辅助 DNS 服务器。