路由器操作系统 DNS 服务器上外部 DNS 服务器的顺序

路由器操作系统 DNS 服务器上外部 DNS 服务器的顺序

我们的 Mikrotik(RouterOS 6.36)上有 DNS 服务器。

[admin@xxx] /ip dns> print 
                servers: 10.0.10.3,8.8.8.8
        dynamic-servers: 
  allow-remote-requests: yes
    max-udp-packet-size: 4096
   query-server-timeout: 2s
    query-total-timeout: 10s
             cache-size: 10240KiB
          cache-max-ttl: 1w
             cache-used: 243KiB
[admin@xxx] /ip dns> 

有一个应该询问的 DNS 服务器列表。我期望它首先询问 10.0.10.3(如果未找到记录),然后询问 8.8.8.8?

问题是,10.0.10.3 是我们的内部 DNS 服务器,具有一些本地地址。这些地址在 8.8.8.8 上不可用

当我列出两个服务器时,nslookup 查找地址失败。当我删除谷歌服务器 (8.8.8.8) 并仅保留我们的内部服务器时,它就可以正常工作。

为什么 RouterOS 不尊重服务器的顺序?

我尝试按以下顺序排列:10.0.10.3,8.8.8.8 或者 8.8.8.8, 10.0.10.3,但没关系。

有什么想法吗?谢谢

答案1

如果您有需要解析的内部名称,则不应定义任何外部 DNS 服务器。为 HA 创建第二个内部 DNS 服务器,并将其与其他内部服务器一起列出,并在内部路由器配置中列出这两个服务器。

答案2

当有名称服务器列表时,它不会像您想象的那样工作:只有当第一个名称服务器根本没有回复时,才会查询第二个名称服务器。如果第一个名称服务器回复说未找到记录(又名 NXDOMAIN),则搜索在此停止,不使用后续名称服务器。

通常建议不要混合内部私有名称服务器和公共名称服务器,这肯定会产生奇怪的交互。

答案3

如果您只有少量本地主机名,那么您可以将其添加为 Mikrotik 上的静态条目,并用 Mikrotik 完全替换您的内部 DNS 服务器。当客户端向 Mikrotik 发送一些 DNS 查询时,路由器将首先检查其静态条目,如果没有命中,则它将询问配置的外部 DNS 服务器。

添加一些静态条目:

/ip dns static add name="laptop2.local" address=192.168.1.10 ttl=1d
/ip dns static add name="desktop1.local" address=192.168.1.11 ttl=1d
/ip dns static add name="server8.local" address=192.168.1.20 ttl=1d

您甚至可以使用正则表达式。例如,如果您有一个带有多个虚拟 www 主机的内部 Web 服务器:

/ip dns static add regexp="\w*\.webserver\.local" address=192.168.1.21 ttl=1d

相关内容