Por que os registros NS não contêm endereços IP?

18

O objetivo de um registro NS é informar ao cliente qual servidor de nomes saberá com certeza o endereço IP real de um nome de domínio. Por exemplo, a consulta a seguir informa que, se você deseja obter uma resposta autorizada, facebook.comdeve perguntar a.ns.facebook.com:

> dig ns facebook.com                                                                                                                                       19:58:27

; <<>> DiG 9.9.5-3ubuntu0.8-Ubuntu <<>> ns facebook.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32063
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;facebook.com.          IN  NS

;; ANSWER SECTION:
facebook.com.       65000   IN  NS  a.ns.facebook.com.
facebook.com.       65000   IN  NS  b.ns.facebook.com.

;; Query time: 13 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Sun Mar 20 19:58:40 CET 2016
;; MSG SIZE  rcvd: 65

Isso parece interessante e útil, mas estou me perguntando por que a ANSWERseção contém o nome do host e não o IP da fonte autorizada? Não seria mais fácil para o cliente obter o endereço IP real da fonte autorizada e não o nome do host?

Quero dizer, se ele obtiver o nome do host, precisará fazer outra consulta para resolver esse nome de host em um IP e, em seguida, perguntar a esse novo IP sobre o facebook.comdomínio inicial que estava procurando. Isso não é ineficiente?

Eu estaria interessado em responder que me aponta para alguns parágrafos em algum RFC que explica esse problema.

Pawelmhm
fonte
"isso explica esse problema." qual? Você quer dizer uma consulta adicional?
ALex_hha
sim @ALex_hha Quero dizer consulta adicional
Pawelmhm

Respostas:

17

A solução para o problema são os registros de cola de DNS, descritos em O que é um registro de cola? .

Seção 3.3.11 da RFC 10.11 afirma

"... Observe que a classe pode não indicar a família de protocolos que deve ser usada para se comunicar" com o host, embora normalmente seja uma dica forte ".

Retornar um endereço IP equivale a indicar o método pelo qual o host pode ser contatado, o que contraria o RFC.

Jason Martin
fonte
Obrigado Jason. Se o registro NS contiver IP, isso indicará a família de protocolos e a RFC proíbe isso, certo? Isso significa que o cliente pode usar diferentes famílias de protocolos ao fazer uma consulta de DNS? Eu pensei que só pode usar UDP / TCP?
Pawelmhm 20/0316
5
Família do protocolo refere-se ao IPv4, IPv6
sendmoreinfo
Se você sabe que a pergunta é uma duplicata, como não pode votar para fechar como um idiota, marque-a como tal.
user9517 suporta GoFundMonica
3
Eu acho que a RFC está usando "pode ​​não" no sentido de "pode ​​não", não no sentido de uma proibição. (Ele antecede RFC 2119, que padronizou esse tipo de linguagem para reduzir a ambiguidade.)
David
37

Jason forneceu o mecanismo DNS que resolve o problema que você descreveu, mas ainda não analisamos por que as coisas são feitas dessa maneira.

Digamos que eu possua example.come contratamos parte do conteúdo do meu site para uma empresa de entrega de conteúdo chamada Contoso . A plataforma deles exige que deleguemos sub.example.comseus servidores de nomes para que eles possam controlar quais respostas são retornadas.

; SOA and MX omitted from this example
$ORIGIN example.com.

@           IN      NS            ns1
@           IN      NS            ns2

; delegate sub.example.com to Contoso's nameservers
sub         IN      NS            ns1.cdn.contoso.com.
sub         IN      NS            ns2.cdn.contoso.com.

; this is ours, not Contoso's
www         IN      A             198.51.100.1

Como você observou, não especificamos os endereços IP dos servidores de nomes da Contoso. Tudo o que nosso servidor sabe é dizer à internet "não gerenciamos sub.example.com, pergunte à Contoso" . Isso é muito importante porque:

  • Não possuímos o Contoso.com.
  • Não podemos esperar que a Contoso coordene uma alteração de seus IPs de servidor de nomes com todos os seus clientes. Isso é exatamente o que teria que acontecer se nosso servidor estivesse fornecendo esses IPs.

Por enquanto, tudo bem. Um ano se passa e, sem o nosso conhecimento, a Contoso está alterando os endereços IP de seus servidores de nomes CDN. Como o DNS funciona da maneira que funciona, tudo o que eles precisam fazer é atualizar os Aregistros para os quais retornam ns1.cdne ns2.cdn.contoso.com..

Isso nos leva a um ponto importante: os registros de cola descritos por Jason existem para lidar com cenários de "galinhas e ovos" no DNS, como google.comdizer ao mundo que seus servidores de nomes são ns1.google.come ns2.google.com. Você nunca deve criar registros de cola apontando para a infraestrutura que você não possui, a menos que eles existam para resolver um problema como este:

@           IN      NS            ns1
@           IN      NS            ns2

; delegate sub.example.com to ns1 and ns2.sub.example.com
sub         IN      NS            ns1.sub
sub         IN      NS            ns2.sub

; provide the IP addresses of ns1 and ns2 so that nameservers
; on the internet can find them.
;
; these IP addresses are owned by Contoso, not us, and they must
; coordinate changes to these IPs with us
ns1.sub     IN       A            203.0.113.10
ns1.sub     IN       A            203.1.113.10

Isso evita o cenário de ovos e galinhas, mas também faz com que a Contoso precise coordenar todas as alterações de IP desses servidores de nomes conosco. Isso é muito propenso a riscos e indesejável.

Andrew B
fonte
Ah, isso faz muito sentido quando os servidores de nomes não são auto-hospedados.
Jason Martin