Ordine risoluzione leone / nome


9

(questo problema è andato via per me con l'aggiornamento 10.7.1 - / etc / hosts ora funziona come sempre per me)

Ho aggiornato il mio Mac a Lion e ora noto che / etc / hosts è stato consultato per ultimo, anche dopo DNS. Questo è molto fastidioso perché ho molti nomi host che uso per lo sviluppo.

Dove viene configurato l'ordine di risoluzione dei nomi? Posso controllarlo usando dscacheutil, quindi ecco cosa mi dice una macchina Snow Leopard:

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

Ed ecco cosa mi dice Lion

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

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

a parte i due errori, suppongo che / BSD / Local sia ciò che lo fa leggere / etc / hosts in precedenza.

Qualcuno ha idea di dove sia memorizzata questa "politica di ricerca nella cache" e come cambiarla?

So che posso creare voci del nome host usando dcsl, ma mi piacerebbe davvero mantenere il mio / etc / hosts che uso su varie macchine.

Aggiornamento: apparentemente l'ordine di risoluzione può essere configurato nella directory Utility. Sfortunatamente, questa installazione Directroy Utility non elenca più i file BSD nella scheda Servizi.

Questa funzione è andata via da Lion? O questa installazione è stata curata?

Risposte:


5

Ho risolto il problema (e quindi pubblicando come risposta invece di modificare la domanda):

I file BSD non sono in effetti elencati in Directory Utility, né più in dscacheutil, ma almeno / etc / hosts è ancora letto, ma c'è un problema nel fatto che più nomi host per indirizzo IP non sembrano più supportati o almeno, non funzionano bene ATM.

Quando il tuo vecchio / etc / hosts avrebbe potuto apparire

127.0.0.1 localhost foo foobar

Ciò causerebbe il tempo di attesa di circa 10 secondi per risolvere uno di questi nomi host.

Ma se usi

127.0.0.1 localhost
127.0.0.1 foo
127.0.0.1 foobar

La risoluzione sarà istantanea.

Anche la risposta di RedGrittyBrick è valida, ma in particolare desidero continuare a utilizzare il file hosts per modificare la directory locale in quanto condivisa tra le mie varie macchine di sviluppo.

Per rispondere anche al resto delle mie domande (ora tutto mi è chiaro):

  • L'ordine di risoluzione della cache configurato nell'utilità di directory in cui è possibile indicare quale delle directory abilitate si desidera esaminare in quale ordine.
  • Per configurare le directory, utilizzare anche l'utilità di directory
  • L'utilità di directory viene avviata selezionando Preferenze di Sistema> Account> Opzioni di accesso> Unisci directory> Utilità di directory
  • In Lion, la "directory" dei file BSD non è più disponibile anche se il file della guida fa ancora riferimento ad essa
  • Come ho detto, / etc / hosts è ancora letto, ma c'è il bug che ho descritto sopra.

Mettere ogni voce sulla propria riga non l'ha risolto per me. Puoi visitare "foo" e "foobar" in Chrome e Safari? Per me, funziona solo in Chrome. Puoi ignorare un sito Web esistente, ad esempio "127.0.0.1 www.google.com"? Per me, ciò non funziona in Chrome o Safari.
richardkmiller,

Questo ha risolto i 10 anni che mi aspettavano. Grazie, mi stava facendo impazzire.
Josh Bleecher Snyder,

Risolto per me il 10.7.3 yay!
EMiller

3

La questione è che Lion gestisce .local TLD in modo diverso perché è riservato ad alcune funzionalità DNS multicast (utilizzate da Bonjour). L'unico modo in cui ho scoperto di risolvere questo problema è utilizzare un TLD diverso per gli host di sviluppo (ad esempio: .dev). Funziona bene per me, spero che possa essere utile agli altri!


questo era assolutamente ciò che stava accadendo sulla mia scatola. thx
slf

1

Come mi aspetto, il modo tradizionale Unix di gestirlo è utilizzare una hostresordero una orderdirettiva /etc/resolv.conf. OS X legge (o può essere fatto per) leggere e utilizzare questi file, ma OS X ha un sistema separato gestito attraverso le preferenze di rete che credo sovrascrive questi file di configurazione all'avvio.

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

Questo non risponde alla tua domanda, ma le informazioni e i link potrebbero aiutarti a trovarne uno. Lo metterei in un commento se potessi condensarlo per adattarlo.


Conosco dscl, ma in particolare volevo usare il file hosts che non può più essere esplicitamente attivato e disattivato in Lion. Viene sempre letto, ma con regole di analisi diverse rispetto a prima: vedi la mia risposta alla mia domanda.
pilif,

1

È possibile aggirare questo problema usando dnsmasq come DNS locale e aggiungendo voci lì, oppure usare dnsmasq per usarlo /etc/hosts.

È possibile utilizzare uno script per impostare l'ordine del server 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
-------------------------------------------------

Crea il file:

chmod +x setdns

E quindi usa ist con (Esempio): setdns domain.com 12.23.34.45
(pubblicato da emzy su http://hints.macworld.com/article.php?story=20050621051643993 )

Se desideri che lo script si carichi automaticamente sulle modifiche di rete, devi creare un .plist, inserirlo /Library/LaunchDaemonse utilizzare:

sudo launchctl load -w /LibraryLaunchDaemons/name.your.plist

1

Ho riscontrato questo problema in Snow Leopard durante il tentativo di configurare un server di aggiornamento software trasparente. Ora l'ho fatto funzionare anche su Lion. Lo stesso Software Update Server si trova a metà strada tra un hack e un kludge, ma questo problema è stato risolto in modo abbastanza elegante. Ecco quello che so:

  • / etc / hosts esiste in Lion e come le recenti versioni di OS X è impostato per essere letto dopo DNS.
  • /etc/resolv.conf esiste in Lion ma è un collegamento simbolico a /var/run/resolv.conf.
  • /var/run/resolv.conf viene riscritto ogni volta che la configurazione della rete viene aggiornata. Ciò può essere dovuto a riavvii, rinnovi del lease DHCP, ecc.

Ho creato il seguente 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

questo backup il file principale resolv.conf corrente, crea uno nuovo con l'ordine desiderato di host prima di BIND e concatena il file precedente fino alla fine.

Chiamo questo script guardando il file principale resolv.conf con il seguente lavoro avviato su /Library/LaunchDaemons/com.domain.hostsBind.plist (puoi cambiare com.domain in qualcosa che abbia senso per te):

<?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>

Questo ha funzionato per la nostra organizzazione con un server Lion Software Update.

Ultima cosa da notare, funziona bene anche con Snow Leopard se cambi il percorso per resolv.conf in /etc/resolv.conf. Lion ha appena lanciato la curva del link simbolico in / var / run / anziché / etc /.

-b

PS: fonte per lo script: http://forums.macrumors.com/showthread.php?p=6742920


quando ho provato questo, il lavoro ha continuato a anteporre l'ordine al file perché la modifica del file ha innescato un nuovo aggiornamento.
harmanjd,

1

Ci sono molte cose che non vanno nel server apache fornito con OSX Lion.

  1. Molti moduli sono caricati di default.
    Apri /etc/apache2/httpd.confe consulta l'elenco dei moduli abilitati (tutti sono abilitati per impostazione predefinita). Probabilmente puoi spegnerne molti mettendo un #davanti alla linea.

    Questi sono quelli che ho spento:

#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. Il file hosts non è perfetto.
    Ora apri il tuo file hosts, che si trova in /etc/hosts. Qui vedrai questa riga (e alcuni commenti):

127.0.0.1 macbook-pro-van-bart.local

(altro nome computer fuori rotta). Aggiungi la seguente riga (cambia il nomecomputer):

fe80::1%lo0 macbook-pro-van-bart.local
  1. Dai un'occhiata alla tua configurazione di apache
    Assicurati di vhostsnon fare affidamento sugli IP. Modificali in questo modo:

NameVirtualHost 127.0.0.1:80

diventa:

NomeVirtualHost *: 80

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.