O arquivo / etc / hosts do OS X 10.10.1 e / private / etc / hosts estão sendo ignorados e não estão sendo resolvidos

40

Como o título diz, executando o x 10.10.1. se eu tiver uma entrada no meu arquivo hosts e fizer um digou nslookupainda mostrar um IP diferente do que está no meu arquivo hosts, mesmo depois de tentar liberar vários caches.

Eu tentei o seguinte ..

  1. limpe os caches de mdns e udns executando:
    1. sudo discoveryutil mdnsflushcache;
    2. sudo discoveryutil udnsflushcaches;
  2. liberar cache usando dscacheutil -flushcache
  3. recarregar o discoveryd.plistarquivo
    1. sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.discoveryd.plist
    2. sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.discoveryd.plist

meu arquivo hosts fica assim ..

% cat /private/etc/hosts
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##

127.0.0.1   localhost
255.255.255.255 broadcasthost
::1             localhost
fe80::1%lo0 localhost
166.78.60.102   admin.devsite1.com
gorelativo
fonte
3
Parece que o Yosemite não está usando hosts da mesma maneira que antes; também não limpa os caches da mesma maneira, o & mDNS ficou em segundo plano - isso tem muita conversa sobre o assunto - forums.macrumors.com/showthread.php?t=1741422 Editar ahh ... eu acho você já chegou até azchipka.thechipkahouse.com/…
Tetsujin
graças, sim eu li que já .. se é assim que o OS X vai ser .. o seu fraco desempenho: \
gorelative
1
Fico feliz por não precisar confiar em hosts no Mac, tbh; Costumo jogar sempre no Win quando preciso fazer isso - embora essa não seja a única coisa que me afaste de Yosemite no momento :(
Tetsujin
Sim, meu rmbp é a principal máquina de desenvolvimento que eu uso para o desenvolvimento da web / sysadmin, infelizmente, e eu preciso resolver isso, caso contrário, voltarei aos mavericks.
gorelative
Outros podem querer simplesmente desativar o ipv6 em suas estações de trabalho. Achei isso que explica a chave: technipages.com/how-to-disable-ipv6-in-macos-sierra - No entanto, mesmo depois de desativar o ipv6 no meu nic, o problema persistiu .
James T Snell

Respostas:

61

/ private / etc / hosts parece estar funcionando normalmente para mim no Yosemite (versão 10.10.1). Não é necessário liberar o cache ou redefinir discoveryd(o resolvedor DNS no Yosemite); sudo fs_usage | grep private/etc/hostsmostra a discoverydleitura do arquivo imediatamente após salvar as alterações.

[Atualização: discoverydfoi usada apenas no OS X versões 10.10.0 - 10.10.3. Nas versões anteriores e posteriores, mDNSResponderfornece a mesma função ... e também nota imediatamente alterações no / etc / hosts.]

No entanto, dig, nslookup, e hostnão verá entradas nele porque desvio resolvedor do sistema e fazer pesquisas de DNS matérias. Eles sempre fizeram isso, então isso não é novidade em Yosemite. A maneira "oficial" de fazer uma pesquisa através do resolvedor do sistema no OS X é usar dscacheutil:

dscacheutil -q host -a name www.example.com

... mas como isso é dolorosamente detalhado, costumo usar apenas ping(e depois olhar para a primeira linha, onde ele lista qual IP está executando o ping). A partir do 10.9, você também pode usar a guia Pesquisa do Network Utility (antes disso dig, e, portanto, ignorou a política de pesquisa do sistema).

BTW, por favor, não preste atenção ao thread de macrumores que Tetsujin vinculou; está cheio de pessoas que não sabem o que estão fazendo e estão entendendo mal os resultados de seus próprios erros.

Gordon Davisson
fonte
1
graças Gordon, sim eu percebi depois que eu postei isso que dig, nslookupe hostnão use a resolução de DNS local. Dito isto /etc/hostsfunciona como esperado ..
gorelative
Se eu atualizar meu /etc/hostsarquivo ou o meu /private/etc/hostsarquivo, então ele não reflete em nada com dscacheutil -q host -a name www.example.comou qualquer comando ..
Trip
3
@ Trip verifique se as entradas adicionadas estão formatadas corretamente: endereço IP seguido por um espaço ou tabulação, seguido pelo nome e, em seguida, um avanço de linha no final da linha. Tente imprimir o arquivo hosts cat -vet /etc/hostspara tornar visíveis os caracteres normalmente invisíveis. Cada linha deve se parecer com "127.0.0.1 ^ Inetsecuritybureau.com $" (o "^ I" é uma guia e o "$" é o feed de linha) ou "127.0.0.1 netsecuritybureau.com $". Se você vir um "^ M" (retorno de carro) logo antes de "$", terá um texto formatado em DOS / Windows e precisará remover o (s) retorno (s) de carro.
Gordon Davisson
Ah uau, muito obrigado pela ajuda. Eu segui sua liderança para garantir que seja uma guia ou espaço. Minha linha lê exatamente:, M127.0.0.1^Iyoutube.com^M^Mentão eu executei dscacheutil -flushcache; sudo killall -HUP mDNSRespondere, ao navegar para o youtube.com, ele ainda exibe o youtube e não o localhost.
Viagem
@ Trip Existem várias maneiras de limpar caracteres invisíveis como os da linha de comando, mas eu recomendo o editor de GUI TextWrangler - use o menu View> Text Display> Show Invisibles para ver (e editar) coisas como essas retornos de carro. Além disso, é gratuito e possui opções para mostrar / abrir arquivos e pastas invisíveis (como / etc) e usar direitos de administrador para editar arquivos do sistema.
Gordon Davisson
17

Eu descobri outra ruga com esse problema.

Para corrigir o problema que eu estava tendo, tive que adicionar entradas de arquivo de hosts no estilo IPv6.

Parece que o Safari ignorará as entradas IPv4 SE você tiver uma configuração de rede IPv6.

Você deve adicionar entradas duplicadas que resolvam para o endereço de host local IPv6 em / etc / hosts.

Entrada IPv4 127.68.56.101 facebook.com

por exemplo, entrada IPv6 fe80::1%lo0 facebook.com

etc.

JB Smith
fonte
1
Observe que consegui que este funcionasse com sucesso usando os endereços IP mais curtos: 0.0.0.0 e :: 1
Ben Morrow
obrigado, funcionou para mim também. estava coçando a cabeça depois de restaurar minhas configurações de vhosts / apache após a atualização. estimado.
Gavin
Sim, isso também corrigiu para mim.
advert2013
1

Meu arquivo de hosts continuou sendo ignorado depois que eu editei na edição de texto. Tentei várias maneiras de corrigir as terminações de linha, adicionei entradas IPv6 às entradas existentes IPv4 sem êxito, seguindo a resposta de JB Smiths acima . Eu suspeito que a resposta dele funcionaria se minha empresa oferecer suporte ao IPv6, que eu descobri após minhas tentativas.

A única solução que funcionou para mim é usar este plug-in gratuito da GUI para editar o arquivo hosts.

https://github.com/specialunderwear/Hosts.prefpane/blob/master/README.mdown

Perigo14
fonte
1

Encontrei este artigo porque o Yosemite 10.10.5 não estava captando as alterações no arquivo hosts e nada que eu pudesse fazer foi corrigi-lo. (Reinicializei, tentei liberar caches, segui todos os conselhos que pude encontrar na internet etc etc).

A resposta foi tão simples que é constrangedora, na verdade, mas pensei em compartilhar. Eu usei o textedit para editar o arquivo hosts, e ele teve a liberdade de salvar o arquivo como hosts.txt. Normalmente, eu notaria algo assim, mas estou usando uma nova instalação do Yosemite e ainda não havia ativado "mostrar todas as extensões de arquivo", para que não parecesse que o nome do arquivo havia mudado quando o vi na área de trabalho.

Portanto, é meio óbvio, e a maioria das pessoas que está lendo esta postagem provavelmente já fez isso, mas verifique se o seu arquivo hosts está realmente lá e não foi substituído pelo hosts.txt .

Para ativar a exibição de extensões de nome de arquivo, vá para Finder> Preferências> Mostrar todas as extensões de nome de arquivo

Para impedir que o TextEdit adicione extensão .txt aos arquivos, abra um arquivo na edição de texto e escolha Arquivo> Salvar como (se você não vir o item de menu Salvar como , mantenha pressionada a tecla de opção depois de clicar em Arquivo e Salvar como deve aparecer no menu). Procure a opção Se nenhuma extensão for fornecida, use ".txt" e desmarque-a.

sandra
fonte
0

Acredito que a Apple reconhecerá isso como um bug (enviei um hoje). Notei que novas entradas /etc/hostssão selecionadas, mas as alterações nas entradas existentes são ignoradas. Então .... alterar o nome do host de uma entrada (por exemplo, web1 para web1a) forneceu uma solução alternativa para mim.

Entrada OLD / etc / hosts: 54.173.164.18 web1

Entrada NOVA / etc / hosts: 54.174.161.12 web1a

Marca
fonte
sudo dscacheutil -flushcache - limpa o cache do serviço de diretório.
Kevin Buchs
0

No meu caso, eu configuraria um arquivo .ssh / config

#Host *.ourdemo.ca
  User jumpy
  ProxyCommand ssh ourjumpbox.ca -W %h:%p
Martin Cleaver
fonte
Você se importaria de explicar o que o arquivo de configuração faz e como isso está relacionado à pergunta?
precisa saber é o seguinte
1
A questão era por que uma entrada em um arquivo / etc / hosts local estava sendo ignorada. No meu caso, ele estava sendo ignorado porque eu havia instruído a encapsular todo o tráfego para um conjunto de máquinas (* .ourdemo.ca) através de uma caixa de proxy (ourjumpbox.ca). O SSH obedeceu como proxy a conexão, de modo que acabou sendo o arquivo / etc / hosts do proxy sendo usado para resolver o endereço, e não o meu arquivo / etc / hosts local.
Martin Cleaver
0

Eu tive um problema muito semelhante no qual recebi por correio duas linhas a serem adicionadas ao meu /etc/hosts

O domínio continha um -likemy-domain.com

O problema acabou sendo o cliente de email do remetente - não importa dizer, o MS Outlook - que converteu os ascii -no longo -caractere que a Microsoft adora tanto usar sua correção automática incorporada para substituí-los pelos -deles -.

O arquivo hosts parecia perfeito e era difícil encontrar esse problema. Quando apaguei as linhas e as escrevi manualmente, elas começaram a funcionar.

Era tão difícil entender isso, que eu expliquei profundamente por que o cliente MacOS deveria ignorar o arquivo hosts e pular diretamente para a resolução de nomes.

Marco
fonte
0

Só tive esse problema. Isso foi causado por copiar / colar do hipchat em vez de escrever o endereço.

O processo de cópia adicionou caracteres incorretos em vez de espaços e causou o problema.

Reescrever a linha resolveu o problema.

Tata
fonte
0

Estou usando o aplicativo SelfControl (na verdade no macOS mojave 10.14.4) há algum tempo e descobri como o SelfControl faz suas entradas ... elas se parecem com isso:

0.0.0.0 xyz.com
:: xyz.com
0.0.0.0 www.xyz.com
:: www.xyz.com

com base nisso, mudei tudo para meu host local, então

127.0.0.1
::1

trabalho.

needlol
fonte
Não tenho certeza de como isso responde à pergunta. Parece apenas uma observação aleatória, não relacionada à questão.
Tetsujin
1
Você pode adicionar alguns detalhes sobre onde exatamente você mudou o que e como isso se relaciona com a pergunta?
nohillside
A questão era por que o arquivo hosts está sendo ignorado desde 10.10.1 ... Eu estava na mesma situação em que as entradas manuais eram ignoradas, mas as entradas feitas por meio do aplicativo SelfControl estavam funcionando conforme o esperado. O que faltava com minhas entradas anteriores, era a segunda parte, domínios com "www". Não foi possível descobrir o que mais havia de errado com minhas entradas, pois tudo estava funcionando bem antes da 10.10.1.
needlol