Kolejność rozpoznawania lwa / imienia

9

(ten problem zniknął dla mnie z aktualizacją 10.7.1 - / etc / hosts teraz działa jak zawsze dla mnie)

Zaktualizowałem mojego Maca do Lion'a i teraz zauważam, że / etc / hosts jest sprawdzany ostatnio, nawet po DNS. To bardzo denerwujące, ponieważ mam tam wiele nazw hostów, których używam do programowania.

Gdzie jest skonfigurowana kolejność rozpoznawania nazw? Mogę to sprawdzić za pomocą dscacheutil, więc oto, co mówi mi maszyna 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

I oto, co mówi mi 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

pomijając dwa błędy, zakładam, że / BSD / Local jest tym, co sprawia, że ​​czytał / etc / hosts wcześniej.

Czy ktoś ma pojęcie, gdzie ta „Polityka wyszukiwania pamięci podręcznej” jest przechowywana i jak ją zmienić?

Wiem, że mogę tworzyć wpisy nazw hostów za pomocą dcsl, ale naprawdę chciałbym zachować moje / etc / hosts, których używam na różnych komputerach.

Aktualizacja: Kolejność rozwiązywania najwyraźniej można skonfigurować w katalogu Utility. Niestety, ta instalacja Directroy Utility nie wyświetla już plików BSD na karcie Usługi.

Czy ta funkcja zniknęła z Lion? A może ta instalacja jest zamknięta?

pilif
źródło

Odpowiedzi:

5

Rozwiązałem problem (i dlatego opublikowałem jako odpowiedź zamiast zmiany pytania):

Pliki BSD faktycznie nie są wymienione w Directory Utility ani w dscacheutil, ale przynajmniej / etc / hosts jest nadal odczytywany, ale istnieje problem polegający na tym, że wiele nazw hostów na adres IP nie jest już obsługiwanych lub przynajmniej nie działają poprawnie z bankomatu.

Kiedy mógł wyglądać twój stary / etc / hosts

127.0.0.1 localhost foo foobar

Spowodowałoby to, że czas oczekiwania ~ 10 sekund na rozwiązanie którejkolwiek z tych nazw hostów.

Ale jeśli użyjesz

127.0.0.1 localhost
127.0.0.1 foo
127.0.0.1 foobar

Rozdzielczość będzie natychmiastowa.

Odpowiedź RedGrittyBrick również jest poprawna, ale szczególnie chcę nadal używać pliku hosts zamiast modyfikować katalog lokalny, ponieważ jest on współdzielony przez różne moje maszyny programistyczne.

Aby odpowiedzieć również na pozostałe pytania (teraz wszystko jest dla mnie jasne):

  • Kolejność rozpoznawania pamięci podręcznej konfigurowana w narzędziu katalogowym, w której można określić, w którym z włączonych katalogów ma wyglądać, w jakiej kolejności.
  • Aby skonfigurować katalogi, użyj również narzędzia katalogowego
  • Narzędzie katalogowe uruchamia się, przechodząc do Preferencji systemowych> Konta> Opcje logowania> Dołącz do katalogu> Narzędzie katalogowe
  • W Lionie „katalog” plików BSD nie jest już dostępny, mimo że plik pomocy wciąż się do niego odwołuje
  • Jak powiedziałem, / etc / hosts jest nadal czytany, ale jest błąd, który opisałem powyżej.
pilif
źródło
Umieszczenie każdego wpisu w osobnej linii nie rozwiązało go dla mnie. Czy możesz odwiedzić „foo” i „foobar” zarówno w Chrome, jak i Safari? Dla mnie działa tylko w Chrome. Czy możesz zastąpić istniejącą witrynę, np. „127.0.0.1 www.google.com”? Dla mnie to nie działa ani w Chrome, ani w Safari.
richardkmiller
To rozwiązało oczekiwania na 10 sekund. Dziękuję, to doprowadzało mnie do szału.
Josh Bleecher Snyder 10.11.11
Rozwiązano go dla mnie 10.7.3 yay!
EMiller
3

Chodzi o to, że Lion inaczej obsługuje .Local TLD, ponieważ jest zarezerwowany dla niektórych funkcji DNS multiemisji (używanych przez Bonjour). Jedynym sposobem, w jaki znalazłem rozwiązanie tego problemu, jest użycie innej TLD dla hostów programistycznych (tj. .Dev). Działa dla mnie dobrze, mam nadzieję, że będzie pomocny dla innych!

Jean-Baptiste MONIN
źródło
to było absolutnie to, co działo się na moim pudełku. thx
slf 12.03.13
1

