qual é o fluxo de consulta quando o resolv.conf do servidor de nomes contém apenas 127.0.0.1?

2

Eu configurei meu servidor de nomes com base neste link: link

Normalmente, o servidor de nomes resolv.conf conteria 2 do outro servidor de nomes disponível ip. Mas e se o resolv.conf tiver 127.0.0.1 como o nome do servidor assim:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1
#nameserver 172.31.0.2
#nameserver 127.0.0.53
search ec2.internal

Em seguida, no meu servidor de nomes personalizado, eu insiro o seguinte comando no terminal:

telnet www.yahoo.com 80
Trying 98.139.180.149...
Connected to fd-fp3.wg1.b.yahoo.com.
Escape character is '^]'.
GET / HTTP/1.1
Host: www.yahoo.com

Eu testei e o servidor de nomes funciona bem.

Assim, tenho duas suposições:

1: se o arquivo resolv.conf contiver apenas 127.0.0.1, o servidor de nomes consultará iterativamente o servidor 'root', depois o servidor de nomes de DPNs, etc.

2: O servidor de nomes, como bind9, tem o registro de root server, portanto, pode enviar a consulta diretamente sem consulta adicional.

Se eu estiver correto, onde o servidor de nomes registra o endereço do servidor raiz?

No entanto, se estou errado, qual é o fluxo de consulta para tal situação? Obrigado.

atualizar

Depois de usar o tcpdump para controlar o fluxo de consulta, o servidor de nomes consulta o servidor de nomes raiz com firmeza. Mas por que o servidor raiz retorna todos os outros servidores de nomes raiz para mim?

k.root-servers.net.domain > ip-172-31-8-42.55523: Flags [P.], cksum 0x8784 (correct), seq 1:1100, ack 31, win 229, options [nop,nop,TS val 1581998147 ecr 403293], length 109964020*- q: NS? . 14/0/27 . NS b.root-servers.net., . NS g.root-servers.net., . NS i.root-servers.net., . NS c.root-servers.net., . NS e.root-servers.net., . NS f.root-servers.net., . NS d.root-servers.net., . NS l.root-servers.net., . NS k.root-servers.net., . NS a.root-servers.net., . NS j.root-servers.net., . NS h.root-servers.net., . NS m.root-servers.net., . RRSIG ar: a.root-servers.net. A 198.41.0.4, b.root-servers.net. A 192.228.79.201, c.root-servers.net. A 192.33.4.12, d.root-servers.net. A 199.7.91.13, e.root-servers.net. A 192.203.230.10, f.root-servers.net. A 192.5.5.241, g.root-servers.net. A 192.112.36.4, h.root-servers.net. A 198.97.190.53, i.root-servers.net. A 192.36.148.17, j.root-servers.net. A 192.58.128.30, k.root-servers.net. A 193.0.14.129, l.root-servers.net. A 199.7.83.42, m.root-servers.net. A 202.12.27.33, a.root-servers.net. AAAA 2001:503:ba3e::2:30, b.root-servers.net. AAAA 2001:500:84::b, c.root-servers.net. AAAA 2001:500:2::c, d.root-servers.net. AAAA 2001:500:2d::d, e.root-servers.net. AAAA 2001:500:a8::e, f.root-servers.net. AAAA 2001:500:2f::f, g.root-servers.net. AAAA 2001:500:12::d0d, h.root-servers.net. AAAA 2001:500:1::53, i.root-servers.net. AAAA 2001:7fe::53, j.root-servers.net. AAAA 2001:503:c27::2:30, k.root-servers.net. AAAA 2001:7fd::1, l.root-servers.net. AAAA 2001:500:9f::42, m.root-servers.net. AAAA 2001:dc3::35, . OPT UDPsize=4096 DO (1097)

Se o servidor de nomes já tiver o registro de todo o servidor raiz, essa etapa não terá sentido.

    
por sydridgm 19.03.2017 / 19:43

4 respostas

2

você pode depurar fluxos DNS / caminho em tempo real; seja instalando e usando o comando dnstracer ou usando o modo de depuração de nslookup ou dig no modo de rastreio.

Veja minha resposta a uma pergunta relacionada sobre como usar esses comandos Como descobrir o servidor de nomes que resolve um determinado nome de host

    
por 22.03.2017 / 02:07
1

O arquivo /etc/resolv.conf não tem nada a ver com o seu servidor de nomes. É o arquivo de configuração da biblioteca de resolução que informa à biblioteca onde encontrar o (s) servidor (es) de nomes. Nesse caso, como o arquivo contém apenas uma única entrada nameserver apontando para 127.0.0.1 , algum componente de software em seu host local funciona como um servidor de nomes. Sem conhecer melhor sua configuração, não posso dizer se é bind9 ou um proxy (por exemplo, dnsmasq, como sugerido por dirkt acima).

O ponto é que o arquivo resolv.conf não afeta como o servidor de nomes funciona, não é um arquivo de configuração do servidor de nomes.

    
por 20.03.2017 / 08:45
0

tente responder minha própria pergunta, espere alguma melhora ou melhor resposta. não inclui parte da atualização

Meus dois pressupostos estão certos. Se o arquivo resolv.conf contiver apenas 127.0.0.1, o servidor de nomes perguntará diretamente a um dos root server .

Eu uso o servidor de nomes bind9 e todas as informações do servidor raiz foram armazenadas em /etc/bind/db.root . Assim, o servidor de nomes apenas busca-o e usa um deles aleatoriamente.

Em seguida, você pode usar tcpdump para registrar o fluxo de consulta.

tcpdump -w tcpdump.out & telnet www.google.com 80 tcpdump -t -r tcpdump.out

você também pode usar tcpdump -vv para ver mais detalhes.

    
por 20.03.2017 / 00:15
0

Quando um servidor de nomes recursivo é iniciado, como o que está em 127.0.0.1 em seu servidor, ele faz 'root priming': ele inicia com algum endereço IP do servidor raiz que ele possui no arquivo (conforme distribuído com o software quando foi instalado) e solicita NS . (que você pode ver em sua saída tcpdump) para recuperar todos os nomes e endereços IP atuais (ambos v4 e v6) dos servidores raiz (porque seu arquivo local pode conter informações obsoletas, endereços IP do servidor raiz raramente mudam, mas mudam de vez em quando).

Assim, o passo não é sem sentido, é um tipo de atualização automática suave.

    
por 22.03.2017 / 01:44