Jak skonfigurowane jest wyszukiwanie DNS dla OSX Mountain Lion?

33

Jeśli sonduję mój resolv.conf, zobaczę ten komunikat:

#
# Mac OS X Notice
#
# This file is not used by the host name and address resolution
# or the DNS query routing mechanisms used by most processes on
# this Mac OS X system.
#
# This file is automatically generated.
#

Próbuję dodać wpis DNS. Zedytowałem plik hosts i opróżniłem pamięć podręczną dns, ale nazwa nie rozwiąże się, jeśli użyję host servername. Pomyślałem, że być może hostnie został skonfigurowany do przeglądania hostspliku. Jak mogę uzyskać mój nowy wpis do rozwiązania i czego używa OSX, jeśli nie resolv.conf?

Ben Flynn
źródło

Odpowiedzi:

17

Narzędzie hosta nie tylko rozpoznaje nazwy (jak w, używając systemowego rozpoznawania nazw), ale w rzeczywistości wysyła zapytania do serwerów dns (jak w, wysyłając pakiety do udp / 53 i ewentualnie tcp / 53): nie zna ani nie używa lokalnego hostspliku .

Jeśli chcesz przetestować resolver systemu operacyjnego (np. Gethostbyname () i podobne funkcje libc), możesz spróbować pingować nazwę, którą dodałeś, /etc/hostsa honoruje to, co umieścisz w tym pliku.

Ponadto, jak już się dowiedziałeś, wyszukiwanie DNS w Mac OSX nie używa /etc/resolv.conf, a poprawny sposób skonfigurowania zapytań do serwerów DNS znajduje się w GUI i / lub networksetupnarzędziu wiersza poleceń w Ustawieniach sieciowych . Naprawdę nie wiem, czy możesz skonfigurować kolejność, w której źródła są wypróbowywane, ale standardowym zachowaniem jest /etc/hostsnajpierw próba, a następnie serwery dns.

Luke404
źródło
1
Znalazłem opakowanie perla dla getaddrinfo: search.cpan.org/~pevans/Socket-GetAddrInfo-0.22
Ben Flynn
26

Rozdzielacze DNS można dodać w OS X za pomocą networksetuppolecenia:

sudo networksetup -setdnsservers Wi-Fi 8.8.8.8 8.8.4.4

W razie potrzeby wstaw nazwę połączenia sieciowego. Te resolwery pojawią się w resolv.conf, ponieważ są generowane automatycznie, ale bezpośrednie zmiany w resolv.conf nie spowodują użycia tych resolverów. Zakładam, że resolwery są gdzieś przechowywane w listwach; Przeszukam i zdam relację.

Edytowano, aby dodać: Wygląda na to, że plik XML plist przechowujący serwery DNS jest /Library/Preferences/SystemConfiguration/preferences.plist.

Plik hosta w / private / etc / hosts powinien działać, aby wymusić rozpoznawanie określonych nazw (/ etc to dowiązanie symboliczne do / private / etc). Czy możesz zweryfikować swoją składnię i edytować odpowiedni plik?

phoebus
źródło
Czy mogę użyć tego polecenia, aby dodać plik hosts?
Ben Flynn
nie możesz i nie musisz
Luke404,
Nie, jeśli chcesz dodać nazwy do pliku hosts, po prostu dodaj je bezpośrednio. Plik hosts jest sprawdzany najpierw podczas rozwiązywania nazw, następnie lokalny bufor rozpoznawania, a następnie skonfigurowane serwery DNS. Jednak użycie polecenia „host” do przetestowania go nie sprawdzi lokalnego pliku hosts. Jednym łatwym sposobem przetestowania byłoby użycie narzędzia sieciowego, takiego jak ping.
phoebus,
1
Czasami interfejs otrzymuje niemądre nazwy, aby uzyskać dokładną nazwę, którą musisz zrobić. networksetup -listallnetworkservices Jeśli zawiera spacje, musisz zacytować całą nazwę, np .:sudo networksetup -setdnsservers 'white space' 8.8.8.8 8.8.4.4
Marcin
2
Czy można skonfigurować resolver do korzystania z innego portu niż 53?
Rune FS