我们的 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