Oi
Recentemente, enfrentei a tarefa de depurar o processo de resolução de nomes DNS no MacOS. Não encontrei nenhum material completo sobre exatamente como isso acontece; tive que coletar as informações pessoalmente.
Aqui está o que conseguimos descobrir.
Para tarefas relacionadas ao DNS no macOS, um daemon chamado mDNSResponder é responsável. As aventuras ocorreram em sua vida - ele foi substituído pelo demônio descoberto (Yosemite), que quebrou muito e criou muitos problemas. Um ano depois, a Apple voltou a si e devolveu (El Capitan) o comprovado mDNSResponder, que imediatamente reparou cerca de 300 bugs e retornou a estabilidade.
O mDNSResponder faz parte do
Bonjour - um conjunto de tecnologias destinadas a operar o dispositivo em uma rede sem a necessidade de configuração, inclui pesquisa de serviços, atribuição automática de endereços e resolução de nomes. É Bonjour que é usado quando você pega o iPhone e procura uma Apple TV ou impressora.
Bonjour também possui código aberto e mDNSResponder. Isso simplifica a tarefa se você precisar chegar ao fundo da verdade suprema e mostrar tudo o que está oculto. O arquivo já possui implementações prontas para Windows, Posix e VxWorks.
O daemon lida com unicastDNS e multicastDNS. UnicastDNS é o DNS comum a que estamos acostumados e conhecemos. O MulticastDNS é um protocolo para o uso de DNS em redes locais que não requer um servidor. Se o dispositivo precisar encontrar alguém - ele envia uma pergunta - "pergunta" pacote multicast e recebe uma resposta do dispositivo com o nome solicitado (se ele certamente existir). O protocolo em si é descrito em detalhes no
RFC com o mesmo nome.
São os recursos do MulticastDNS que o
Respondente - software para ataques à rede local - abusa. Após o lançamento, ele começa a responder insidiosamente a todos os pedidos de mDNS, atraindo as vítimas inocentes para suas garras.
Foi uma digressão - e agora a questão principal - como ver o cache DNS atual e o status geral das configurações de DNS.
Portanto, executamos as seguintes etapas:
- No terminal, escrevemos:
sudo log config --mode "private_data:on"
este comando nos permitirá ver a saída, caso contrário, ela ficará oculta sob o plug privado - Abra o console, selecione nosso dispositivo:

e no filtro escrevemos mDNSResponder

- Executamos no terminal:
sudo killall -INFO mDNSResponder
- Abra o console de volta e obtenha uma boa saída, que agora analisaremos um pouco:

O status das configurações de DNS é uma tela grande, dividida em seções. O mais interessante deles:
Cache - o cache do DNS é armazenado diretamente aqui:
------------ Cache ------------- Slt Q TTL if U Type rdlen 3 4290 en0 + PTR 33 _companion-link._tcp.local. PTR VMAC._companion-link._tcp.local. 3 4273 en0 + PTR 37 _companion-link._tcp.local. PTR VMAC\032(2)._companion-link._tcp.local. 6 107951 -U- - Addr 0 isafronov-G8WP. Addr 6 107951 -U- SOA 64 . SOA a.root-servers.net. nstld.verisign-grs.com. 2019011700 1800 900 604800 86400 6 107951 -U- - AAAA 0 isafronov-G8WP. AAAA 6 107951 -U- SOA 64 . SOA a.root-servers.net. nstld.verisign-grs.com. 2019011700 1800 900 604800 86400 9 763 -U- CNAME 37 1-courier.push.apple.com. CNAME 1.courier-push-apple.com.akadns.net. 13 8819 -U- CNAME 22 ax.itunes.apple.com.edgesuite.net. CNAME a1108.gi3.akamai.net.
O conteúdo do arquivo / etc / hosts - apenas no caso de:
--------- /etc/hosts --------- State Interface KnownUnique LO 4 localhost. Addr 127.0.0.1 KnownUnique LO 16 localhost. AAAA ::1 KnownUnique LO 4 vmware-localhost. Addr 127.0.0.1 KnownUnique LO 16 vmware-localhost. AAAA ::1 KnownUnique LO 4 broadcasthost. Addr 255.255.255.255
Estatísticas MDNS - nomes duplicados, número de pacotes, eventos de interface:
--- MDNS Statistics --- Name Conflicts 0 KnownUnique Name Conflicts 0 Duplicate Query Suppressions 2045 KA Suppressions 0 KA Multiple Packets 0 Poof Cache Deletions 203 -------------------------------- Multicast packets Sent 8211 Multicast packets Received 22382 Remote Subnet packets 1 QU questions received 25960 Normal multicast questions 62197 Answers for questions 4259 Unicast responses 0 Multicast responses 0 Unicast response Demotions 0 -------------------------------- Sleeps 181 Wakeups 182 Interface UP events 665 Interface UP Flap events 48 Interface Down events 817 Interface DownFlap events 16 Cache refresh queries 2876 Cache refreshed 28935 Wakeup on Resolves 0
Lista de interfaces de rede:
------ Network Interfaces ------ Struct addr Registered MAC BSSID Interface Address 00007FA2FD834E00 11, 00007FA2FD834E00, v6 utun0 00:00:00:00:00:00 00:00:00:00:00:00 Active A fe80::ebfb:c666:8f7b:62ed 00007FA2FF01B800 9, 00007FA2FF01B800, v6 awdl0 DE:14:B1:E7:21:33 00:00:00:00:00:00 Active v6 AM fe80::dc14:b1ff:fee7:2133 00007FA2FD829C00 7, 0000000000000000, v4 en0 F4:5C:89:8E:9D:C1 E4:8D:8C:61:7F:5D 192.168.1.73 dormant for 1943 seconds 00007FA2FD00C200 13, 00007FA2FD00C200, v4 en5 42:4D:7F:A3:50:1B 00:00:00:00:00:00 Active v4 AM 169.254.150.120 00007FA2FE008C00 7, 00007FA2FE008C00, v4 en0 F4:5C:89:8E:9D:C1 E4:8D:8C:61:7F:5C Active v4 AM p 192.168.1.73
Lista de servidores DNS:
--------- DNS Servers(2) ---------- DNS Server . en0 127.0.0.1:53 0 Unscoped 30 18283 v4 v6 !cell !exp !clat46 !DNSSECAware DNS Server . en0 127.0.0.1:53 0 InterfaceScoped 30 18291 v4 v6 !cell !exp !clat46 !DNSSECAware v4answers 1 v6answers 1 Last DNS Trigger: 140697 ms ago
O mundo das interações internas e externas dos subsistemas MacOS é vasto e cheio de mistérios. Trabalhar com nomes de domínio é apenas uma pequena parte dele. Para uma leitura mais aprofundada, recomendo: