Ordem de resolução de leão / nome

9

(esse problema foi resolvido para mim com a atualização 10.7.1 - / etc / hosts agora funciona como sempre para mim)

Atualizei meu Mac para Lion e agora noto que o / etc / hosts é consultado por último, mesmo depois do DNS. Isso é muito chato, porque eu tenho muitos nomes de host que eu uso no desenvolvimento.

Onde está configurada a ordem de resolução de nomes? Posso verificá-lo usando dscacheutil, então aqui está o que uma máquina do Snow Leopard me diz:

pilif@tali ~ % dscacheutil -configuration
DirectoryService Cache search policy:
    /Local/Default
    /BSD/local

Settings:
AAAA Queries  - Disabled (link-local IPv6 addresses)
Default TTL   - 3600
Policy Flags  - 0

E aqui está o que o Leão me diz

pilif@kosmos ~ % dscacheutil -configuration
DirectoryService Cache search policy:
    /Local/Default

Unable to get details from the cache node
Unable to get cache configuration information

aparte dos dois erros, eu diria que / BSD / Local é o que faz com que seja lido / etc / hosts anteriormente.

Alguém tem alguma idéia de onde esta "política de pesquisa de cache" está armazenada e como alterá-la novamente?

Eu sei que posso criar entradas de nome de host usando dcsl, mas eu realmente gostaria de manter meus / etc / hosts que eu uso em várias máquinas.

Atualização: a ordem de resolução pode aparentemente ser configurada no diretório Utility. Infelizmente, essas instalações O Directroy Utility não lista mais os arquivos BSD na guia Serviços.

Esse recurso saiu do Lion? Ou essa instalação é mangueira?

pilif
fonte

Respostas:

5

Resolvi o problema (e, portanto, postei como resposta em vez de alterar a pergunta):

Os arquivos BSD realmente não estão listados no Directory Utility, nem no dscacheutil, mas pelo menos o / etc / hosts ainda é lido, mas há um problema em que vários nomes de host por endereço IP parecem não ter mais suporte ou pelo menos, eles não funcionam corretamente no caixa eletrônico.

Quando seus / etc / hosts antigos poderiam parecer

127.0.0.1 localhost foo foobar

Isso faria com que o tempo de espera de ~ 10 segundos resolvesse qualquer um desses nomes de host.

Mas se você usa

127.0.0.1 localhost
127.0.0.1 foo
127.0.0.1 foobar

A resolução será instantânea.

A resposta de RedGrittyBrick também é válida, mas quero especificamente continuar usando o arquivo hosts, modificando o diretório local, pois é compartilhado entre várias máquinas de desenvolvimento minhas.

Para responder também ao restante das minhas perguntas (agora tudo está claro para mim):

  • A ordem de resolução do cache que você configura no utilitário de diretório, em que é possível dizer qual dos diretórios ativados você deseja procurar em que ordem.
  • Para configurar diretórios, também use o utilitário de diretório
  • O utilitário de diretório é iniciado acessando Preferências do Sistema> Contas> Opções de Login> Ingressar no Diretório> Utilitário de Diretório.
  • No Lion, o "diretório" dos Arquivos BSD não está mais disponível, mesmo que o arquivo de ajuda ainda faça referência a ele
  • Como eu disse, o / etc / hosts ainda é lido, mas há o bug que descrevi acima.
pilif
fonte
Colocar cada entrada em sua própria linha não resolveu isso para mim. Você pode visitar "foo" e "foobar" no Chrome e no Safari? Para mim, ele funciona apenas no Chrome. Você pode substituir um site existente, por exemplo, "127.0.0.1 www.google.com"? Para mim, isso não funciona no Chrome ou no Safari.
Richardkmiller
Isso resolveu os 10s esperem por mim. Obrigado, isso estava me deixando louco.
Josh Bleecher Snyder
Resolvi isso para mim em 10.7.3 yay!
EMiller
3

