Pergunta
É válido que um subdomínio use servidores de nomes diferentes para o domínio pai sem que os servidores DNS do domínio pai forneçam registros NS para o subdomínio?
Por exemplo:
Resolve-DnsName -Name example.com -Type NS -Server 1.1.1.1
Retornos em execuçãons1.example.com
; o mesmons1.example.com
acontece com o servidor de nomes oficial paraexample.com
.Resolve-DnsName -Name subdomain.example.com -Type NS -Server 1.1.1.1
Retornos em execuçãons2.example.com
; o mesmons2.example.com
acontece com o servidor de nomes oficial parasubdomain.example.com
.
Eu esperaria que isso ns1.example.com
contivesse o conjunto de registros NS para subdomain.example.com
informar ao cliente "Eu não gerencio os registros NS deste subdomínio, para eles, converse com seus servidores de nomes". Ou seja, eu esperaria Resolve-DnsName -Name subdomain.example.com -Type NS -Server ns1.example.com
voltar ns2.example.com
.
Nota: Se o subdomínio usasse os mesmos servidores NS que seu pai, eu não esperaria uma resposta ao acima.
( Resolve-DnsName é apenas um nslookup
comando, onde o Name
argumento é o FQDN a ser buscado, Server
é o servidor de nomes a ser consultado e Type
nos permite especificar o tipo de registro DNS que procuramos).
Meu entendimento está correto ou um subdomínio pode ter servidores de nomes diferentes de seu pai sem que seu domínio pai hospede registros NS para o subdomínio?
Contexto
Temos um problema intermitente com o MS Dynamics 365 for Finance and Operations onde, ocasionalmente, os usuários que navegam para uma instância verão o erro abaixo:
The site can’t be reached
Check if there is a typo in EXAMPLE.operations.dynamics.com
If spellling is correct, try running Windows Networkk Diagnostics.
DNS_PROBE_FINISHED_NXDOMAIN
Os usuários estão usando o URI/nome de host correto.
Normalmente, esse problema se resolverá após cerca de 30 minutos. Vemos isso tanto para produção ( EXAMPLE.operations.dynamics.com
quanto para teste ( EXAMPLE.sandbox.operations.dynamics.com
).
Na investigação, se eu tentar resolver o FQDN usando nosso serviço DNS corporativo, ele não será resolvido; confirmando o erro do navegador; mas quando resolvemos um serviço DNS público (por exemplo, o do CloudFlare 1.1.1.1
), as coisas geralmente resolvem corretamente. Observação: também vimos esse problema em que usuários que trabalham remotamente (que não usam nosso serviço DNS corporativo) têm o mesmo problema. Aqui, o serviço DNS do ISP mostra que não está conseguindo resolver o FQDN.
Acredito que o problema esteja relacionado ao DNS, e que o DNS do CloudFlare geralmente tem sido mais confiável, pois armazena em cache as entradas DNS por mais tempo (ou como seus servidores são atingidos com mais frequência, é mais provável que tenham entradas em cache).
Especificamente, quando há um problema ao resolver o FQDN para nosso ambiente, geralmente posso resolvê-lo no DNS do CloudFlare e nos servidores de nomes autorizados da MS para esse subdomínio (como seria de esperar)... mas tentando obter os servidores de nomes autorizados para o o subdomínio dos servidores de nomes autorizados para seu domínio pai falha; por exemplo, veja os 2 erros destacados abaixo:
Este é um problema com a minha compreensão do DNS (o que significa que a causa raiz dos nossos problemas requer mais investigação da nossa parte) ou é um problema de configuração com a implementação da MS?
Observação: entrei em contato com o suporte da MS para saber o que foi dito acima, mas a equipe que dá suporte ao Dynamics é uma equipe de suporte a aplicativos, portanto, não foi possível ajudar com problemas relacionados ao DNS/infraestrutura ou encaminhar meu ticket para uma equipe que pudesse ajudar.
Isso parece mais uma falha do PowerShell do que uma falha de DNS. O Wireshark me disse que o servidor deu uma resposta bem-sucedida – mas é uma referência que possui os registros NS na seção ‘Autoridade’, não na seção ‘Resposta’ (a “cópia pai” dos registros NS não produz respostas – ela é usado apenas para referências) e o PowerShell aparentemente não espera isso.
Tente fazer a mesma consulta usando outras ferramentas:
Windows
nslookup -d -q=NS operations.dynamics.com. ns1-205.azure-dns.com.
(ignore a consulta PTR que aparece, o nslookup sempre faz uma)
Linux/WSL
dig operations.dynamics.com. NS @ns1-205.azure-dns.com.
Eu recomendaria ter uma versão muito recente do
dig
, pois ela suporta DNS EDE – Extended Error Data, que permite que um resolvedor como o 1.1.1.1 forneça informações muito mais detalhadas sobre por que está fornecendo um SERVFAIL. (Isso não está realmente relacionado aos seus erros do PowerShell, pois você estava consultando diretamente um servidor autoritativo sem qualquer intermediário; é mais uma recomendação geral.)As duas listas deveriam corresponder, mas as coisas continuariam funcionando enquanto os registros NS no domínio pai apontassem para um conjunto de servidores de nomes válidos. Conjuntos incompatíveis de registros NS não são estritamente corretos, mas podem passar despercebidos por muito tempo.
A lista NS nos servidores de nomes de subdomínios é o que você obtém de uma
-Type NS
consulta manual em resolvedores públicos, mas apenas a lista NS nos servidores de nomes pais é o que será usado para referências de pai para filho (porque, é claro, o conteúdo dos servidores de nomes filhos não pode possivelmente ser conhecido nesse ponto ainda).Portanto, se o subdomínio realmente tiver mais servidores de nomes ausentes na cópia pai da lista NS, isso não deverá causar falhas - os servidores de nomes extras permanecerão sem uso (mesmo que apareçam em uma
-Type NS
consulta manual em resolvedores públicos).Então, para resumir:
Se a lista pai estiver incompleta, então os servidores ausentes simplesmente não serão usados, mesmo que a zona filha os liste (e igualmente, se o filho tiver entradas falsas, eles não serão usados).
Este é o único problema relatado pelo DNSViz para o seu domínio.
Se a lista pai tiver servidores de nomes estranhos que não foram configurados para hospedar o domínio filho (ou seja, eles retornam REFUSED ou uma referência lateral), isso é um grande problema e fará com que você veja SERVFAILs.
Se a lista da criança estiver incompleta, você só notará isso nas
-Type NS
consultas, mas caso contrário, nada acontecerá.Se a própria lista da criança tiver servidores de nomes estranhos, você também notará isso apenas em consultas manuais, mas, caso contrário, nada acontecerá – eles não serão contatados pelos resolvedores.
Por exemplo, se a zona pai (example.com) tiver:
e a zona filha (sub.example.com) tem:
então espera-se que ambos ns1/ns2 sejam os servidores autorizados, enquanto ns3/ns4 não será usado para nada, mesmo que fazer uma
-Type NS
consulta explícita retorne "NS ns2, ns3, ns4"Se, no entanto, você tiver essa configuração, mas o ns1/ns2 não estiver configurado para hospedar a zona filha, eles responderão com um REFUSED ao resolvedor e isso se propagará como um SERVFAIL para você. Além disso, ns1/ns2 não tem permissão para responder com uma "referência lateral" para ns3/ns4 – você receberá um SERVFAIL se isso ocorrer.