Alternativa descoberta para substituir o argumento mDNSResponder?

13

Este é um seguimento direto a esta pergunta . Antes de Yosemite , eu adicionava o argumento "-AlwaysAppendSearchDomains" ao arquivo mDNSResponder plist para que todas as pesquisas de resolvedores locais adicionassem os domínios de pesquisa, independentemente de haver um período no rótulo a ser procurado. Por exemplo, se eu tentar ssh como nome do host foo.bar ou foo, o domínio de pesquisa do baz.com deve ser tentado, não apenas no último caso, como foi (e é) o comportamento padrão.

Agora, parece que o mDNSResponder se foi, substituído pelo discoveryd. Não consigo encontrar uma opção semelhante para sempre anexar o domínio de pesquisa. Sugestões? Prefiro não seguir o caminho de usar um resolvedor local não padrão, mas considero isso uma opção. Por enquanto, digito apenas os FQDNs longos, mas prefiro não.

Obrigado, Pete

Sigsegv
fonte
Eu já havia tentado ativar o mDNSResponder desativado, mas desde o DP8 isso parece ausente :( Eu tenho um ticket de suporte escalado para os engenheiros da Yosemite agora sobre a opção -AlwaysAppendSearchDomains e como lidar com isso com o discoveryd, para que eu poste mais resultados aqui quando em contato comigo em poucos dias.
djh
@djh, alguma sorte com os engenheiros da Apple?
Sigsegv
Este é fixado no âmbito do 10.10.1 atualização: Allows you to append search domains for partially qualified domain names when performing DNS lookups (consult the discoveryd man page for more information). Veja a resposta de @ Teknisten abaixo.
cOle2
Esta parece ser menos relevante em versões mais recentes do MacOS desde que tenham removido discoveryd em 10.10.4 macrumors.com/2015/06/30/apple-releases-os-x-10-10-4
Scott Willeke

Respostas:

18

Desde a versão 10.10.1, a maneira mais simples de corrigir isso é adicionar --AlwaysAppendSearchDomainsao ProgramArgumentsarquivo plist/System/Library/LaunchDaemons/com.apple.discoveryd.plist

Em seguida, reinicie com.apple.discoveryd.plistcom:

sudo launchctl unload /System/Library/LaunchDaemons/com.apple.discoveryd.plist
sudo launchctl load /System/Library/LaunchDaemons/com.apple.discoveryd.plist

Tudo isso de acordo com a ajuda impressa por:

/usr/libexec/discoveryd --help

Isso fará o mesmo que para o mDNSResponder, até onde eu sei.

Teknisten
fonte
Infelizmente não estou trabalhando em El Capitan.
Dmitry Verkhoturov
4

Execute sudo discoveryutil mdnsactivedirectory yes no Terminal. De acordo com https://discussions.apple.com/message/26927843#26927843 , é a solução.

Isso pode ser feito para ser executado automaticamente sempre que iniciar um terminal sem uma senha:

  • sudo visudo
    • adicione uma linha ao fundo %admin ALL=NOPASSWD: /usr/sbin/discoveryutil
    • Se o grupo de administradores não funcionar, corra groupsno terminal e use um grupo apropriado - talvez 'equipe' ou 'todos'. Ou apenas use um nome de usuário individual sem os principais%
  • Para testar a alteração de visudo
    • sudo -k
    • sudo sue verifique se a senha é solicitada. Então control-c sem digitar sua senha
    • sudo discoveryutil mdnsactivedirectorye verifique se você não pediu a senha
  • Adicione uma linha a ~ / .bash_profile sudo discoveryutil mdnsactivedirectory yes
  • Adicionar terminal aos itens de login do usuário
    • na 10.10: Preferências do sistema-> Usuários e grupos, selecione Usuário
    • Vá para a guia "Itens de login" e adicione / Aplicativos / Utilitários / Terminal
user97566
fonte
Como você torna isso permanente? Após uma reinicialização, você precisará executar este comando novamente.
JoeriBe
Isso não parece funcionar para mim, pelo menos, nomes de host não-locais. Ainda preciso digitar "ssh foo.bar.baz.com" em vez de "ssh foo.bar", mesmo que ".baz.com" esteja no meu caminho de pesquisa.
SIGSEGV
Você não deve adicionar em um usuário ~/.bash_profileuma modificação na configuração que deve ser feita no nível do daemon do sistema aqui discoveryd.
dan
1

Infelizmente, não há solução, mas descobri que você pode pelo menos verificar a configuração do resolvedor usando 'discoveryutil', assim:

mdbraber-mba:~ mdbraber$ sudo discoveryutil configresolver
Configuration Resolvers: Resolver domain [default], type Unicast, ifIndex 4, port 0, timeout 30, A yes, AAAA no, serviceID 0, scope None, order 0
    server 192.168.143.1
    search domain ourhouse
Configuration Resolvers: Resolver domain [default], type Unicast, ifIndex 4, port 0, timeout 30, A yes, AAAA no, serviceID 0, scope InterfaceID, order 0
    server 192.168.143.1

Aparentemente, o primeiro resolvedor lista um domínio de pesquisa, embora não pareça funcionar nas versões do OS X <10.10. Não faço ideia por que existe um segundo resolvedor sem um domínio de pesquisa listado.

mdbraber
fonte
1

Aqui está uma solução hackeada usando um servidor de nomes local - funciona para mim:

https://github.com/joedj/yosemite_dnsfix

joedj
fonte
1
Seria melhor adicionar a solução como parte da resposta, caso contrário, se o link desaparecer, a resposta se tornará inútil. Você pode editar sua própria postagem para adicioná-la.
Tetsujin