O problema é que o Lion lida com o TLD local. Diferentemente porque é reservado para alguns recursos de DNS de difusão seletiva (usados ​​por Bonjour). A única maneira que encontrei para resolver esse problema é usar um TLD diferente para hosts de desenvolvimento (por exemplo: .dev). Funciona bem para mim, espero que seja útil para os outros!

Jean-Baptiste MONIN
fonte
isso era absolutamente o que estava acontecendo na minha caixa. thx
slf 12/03
1

Como eu espero que você saiba, a maneira tradicional do Unix de lidar com isso é usando uma diretiva hostresorderou . O OS X lê (ou pode ser feito para) ler e usar esses arquivos, mas o OS X possui um sistema separado administrado por meio de preferências de rede que, acredito, substituem esses arquivos de configuração na inicialização.order/etc/resolv.conf

http://hints.macworld.com/article.php?story=20070223050607406

http://docs.info.apple.com/article.html?path=ServerAdmin/10.6/en/od4939886e.html

https://discussions.apple.com/thread/2493759

http://blog.daemon.com.au/go/blog-post/managing-the-host-file-on-leopard

Isso não responde à sua pergunta, mas as informações e os links podem ajudar a encontrar uma. Eu colocaria isso em um comentário se pudesse condensá-lo para caber.

RedGrittyBrick
fonte
Eu sei sobre dscl, mas eu queria especificamente usar o arquivo hosts que não pode mais ser ativado e desativado explicitamente no Lion. É sempre lido, mas com regras de análise diferentes das anteriores - veja minha resposta para minha pergunta.
pilif 21/07
1

É possível solucionar esse problema usando o dnsmasq como um DNS local e adicionando entradas lá, ou use o dnsmasq para usá-lo /etc/hosts.

É possível usar um script para definir a ordem do servidor DNS:

Filename: setdsn
-------------------------------------------------
#!/bin/bash

# Script is used to set the Nameserver Lookup under Max OS X 10.4 with the Console
# Script by Stephan Oeste

