plik hosts wydaje się być ignorowany

18

Mam prawie świeże okno pulpitu Ubuntu. System operacyjny został zainstalowany dwa tygodnie temu i zaktualizowany z repozytoriów karmicznych. W zeszłym tygodniu nie miałem problemów z DNS. Ale w tym tygodniu coś się zmieniło. Nie jestem pewien, co i kiedy, i nie jestem pewien, czy zmieniłem jakieś konfiguracje.

Więc teraz mam naprawdę dziwną sytuację. Zgodnie z logami rozpoznawanie nazw powinno działać normalnie.

/ etc / hosts

127.0.0.1   localhost test
127.0.1.1   desktop

/etc/host.conf

order hosts,bind
multi on

/etc/resolv.conf

# Generated by NetworkManager
search search servers obtained via DHCP
nameserver 192.168.0.3

/etc/nsswitch.conf

passwd:         compat
group:          compat
shadow:         compat

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

Ale jeśli tak nie jest.

użytkownik @ test ~> test ping

PING localhost (127.0.0.1) 56(84) bytes of data.
[skip]

Pingowanie jest w porządku.

użytkownik @ test ~> test hosta

test.mydomain.com has address xx.xxx.161.201

Podejrzewam, że NetworkManager może powodować to niewłaściwe zachowanie, ale nie wiem od czego zacząć, aby to sprawdzić. Wszelkie myśli, sugestie?

z4y4ts
źródło

Odpowiedzi:

20

Dzięki tej konfiguracji większość aplikacji będzie z przyjemnością współpracować z Twoim wpisem z /etc/hosts.

Jednak na hostto nie patrzy /etc/nsswitch.conf. Jest to zgodne z projektem, a nie przypadkiem, ponieważ hostjest to w szczególności program do wyszukiwania DNS. /etc/hoststo nie DNS, to (głównie) to, z czego korzystaliśmy, zanim mieliśmy DNS.

To samo dotyczy również digi nslookup- są one również specyficzne dla DNS.

Alnitak
źródło
Mówisz, że hostnarzędzie nie używa /etc/hosts? I nie ma nic do naprawienia w moim przypadku?
z4y4ts,
tak, właściwie - nie ma tu nic do zobaczenia :)
Alnitak
Nie dostaję tego, że host> zwykłem <być „zwykłym” poleceniem zapytania o nazwę, /etc/nsswitch.conf
słuchanie
@Kwaio Nie mogę znaleźć dowodów w źródłach ISC, które hostkiedykolwiek to zrobiły
Alnitak
Cóż, mógłbym użyć nietypowych implementacji dystrybucji, więc, mój zły.
mveroone
15

hostPolecenie (wraz z diga nslookup) jest częścią bindnarzędzi DNS. Jako narzędzie do rozpoznawania nazw DNS wykonuje tylko rozpoznawanie DNS.

Jeśli chcesz libnsspobrać wpis z dowolnego magazynu danych z bezpośrednim dostępem do sieci, możesz użyć getentprogramu. Aby uzyskać wpis hosta, na przykład, użyj go w następujący sposób:

getent hosts google.com

Wynika to kolejność rezolucję zamieszczoną pod hosts:w /etc/nsswitch.confcelem, który zawiera /etc/hostsjeżeli „Pliki” wzglę jest jako jedna z opcji.

tylerl
źródło
Dziękuję za przypomnienie mi getentpolecenia.
Emmanuel
2
Uważam, że w dzisiejszych czasach należy używać getent ahostszamiast z getent hostspowodu getent hostszastosowań gethostbyaddr()lub gethostbyname*()które są przestarzałe. Jeśli dobrze zrozumiałem, getent hostsemuluje, jak stare programy UNIX C działały i getent ahostsemuluje sposób działania programów moderm.
Mikko Rantalainen
0

Dla mnie ten problem wystąpił z powodu niepoprawnych uprawnień do plików. Tylko root może czytać / etc / hosts. Plik powinien być czytelny dla całego świata.


źródło