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?

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.


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.


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.

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.