if [ $# -lt 2 ] ; then
echo "Use: $0 [2.Nameserver]"
echo "Example Use: $0 example.tld 1.2.3.4 1.2.3.5"
exit 1
fi

PSID=$( (scutil | grep PrimaryService | sed -e 's/.*PrimaryService : //')<< EOF
open
get State:/Network/Global/IPv4
d.show
quit
EOF
)

scutil << EOF
open
d.init
d.add ServerAddresses * $2 $3
d.add DomainName $1
set State:/Network/Service/$PSID/DNS
quit
EOF
-------------------------------------------------

Crie o arquivo:

chmod +x setdns

E então use ist com (Exemplo): setdns domain.com 12.23.34.45
(Publicado por emzy em http://hints.macworld.com/article.php?story=20050621051643993 )

Se você deseja que o script seja carregado automaticamente na alteração de rede, crie um .plist, insira-o /Library/LaunchDaemonse use:

sudo launchctl load -w /LibraryLaunchDaemons/name.your.plist
qpqp
fonte
1

Eu me deparei com esse problema no Snow Leopard ao tentar configurar um Software Update Server transparente. Eu também consegui trabalhar no Lion agora. O próprio Software Update Server está a meio caminho entre um hack e um kludge, mas esse problema foi resolvido com bastante elegância. Aqui está o que eu sei:

  • / etc / hosts existe no Lion e, como versões recentes do OS X, está definido para ser lido após o DNS.
  • O /etc/resolv.conf existe no Lion, mas é um link simbólico para /var/run/resolv.conf.
  • /var/run/resolv.conf é reescrito sempre que sua configuração de rede é atualizada. Isso pode ser devido a reinicializações, renovações de concessão de DHCP, etc.

Eu criei o seguinte script. / usr / local / hostsBind:

mv /var/run/resolv.conf /var/run/resolv.conf.new
echo order hosts, bind > /var/run/resolv.conf
cat /var/run/resolv.conf.new >> /var/run/resolv.conf

esse backup do arquivo principal atual resolv.conf, cria um novo com a ordem desejada de hosts antes do BIND e concatena o arquivo anterior até o final.

Eu chamo esse script assistindo o arquivo principal resolv.conf com o seguinte trabalho iniciado em /Library/LaunchDaemons/com.domain.hostsBind.plist (você pode alterar o com.domain para algo que faça sentido para você):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.domain.hostsBind</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/hostsBind</string>
    </array>
    <key>WatchPaths</key>
    <array>
        <string>/var/run/resolv.conf</string>
    </array>
</dict>
</plist>

Isso tem funcionado para nossa organização com um servidor Lion Software Update.

Por último, observe que isso também funciona bem com o Snow Leopard, se você alterar o caminho do resolv.conf para /etc/resolv.conf. O Lion jogou a bola curva do link simbólico para / var / run / em vez de / etc /.

-b

PS: Origem do script: http://forums.macrumors.com/showthread.php?p=6742920

supreme_b_ing
fonte
quando tentei isso, o trabalho manteve a ordem do arquivo, porque a alteração do arquivo acionou uma nova atualização.
precisa saber é o seguinte
1

Há várias coisas erradas no servidor apache que acompanha o OSX Lion.

  1. Muitos módulos são carregados por padrão.
    Abra /etc/apache2/httpd.confe percorra a lista de módulos ativados (todos eles estão ativados por padrão). Você provavelmente pode desativar muitos deles colocando um #na frente da linha.

    Estes são os que eu desliguei:

#LoadModule authn_dbm_module libexec/apache2/mod_authn_dbm.so
#LoadModule authn_anon_module libexec/apache2/mod_authn_anon.so
#LoadModule authn_dbd_module libexec/apache2/mod_authn_dbd.so
#LoadModule authn_default_module libexec/apache2/mod_authn_default.so
#LoadModule authz_groupfile_module libexec/apache2/mod_authz_groupfile.so
#LoadModule authz_user_module libexec/apache2/mod_authz_user.so
#LoadModule authz_dbm_module libexec/apache2/mod_authz_dbm.so
#LoadModule authz_owner_module libexec/apache2/mod_authz_owner.so
#LoadModule authz_default_module libexec/apache2/mod_authz_default.so
#LoadModule auth_basic_module libexec/apache2/mod_auth_basic.so
#LoadModule auth_digest_module libexec/apache2/mod_auth_digest.so
#LoadModule dbd_module libexec/apache2/mod_dbd.so
#LoadModule mime_magic_module libexec/apache2/mod_mime_magic.so
#LoadModule unique_id_module libexec/apache2/mod_unique_id.so
#LoadModule proxy_connect_module libexec/apache2/mod_proxy_connect.so
#LoadModule proxy_ftp_module libexec/apache2/mod_proxy_ftp.so
#LoadModule proxy_scgi_module libexec/apache2/mod_proxy_scgi.so
#LoadModule proxy_ajp_module libexec/apache2/mod_proxy_ajp.so
#LoadModule dav_module libexec/apache2/mod_dav.so
#LoadModule dav_fs_module libexec/apache2/mod_dav_fs.so
#LoadModule bonjour_module libexec/apache2/mod_bonjour.so
#LoadModule fastcgi_module libexec/apache2/mod_fastcgi.so
  1. O arquivo hosts não é perfeito.
    Agora abra seu arquivo hosts, localizado em /etc/hosts. Aqui você verá esta linha (e alguns comentários):

127.0.0.1 macbook-pro-van-bart.local

(outro nome de computador fora do curso). Adicione a seguinte linha (altere o nome do computador):

fe80::1%lo0 macbook-pro-van-bart.local
  1. Dê uma olhada na sua configuração apache
    Verifique se você vhostsnão depende de IPs. Altere-os assim:

NameVirtualHost 127.0.0.1:80

Torna-se:

NomeVirtualHost *: 80

Bart De Vos
fonte