Altere a ordem de pesquisa de DNS no Mac El Capitan

3

Eu tenho um roteador que também está executando um DNS que contém nomes para máquinas na minha rede local. Ele está configurado para encaminhar solicitações, portanto, para qualquer máquina pública, ele entrará em contato com o DNS fornecido pelo meu provedor. O roteador é configurado de forma que seja o DNS primário, e o DNS do ISP é listado como secundário. Eu tenho algumas máquinas (aquelas com entradas no meu DNS privado) que possuem IPs estáticos. As outras máquinas, incluindo o Mac que é o assunto desta questão, obtêm seus endereços por DHCP.

As máquinas Windows nesta rede estão funcionando perfeitamente. Eles resolvem os nomes privados para as máquinas na minha rede e também têm acesso à internet pública.

Meu único laptop Mac não está funcionando. Ele acessa a Internet pública sem problemas, mas não está acessando meu DNS interno para obter os nomes internos. Por exemplo, se eu fizer um ping para uma máquina interna como

ping internal.example.com

Recebo pacotes de volta, mas mostra um endereço IP que corresponde ao Hover. (Aparentemente, o Hover está colocando uma página de destino para qualquer subdomínio para o qual não há rota pública.) Se eu fizer

nslookup internal.example.com

no entanto, recebo o IP correto (interno) da máquina na minha rede local.

Finalmente, se eu fizer ping novamente, mas desta vez forçá-lo a usar o meu DNS interno (192.168.1.2),

ping internal.example.com 192.168.1.2

Recebo resposta da máquina correta na minha rede local . Isso parece indicar que mesmo a abordagem "nativa" pode fazer o que eu quero, se ela usar o DNS certo.

Eu encontrei muitos artigos que falam sobre este assunto, mas o que eu realmente encontrei até agora está desatualizado ou não é uma solução completa para o meu problema. O que eu montei até agora:

  • A Apple vem mudando sua metodologia de resolução de DNS ao longo de várias atualizações de sistema operacional, portanto, as respostas on-line ficam rapidamente ultrapassadas.
  • O Mac tem (pelo menos) dois esquemas de resolução de DNS em execução simultaneamente no El Capitan. Isso está relacionado a obter resultados diferentes do ping e do nslookup, conforme observado acima. Os utilitários de linha de comando que funcionam no sistema Linux "normal" parecem pelo menos documentar isso em suas páginas de manual, geralmente sob uma seção intitulada algo como "Aviso do Mac OS X". Infelizmente, não está claro exatamente quais utilitários usam sem verificá-los um por um. (Até agora, parece que nslookup e dig usam a metodologia linux e ping usa o que é "nativo" no Mac OS).
  • É um recurso (mais ou menos) documentado do método DNS "nativo" que ele escolhe dinamicamente para usar. Isso significa, em particular, que a ordem que aparece em janelas como o painel de controle da Rede ou a ordem especificada pelo roteador (no meu caso), não é respeitada.
  • Eu obtive algumas informações da ferramenta DNS "nativa" com o comando sudo killall -INFO mDNSResponder na linha de comando. Isso despeja as mensagens em /var/log/system.log . A partir dessa mensagem de log, parece que o DNS do meu ISP está listado primeiro dentro desse sistema. (Mais uma vez, observo que está listado segundo na configuração do roteador e no painel de controle da Rede. Ele também é listado em segundo lugar se eu executar scutil .)
  • Tentei liberar o cache no mDNSResponder usando sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder; , mas isso não ajudou.
  • Tentei editar o arquivo com.apple.mDNSResponder.plist como nestas instruções ( link ), mas não consegui editar o arquivo. (Somente leitura, mesmo com sudo vi .) Além disso, o arquivo no meu sistema tem um conteúdo diferente do que é explicitamente referenciado nessas instruções.

Na rede de tudo isso, no entanto, eu ainda tenho um Mac que não está funcionando em uma rede cheia de outros computadores que funcionam muito bem. Eu provavelmente poderia tirar o DNS do ISP no roteador para que ele nem sequer seja oferecido, mas isso parece um hack. Existe uma boa solução para isso em El Capitan?

Desculpe se isso já foi respondido. (Eu sinto que deve estar em algum lugar!) Eu tenho cavado em torno de e fora a maior parte do dia e não tenho uma solução no El Capitan até agora.

    
por Brick 09.02.2017 / 21:15

1 resposta

4

O MacOS tem um sistema sofisticado de roteamento de solicitações de DNS ("escopo de consultas") para lidar com casos como VPN, onde você pode querer que solicitações de nome de domínio do seu trabalho entrem em seu túnel VPN para obter respostas de seu trabalho. servidores DNS internos, que podem ter informações mais / diferentes que os servidores DNS externos do seu trabalho.

Para ver todos os servidores DNS que o macOS está usando e como o escopo da consulta está configurado, use:

scutil --dns

Para consultar o DNS do mesmo modo que o macOS, use:

dns-sd -G v4v6 example.com

… ou…

dns-sd -q example.com 255 255

Veja as man pages de scutil(8) e dns-sd(1) para mais informações.

Ferramentas de solução de problemas de DNS, como nslookup(1) , dig(1) e host(1) , contêm seu próprio código de resolvedor de DNS e não fazem uso das APIs de consulta DNS do sistema para não obter o comportamento do sistema. Se você não especificar qual servidor DNS usar, provavelmente usará apenas um dos listados em /etc/resolv.conf , que é gerado automaticamente e contém apenas os servidores DNS padrão para consultas sem escopo.

As tradicionais ferramentas de linha de comando Unix que não são específicas do DNS, como ping(8) , provavelmente chamam as tradicionais gethostbyname(3) APIs, que, no macOS, usam os comportamentos de resolução de DNS do sistema.

Para ver o que seu servidor DHCP disse ao seu Mac para usar, veja a linha domain_name_server na saída de:

ipconfig getpacket en0

(substitua en0 pelo nome correto da interface no estilo BSD como você veria em ifconfig )

Por favor, note que tenho certeza que os RFCs de DNS não exigem implementações de DNS para considerar a lista de servidores a serem classificados de preferência. Embora seja comum que as implementações de DNS as tratem dessa maneira, provavelmente não é aconselhável confiar em todas as implementações para implementar as coisas dessa maneira, se não estiverem especificadas nos padrões relevantes.

Ah, observe também que seu Mac também pode estar recebendo listas de servidores DNS de anúncios de roteador IPv6 ou DHCP6, se eles estiverem ativos em sua rede. E, claro, configurações de VPN, perfis de configuração instalados, Open Directory, Active Directory, etc., se qualquer uma dessas coisas estiver em uso no seu ambiente.

    
por 09.02.2017 / 22:15