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?

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.

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!


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.


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

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


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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.