Reihenfolge der Auflösung von Löwen / Namen


9

(Dieses Problem wurde für mich mit dem 10.7.1-Update behoben - / etc / hosts funktioniert jetzt wie immer für mich.)

Ich habe meinen Mac auf Lion aktualisiert und jetzt stelle ich fest, dass / etc / hosts zuletzt auch nach DNS konsultiert wird. Das ist sehr ärgerlich, da ich dort viele Hostnamen habe, die ich für die Entwicklung verwende.

Wo ist die Reihenfolge der Namensauflösung konfiguriert? Ich kann es mit dscacheutil überprüfen. Eine Snow Leopard-Maschine sagt mir Folgendes:

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

Und hier ist, was Lion mir sagt

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

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

Abgesehen von den beiden Fehlern würde ich annehmen, dass / BSD / Local das ist, was es dazu bringt, / etc / hosts früher zu lesen.

Hat jemand eine Idee, wo diese "Cache-Suchrichtlinie" gespeichert ist und wie man sie wieder ändert?

Ich weiß, dass ich mit dcsl Hostnameneinträge erstellen kann, aber ich möchte meine / etc / hosts, die ich auf verschiedenen Computern verwende, wirklich behalten.

Update: Die Auflösungsreihenfolge kann anscheinend im Verzeichnis Utility konfiguriert werden. Leider listet dieses Installations-Directroy-Dienstprogramm die BSD-Dateien nicht mehr auf der Registerkarte Dienste auf.

Ist diese Funktion von Lion verschwunden? Oder ist diese Installation abgespritzt?

Antworten:


5

Ich habe das Problem gelöst (und damit als Antwort gepostet, anstatt die Frage zu ändern):

Die BSD-Dateien sind zwar weder im Verzeichnisdienstprogramm noch in dscacheutil mehr aufgeführt, aber mindestens / etc / hosts wird noch gelesen, aber es besteht das Problem, dass mehrere Hostnamen pro IP-Adresse nicht mehr unterstützt werden oder Zumindest funktionieren sie nicht richtig Geldautomaten.

Wann Ihre alten / etc / Hosts ausgesehen haben könnten

127.0.0.1 localhost foo foobar

Dies würde dazu führen, dass die Wartezeit von ~ 10 Sekunden einen dieser Hostnamen auflöst.

Aber wenn Sie verwenden

127.0.0.1 localhost
127.0.0.1 foo
127.0.0.1 foobar

Die Auflösung erfolgt sofort.

Die Antwort von RedGrittyBrick ist ebenfalls gültig, aber ich möchte weiterhin die Hosts-Datei verwenden, um das lokale Verzeichnis zu ändern, da es von verschiedenen meiner Entwicklungsmaschinen gemeinsam genutzt wird.

Um auch den Rest meiner Fragen zu beantworten (jetzt ist mir alles klar):

  • Die Cache-Auflösungsreihenfolge, die Sie im Verzeichnisdienstprogramm konfigurieren, in der Sie angeben können, welches der aktivierten Verzeichnisse Sie in welcher Reihenfolge anzeigen möchten.
  • Verwenden Sie zum Konfigurieren von Verzeichnissen auch das Verzeichnisdienstprogramm
  • Das Verzeichnisdienstprogramm wird gestartet, indem Sie zu Systemeinstellungen> Konten> Anmeldeoptionen> Verzeichnis beitreten> Verzeichnisdienstprogramm wechseln
  • In Lion ist das "Verzeichnis" der BSD-Dateien nicht mehr verfügbar, obwohl die Hilfedatei weiterhin darauf verweist
  • Wie gesagt, / etc / hosts wird immer noch gelesen, aber es gibt den oben beschriebenen Fehler.

Das Setzen jedes Eintrags in eine eigene Zeile hat es für mich nicht gelöst. Können Sie "foo" und "foobar" sowohl in Chrome als auch in Safari besuchen? Bei mir funktioniert es nur in Chrome. Können Sie eine vorhandene Website überschreiben, z. B. "127.0.0.1 www.google.com"? Für mich funktioniert das weder in Chrome noch in Safari.
Richard kmiller

Dies löste die 10s auf mich warten. Danke, das hat mich verrückt gemacht.
Josh Bleecher Snyder

Hat es für mich am 10.7.3 gelöst yay!
EMiller

3

Die Sache ist, dass Lion .local TLD anders behandelt, da es für einige Multicast-DNS-Funktionen reserviert ist (von Bonjour verwendet). Die einzige Möglichkeit, dieses Problem zu lösen, besteht darin, eine andere TLD für Entwicklungshosts zu verwenden (dh: .dev). Es funktioniert gut für mich, hoffe es wird anderen helfen!


Das war absolut das, was auf meiner Box passierte. thx
slf

1

