Korzystam z systemu Ubuntu 10.04.2 LTS Desktop. Będąc programistą, w moim /etc/hosts
pliku 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.1
tam 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/hosts
wpis pliku? Na razie używam sztuczki resolv.conf .
źródło
/etc/nsswitch.conf
. Wpisy w moim systemie są trochę nieoczywiste, ale możesz przetestować wyszukiwania tylkofiles
jako opcję i sprawdzić, czy to miało znaczenie.cat /etc/nsswitch.conf
icat /etc/host.conf
? Ponadto: jak to testujesz (poprzez pingowanie, przeglądarkę, wąchanie pakietów itp.)?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.Odpowiedzi:
Plik
/etc/nsswitch.conf
pozwoli Ci zmienić konfigurację rozpoznawania nazw. Domyślnie plik hosta jest pierwszym, a następnie skonfigurowanym DNS. Może być więcej opcji.Plik
/etc/hosts
zawiera tylko adresy IP i nazwy hostów (wiele nazw dla jednego adresu IP, jeśli chcesz)Plik
/etc/resolv.conf
zawiera listę domyślnych domen wyszukiwania, a także listę serwerów, których należy użyć.źródło
nscd
może buforować zapytania dotyczące rozpoznawania nazw, ale nie szanuje ttl (dlatego buforowanie hostów jest domyślnie wyłączone).systemd-resolved
bę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)