Ordem de resolução de nomes de Leões

9

(esta questão foi embora para mim com a atualização 10.7.1 - / etc / hosts agora funciona como sempre para mim)

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

Onde está a ordem de resolução de nomes configurada? Eu posso verificar isso usando o 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 Lion 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

além dos dois erros, eu diria que / BSD / Local é o que faz com que ele leia / etc / hosts antes.

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

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

Update: A ordem de resolução pode aparentemente ser configurada no diretório Utility. Infelizmente, esta instalação do utilitário Directroy não lista mais os arquivos BSD na aba Serviços.

Esse recurso foi removido do Lion? Ou esta instalação é feita?

    
por pilif 21.07.2011 / 09:21

6 respostas

5

Resolvi o problema (e, assim, publiquei como uma resposta em vez de alterar a questão):

Os arquivos BSD não são listados no Directory Utility, nem no dscacheutil mais, mas pelo menos o / etc / hosts ainda é lido, mas há um problema em que vários nomes de host por endereço IP não parecem ser suportado mais ou pelo menos, eles não funcionam direito ATM.

Quando seu antigo / etc / hosts poderia ter parecido

127.0.0.1 localhost foo foobar

Isso causaria um tempo de espera de aproximadamente 10 segundos para resolver qualquer um desses nomes de host.

Mas se você usar

127.0.0.1 localhost
127.0.0.1 foo
127.0.0.1 foobar

A resolução será instantânea.

A resposta da RedGrittyBrick também é válida, mas eu quero continuar usando o arquivo hosts modificando o diretório local, já que ele é compartilhado entre várias máquinas de desenvolvimento.

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

  • A ordem de resolução do cache que você configura no utilitário de diretório no qual é possível determinar qual dos diretórios ativados deseja visualizar em qual ordem.
  • Para configurar diretórios, use também o utilitário de diretório
  • O utilitário de diretório é iniciado indo para Preferências do sistema > Contas > Opções de login > Juntar Diretório > Utilitário de diretório
  • No Lion, o "diretório" do BSD Files não está mais disponível, embora o arquivo de ajuda ainda se refira a ele
  • Como eu disse, o / etc / hosts ainda é lido, mas há o bug que descrevi acima.
por 21.07.2011 / 18:22
3

O assunto é que o Lion lida com o TLD local de maneira diferente, porque ele é reservado para alguns recursos DNS do Multicast (usados pelo Bonjour). A única maneira que encontrei para resolver esse problema é usando um TLD diferente para hosts de desenvolvimento (por exemplo: .dev). Funciona bem para mim, espero que seja útil para os outros!

    
por 28.07.2011 / 08:30
2

Há várias coisas erradas com o servidor apache fornecido com o OSX Lion.

  1. Muitos módulos são carregados por padrão.
    Abra /etc/apache2/httpd.conf e percorra a lista de módulos ativados (todos habilitados por padrão). Você provavelmente pode desativar muitos deles colocando # 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 hosts-file não é perfeito.
    Agora abra seu arquivo de 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 do apache
    Certifique-se de que seu vhosts não dependa de IPs. Altere-os assim:

NameVirtualHost 127.0.0.1:80

Torna-se:

NameVirtualHost *:80

    
por 23.02.2012 / 08:51
1

Como eu espero que você saiba, a maneira tradicional do Unix de lidar com isso é usando uma diretiva hostresorder ou order em /etc/resolv.conf . O OS X faz (ou pode ser feito para) ler e usar esses arquivos, mas o OS X tem um sistema separado administrado através de preferências de rede que Eu acredito que substitui esses arquivos de configuração no boot.

link

link

link

link

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

    
por 21.07.2011 / 10:51
1

É possível contornar esse problema usando dnsmasq como um DNS local e adicionando entradas nele, ou use o dnsmasq para usar /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, em seguida, use ist com (Exemplo): setdns domain.com 12.23.34.45
(Publicado por emzy no link )

Se você quiser que o script seja carregado automaticamente na alteração de rede, crie um .plist, coloque-o em /Library/LaunchDaemons e use:

sudo launchctl load -w /LibraryLaunchDaemons/name.your.plist
    
por 26.07.2011 / 21:55
1

Eu me deparei com esse problema no Snow Leopard ao tentar configurar um servidor de atualização de software transparente. Eu comecei a trabalhar no Lion agora também. O Servidor de Atualização de Software em si está na metade do caminho entre um hack e um kludge, mas esse problema foi resolvido com muita elegância. Aqui está o que eu sei:

  • / etc / hosts existe no Lion e como as versões recentes do OS X estão definidas como ser lido após o DNS.
  • /etc/resolv.conf existe no Lion, mas é um link simbólico para /var/run/resolv.conf.
  • /var/run/resolv.conf é reescrito a qualquer momento 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 resolve.conf, cria um novo arquivo com a ordem desejada de hosts antes do BIND e concatena o arquivo anterior até o final.

Eu chamo esse script observando o arquivo principal resolv.conf com a seguinte tarefa iniciada em /Library/LaunchDaemons/com.domain.hostsBind.plist (você pode alterar com.domain para algo que faz 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.

A última coisa a notar, isso funciona muito bem com o Snow Leopard também se você alterar o caminho do resolv.conf para /etc/resolv.conf. Lion apenas jogou a bola curva do symlink para / var / run / em vez de / etc /.

-b

P.S .: fonte do script: link

    
por 09.12.2011 / 13:51