Wie Sie wahrscheinlich wissen, besteht die traditionelle Unix-Methode darin, eine hostresorderoder order-Direktive zu verwenden /etc/resolv.conf. OS X liest (oder kann dazu gebracht werden) diese Dateien und verwendet sie, aber OS X verfügt über ein separates System, das über Netzwerkeinstellungen verwaltet wird, von denen ich glaube, dass sie diese Konfigurationsdateien beim Booten überschreiben.

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

Dies beantwortet Ihre Frage nicht, aber die Informationen und Links können helfen, eine zu finden. Ich hätte dies in einen Kommentar eingetragen, wenn ich es passend zusammenfassen könnte.


Ich kenne dscl, wollte aber speziell die Hosts-Datei verwenden, die in Lion nicht mehr explizit ein- und ausgeschaltet werden kann. Es wird immer gelesen, aber mit anderen Parsing-Regeln als zuvor - siehe meine Antwort auf meine Frage.
Pilif

1

Es ist möglich, dieses Problem zu umgehen, indem Sie dnsmasq als lokales DNS verwenden und dort Einträge hinzufügen oder dnsmasq verwenden /etc/hosts.

Es ist möglich, ein Skript zum Festlegen der DNS-Serverreihenfolge zu verwenden:

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

Erstellen Sie die Datei:

chmod +x setdns

Und dann benutze es mit (Beispiel): setdns domain.com 12.23.34.45
(Gepostet von emzy auf http://hints.macworld.com/article.php?story=20050621051643993 )

Wenn das Skript bei Netzwerkänderungen automatisch geladen werden soll, sollten Sie eine .plist erstellen, diese einfügen und Folgendes /Library/LaunchDaemonsverwenden:

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

1

Ich bin in Snow Leopard auf dieses Problem gestoßen, als ich versucht habe, einen transparenten Software Update Server einzurichten. Ich habe es jetzt auch bei Lion zum Laufen gebracht. Der Software Update Server selbst befindet sich auf halbem Weg zwischen einem Hack und einem Kludge, aber dieses Problem wurde ziemlich elegant gelöst. Folgendes weiß ich:

  • / etc / hosts existiert in Lion und ist wie die neuesten OS X-Versionen so eingestellt, dass sie nach DNS gelesen werden.
  • /etc/resolv.conf existiert in Lion, ist jedoch ein Symlink zu /var/run/resolv.conf.
  • /var/run/resolv.conf wird jedes Mal neu geschrieben, wenn Ihre Netzwerkkonfiguration aktualisiert wird. Dies kann auf Neustarts, Erneuerungen von DHCP-Leases usw. zurückzuführen sein.

Ich habe das folgende Skript erstellt. / 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

Diese Sicherung der aktuellen Hauptdatei resolv.conf erstellt eine neue mit der gewünschten Reihenfolge der Hosts vor BIND und verkettet die vorherige Datei bis zum Ende.

Ich rufe dieses Skript auf, indem ich die Hauptdatei resolv.conf mit dem folgenden gestarteten Job unter /Library/LaunchDaemons/com.domain.hostsBind.plist ansehe (Sie können com.domain in etwas ändern , das für Sie sinnvoll ist):

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

Dies hat für unsere Organisation mit einem Lion Software Update-Server funktioniert.

Als letztes ist zu beachten, dass dies auch mit Snow Leopard gut funktioniert, wenn Sie den Pfad für resolv.conf in /etc/resolv.conf ändern. Lion warf nur den Curveball des Symlinks auf / var / run / anstelle von / etc /.

-b

PS: Quelle für das Skript: http://forums.macrumors.com/showthread.php?p=6742920


Als ich dies versuchte, stellte der Job der Datei immer die Reihenfolge voran, da das Ändern der Datei ein neues Update auslöste.
Harmanjd

1

Es gibt eine Reihe von Problemen mit dem Apache-Server, der mit OSX Lion geliefert wird.

  1. Viele Module werden standardmäßig geladen.
    Öffnen /etc/apache2/httpd.confSie die Liste der aktivierten Module und gehen Sie sie durch (alle sind standardmäßig aktiviert). Sie können wahrscheinlich viele von ihnen ausschalten, indem Sie ein #vor die Linie setzen.

    Dies sind die, die ich ausgeschaltet habe:

#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. Die Hosts-Datei ist nicht perfekt.
    Öffnen Sie nun Ihre Hosts-Datei unter /etc/hosts. Hier sehen Sie diese Zeile (und einige Kommentare):

127.0.0.1 macbook-pro-van-bart.local

(anderer Computername natürlich). Fügen Sie die folgende Zeile hinzu (ändern Sie den Computernamen):

fe80::1%lo0 macbook-pro-van-bart.local
  1. Sehen Sie sich Ihre Apache-Konfiguration an. Stellen
    Sie sicher, dass Sie vhostssich nicht auf IPs verlassen. Ändern Sie sie wie folgt:

NameVirtualHost 127.0.0.1:80

Wird:

NameVirtualHost *: 80

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.