Jak się domyślam, tradycyjnym uniksowym sposobem radzenia sobie z tym jest użycie dyrektywy hostresorderlub orderw /etc/resolv.conf. OS X czyta te pliki i może z nich korzystać, ale OS X ma osobny system zarządzany za pomocą preferencji sieciowych, które moim zdaniem nadpisują te pliki konfiguracyjne podczas uruchamiania.

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

To nie odpowiada na twoje pytanie, ale informacje i linki mogą pomóc je znaleźć. Umieściłbym to w komentarzu, gdybym mógł to zagęścić, aby dopasować.

RedGrittyBrick
źródło
Wiem o dscl, ale szczególnie chciałem użyć pliku hosts, którego nie można już jawnie włączać i wyłączać w Lionie. Zawsze jest czytany, ale z innymi regułami analizy niż poprzednio - zobacz moją odpowiedź na moje pytanie.
pilif
1

Można obejść ten problem, używając dnsmasq jako lokalnego DNS i dodając tam wpisy lub używając dnsmasq do użycia /etc/hosts.

Możliwe jest użycie skryptu do ustawienia kolejności serwerów 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
-------------------------------------------------

Utwórz plik:

chmod +x setdns

A potem użyj ist z (Przykład): setdns domain.com 12.23.34.45
(Wysłany przez emzy na http://hints.macworld.com/article.php?story=20050621051643993 )

Jeśli chcesz, aby skrypt ładował się automatycznie przy zmianie sieci, powinieneś utworzyć .plist, włożyć go /Library/LaunchDaemonsi użyć:

sudo launchctl load -w /LibraryLaunchDaemons/name.your.plist
qpqp
źródło
1

Napotkałem ten problem w systemie Snow Leopard, próbując skonfigurować przezroczysty serwer aktualizacji oprogramowania. Teraz pracuję też nad Lionem. Sam serwer aktualizacji oprogramowania znajduje się w połowie drogi między hackiem a kludge, ale ten problem został rozwiązany dość elegancko. Oto co wiem:

  • / etc / hosts istnieje w Lionie i podobnie jak najnowsze wersje OS X, ustawiony jest do odczytu po DNS.
  • /etc/resolv.conf istnieje w Lionie, ale jest dowiązaniem symbolicznym do /var/run/resolv.conf.
  • Plik /var/run/resolv.conf jest przepisywany przy każdej aktualizacji konfiguracji sieci. Może to być spowodowane ponownym uruchomieniem, odnowieniem dzierżawy DHCP itp.

Utworzyłem następujący skrypt. / 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

ta kopia zapasowa bieżącego głównego pliku resolv.conf, tworzy nowy z żądaną kolejnością hostów przed BIND i konkatenuje poprzedni plik do końca.

Wywołuję ten skrypt, oglądając główny plik resolv.conf z następującym uruchomionym zadaniem w /Library/LaunchDaemons/com.domain.hostsBind.plist (możesz zmienić com.domain na coś, co ma dla ciebie sens):

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

Działa to dla naszej organizacji z serwerem Lion Software Update.

Na koniec należy zauważyć, że działa to również dobrze w przypadku Snow Leopard, jeśli zmienisz ścieżkę do resolv.conf na /etc/resolv.conf. Lion właśnie rzucił krzywą dowiązania symbolicznego do / var / run / zamiast / etc /.

-b

PS: Źródło skryptu: http://forums.macrumors.com/showthread.php?p=6742920

supreme_b_ing
źródło
kiedy próbowałem, zadanie kontynuowało zamówienie w pliku, ponieważ zmiana pliku wywołała nową aktualizację.
harmanjd
1

Jest wiele rzeczy nie tak z serwerem Apache, który jest dostarczany z OSX Lion.

  1. Domyślnie ładowanych jest wiele modułów .
    Otwórz /etc/apache2/httpd.confi przejrzyj listę włączonych modułów (wszystkie są domyślnie włączone). Prawdopodobnie możesz wyłączyć wiele z nich, umieszczając znak #z przodu linii.

    Oto te, które wyłączyłem:

#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. Plik hosts nie jest idealny.
    Teraz otwórz plik hosts, który znajduje się na /etc/hosts. Tutaj zobaczysz ten wiersz (i kilka komentarzy):

127.0.0.1 macbook-pro-van-bart.local

(inna nazwa komputera oczywiście). Dodaj następujący wiersz (zmień nazwę komputera):

fe80::1%lo0 macbook-pro-van-bart.local
  1. Spójrz na konfigurację apache
    Upewnij się, vhostsże nie polegasz na adresach IP. Zmień je w ten sposób:

NameVirtualHost 127.0.0.1:80

Staje się:

NameVirtualHost *: 80

Bart De Vos
źródło