Dependendo de qual versão do Mac OS X você está usando, a forma como o DNS é tratado pelo sistema mudou.
Essencialmente, existem dois mecanismos de resolução de DNS no Mac OS X. A abordagem padrão do UNIX ( /etc/resolv.conf
) que é usada por dig
e, em seguida, a abordagem usada pelo resto do sistema.
No Mac OS X 10.4 e 10.5, as duas abordagens estavam muito mais ligadas; um refrescante tendia a refrescar os dois. No entanto, em 10.6 e em muito menos 10.5 é possível ter dig
dando a você o valor correto enquanto o mecanismo de resolução do sistema ainda tem um valor ruim.
Para limpar o cache DNS de cada uma das versões do Mac OS X:
- 10.4:
lookupd -flushcache
- 10,5:
dscacheutil -flushcache
- 10.6:
sudo dscacheutil -flushcache
orsudo killall -HUP mDNSResponder
(O primeiro comando deve executar o segundo comando para você agora, mas nas versões anteriores do 10.6 ele não apareceu)
ping
se bem me lembro usa a pesquisa do sistema - mecanismo de resolução tão diferente. /etc/resolv.conf
sempre usará os servidores DNS em ordem, enquanto mDNSResponder
tenta ser "inteligente", o que pode incomodar você na parte traseira, dependendo da configuração.
Além disso, você tem vários servidores DNS especificados no seu Mac e / ou via DHCP? O Snow Leopard introduziu um comportamento diferente (bug?) Onde a ordem dos servidores DNS irá mudar. Isso atrapalha o DNS dividido (internamente, você usa um IP, mas externamente um DNS diferente), pois às vezes ele pára de perguntar primeiro ao servidor DNS interno antes de solicitar o segundo servidor (externo desta vez) na fila. É supostamente um método para contatar o servidor DNS mais rápido para evitar atrasos relacionados ao DNS. A correção mais fácil anterior a 10.6.3 é servir apenas o servidor DNS interno via DHCP e verificar se as configurações de encaminhamento no servidor DNS estão definidas de acordo.
Agora, a partir de 10.6.3, é possível dizer ao mDNSResponder para sempre usar a ordem correta e não tentar otimizar os tempos de solicitação de DNS. Você pode fazer isso adicionando a chave StrictUnicastOrdering
e definindo-a como true para o daemon de Launch do mDNSResponder (e recarregue-a conforme necessário).
In Mac OS X v10.6, the default DNS server searching behavior is that when a server does not return a result (returning SERV_FAIL for a query), and other servers are available to query, the server is temporarily disabled in the search order for about thirty seconds. If there is more than one server for the query and all of them have returned SERV_FAIL, the servers will be queried in the order that they were disabled (that is, the server that has been disabled the longest will be used first).
(Fonte: support.apple.com e obrigado ao Yar que colocou isso antes que eu o fizesse.)
Você pode automatizar isso (um pouco mais rápido e mais fácil que os comandos da Apple) executando os seguintes comandos:
sudo /usr/libexec/PlistBuddy -c "Add :StrictUnicastOrdering bool true" /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
e inverta-o executando:
sudo /usr/libexec/PlistBuddy -c "Delete :StrictUnicastOrdering" com.apple.mDNSResponder.plist
Depois de um dos dois ou você precisará recarregar o trabalho no launchd para reiniciar o mDNSResponder executando:
sudo launchctl unload /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
e, em seguida, sudo launchctl load /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist