Dlaczego moje rozpoznawanie nazw wpływa na DNS nawet przy wpisie pliku hosta?


15

Korzystam z systemu Ubuntu 10.04.2 LTS Desktop. Będąc programistą, w moim /etc/hostspliku oczywiście utworzyłem „me.com” . Niestety moje rozpoznawanie nazw jest wysyłane do DNS przed pierwszym sprawdzeniem wpisu moich lokalnych hostów i nie mogę zrozumieć, dlaczego.

Ostateczny wynik jest taki, że jeśli mój plik /etc/resolv.conf zawiera nameserver 127.0.0.1tam najpierw, to otrzymam odpowiedź w mojej przeglądarce od me.com (lokalny) w ciągu mniej niż sekundy. Ale jeśli nie mam tego wpisu, moja odpowiedź trwa czasami nawet 5 sekund, jeśli mój dostawca usług internetowych jest trochę powolny.

Problem był tak kłopotliwy, że musiałem tutaj zadać pytanie (i ktoś je rozwiązał), w jaki sposób automatycznie wstawić ten wpis /etc/resolv.conf. Ale jeden z użytkowników (@shellholic) tutaj gorąco polecił (i skomentował to w kółko), że powinienem zadać to pytanie.

Czy wiesz, dlaczego rozpoznawanie nazw mojej stacji roboczej musi najpierw trafić na serwer DNS, zanim trafię na /etc/hostswpis pliku? Na razie używam sztuczki resolv.conf .


1
Możesz spróbować poszukać /etc/nsswitch.conf. Wpisy w moim systemie są trochę nieoczywiste, ale możesz przetestować wyszukiwania tylko filesjako opcję i sprawdzić, czy to miało znaczenie.
— belacqua

Tak, czy możesz podać nam dane wyjściowe cat /etc/nsswitch.confi cat /etc/host.conf? Ponadto: jak to testujesz (poprzez pingowanie, przeglądarkę, wąchanie pakietów itp.)?
— umówić się na

Aby uzupełnić wersję @arrange, możesz dołączyć wynik time getent hosts me.com; hostname --fqdn; grep 'me.com' /etc/hosts; grep hosts /etc/nsswitch.conf; netstat -uln | grep ':53'; cat /etc/host.conf; wc -l /etc/hosts. Nie wahaj się zaciemniać racjonalności.
— shellholic

@shellholic ^ racjonalność ^ racjonalnie? heh
— belacqua

@jgbelacqua: Istotnie
— shellholic

Odpowiedzi:


15

Plik /etc/nsswitch.confpozwoli Ci zmienić konfigurację rozpoznawania nazw. Domyślnie plik hosta jest pierwszym, a następnie skonfigurowanym DNS. Może być więcej opcji.

Plik /etc/hostszawiera tylko adresy IP i nazwy hostów (wiele nazw dla jednego adresu IP, jeśli chcesz)

Plik /etc/resolv.confzawiera listę domyślnych domen wyszukiwania, a także listę serwerów, których należy użyć.


4
Pamiętaj również, że gdy nazwa zostanie rozpoznana przez aplikację lub usługę na twoim Linux-ie, pozostanie w pamięci podręcznej przez czas znany jako TTL (czas życia). Jeśli więc zmienisz sekwencję rozdzielczości, lepiej zrestartuj system lub wyczyść pamięć podręczną.
— jfmessier

jak wyczyścić pamięć podręczną?
— Eric Johnson

Nie jestem pewien, ale ponowne uruchomienie połączenia sieciowego za pomocą komend ifup i ifdown może to zrobić. Oczywiście ponowne uruchomienie powinno wyczyścić pamięć podręczną, ale używamy Linuksa, prawda?
— jfmessier

nscdmoże buforować zapytania dotyczące rozpoznawania nazw, ale nie szanuje ttl (dlatego buforowanie hostów jest domyślnie wyłączone). systemd-resolvedbędzie również buforować wpisy. Jeśli żaden z nich nie jest skonfigurowany, hosty Linux nie buforują odpowiedzi DNS . (Przeglądarki prawdopodobnie robią to w warstwie aplikacji)
— Gert van den Berg
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.