Jaki jest cel / etc / hosts?

21

Jak rozumiem, hostsplik jest jednym z kilku udogodnień systemowych, które pomagają w adresowaniu węzłów sieci w sieci komputerowej. Ale co powinno być w środku? Kiedy domyślnie instaluję Ubuntu

127.0.0.1 localhost 

tam będzie. Dlaczego?

  • Jak /etc/hostsdziała system JVM, taki jak Cassandra?
  • Kiedy DNS jest alternatywą, myślę, że nie na jednym komputerze?
MikiBelavista
źródło
Bardzo powiązane: unix.stackexchange.com/questions/388875/...
Kusalananda
Moje /etc/hostszawiera 127.0.0.2 mycouchdb bookmarkdb myothercouchappi 127.0.0.3 myapachi websiteużywam ich, aby pomóc mi w rozwoju na moim komputerze lokalnym. Mam 3 usługi nasłuchujące na porcie 80. Nie chcę umieszczać ich w DNS, ponieważ są one tylko lokalne.
ctrl-alt-delor
Próbowałeś man 5 hosts?
Przywróć Monikę - M. Schröder
Czy Linux nie ma do tego strony podręcznika, w której wyjaśniono to bardziej szczegółowo? To jest najbardziej podstawowe pytanie.
Rob

Odpowiedzi:

45

Plik /etc/hostszaczął się w dawnych czasach DARPA jako plik rozdzielczości dla wszystkich hostów podłączonych do Internetu (zanim istniał DNS). Ma maksymalny priorytet, co oznacza, że ​​ten plik jest preferowany przed jakimkolwiek innym systemem nazw. 1

Jednak jako pojedynczy plik nie skaluje się dobrze: rozmiar pliku bardzo szybko staje się zbyt duży. Właśnie dlatego opracowano system DNS, hierarchiczny rozproszony system nazw. Pozwala to każdemu hostowi efektywnie znaleźć adres numeryczny innego hosta.

Bardzo stare pojęcie /etc/hostspliku jest bardzo prosta, wystarczy adres i nazwę hosta:

127.0.0.1      localhost

dla każdej linii. To prosta lista par adres-host. 2)

Jego głównym dzisiejszym zastosowaniem jest ominięcie rozpoznawania DNS. Dopasowanie znalezione w /etc/hostspliku zostanie użyte przed każdym wpisem DNS. W rzeczywistości, jeśli szukana nazwa (podobna localhost) zostanie znaleziona w pliku, w ogóle nie zostanie wykonane rozpoznawanie DNS.


1 Cóż, kolejność rozpoznawania nazw jest faktycznie zdefiniowana w /etc/nsswitch.conf, która zwykle ma ten wpis:

hosts:          files dns

co oznacza „spróbuj pliki ( /etc/hosts); a jeśli się nie powiedzie, spróbuj DNS”.

Ale ta kolejność może zostać zmieniona lub rozszerzona.


2 (w obecnych czasach) Plik hosts zawiera wiersze tekstu składające się z adresu IP w pierwszym polu tekstowym, po którym następuje jedna lub więcej nazw hostów. Każde pole jest oddzielone białą spacją - tabulatory są często preferowane ze względów historycznych, ale używane są również spacje. Można dodać wiersze komentarza; są one oznaczone oktorem (#) na pierwszej pozycji takich linii. Całkowicie puste wiersze w pliku są ignorowane. Na przykład typowy plik hosts może zawierać następujące elementy:

127.0.0.1   localhost loopback
::1         localhost localhost6 ipv6-localhost ipv6-loopback mycomputer.local
192.168.0.8 mycomputer.lan
10.0.0.27   mycomputer.lan

Ten przykład zawiera wpisy dotyczące adresów sprzężenia zwrotnego systemu i ich nazw hostów, pierwszy wiersz to typowa domyślna zawartość pliku hosts. Drugi wiersz ma kilka dodatkowych (prawdopodobnie tylko w systemach lokalnych) nazw. Przykład pokazuje, że adres IP może mieć wiele nazw hostów (localhost i loopback) oraz że nazwa hosta może być odwzorowana zarówno na adresy IP IPv4, jak i IPv6, jak pokazano odpowiednio w pierwszym i drugim wierszu. Jedna nazwa ( mycomputer.lan) może rozwiązać kilka adresów ( 192.168.0.8 10.0.0.27). Jednak w takim przypadku wybór jednego zależy od tras (i ich priorytetów) ustawionych dla komputera.

Niektóre starsze systemy operacyjne nie miały możliwości zgłoszenia listy adresów dla danej nazwy.

Izaak
źródło
5

Użycie pliku / etc / hosts do nadania czytelnej dla człowieka nazwy systemowi lokalnemu w środowisku pulpitu jest całkowicie uzasadnione. Plik hosts świetnie nadaje się do użytku w sieci domowej, a nawet w małym środowisku biznesowym. Nie może to być strona publiczna jak adresowanie do Internetu - wtedy potrzebujesz DNS. Jeśli sieć lokalna jest wystarczająco duża lub po prostu dzieli się na różne podsieci lub z jakiegokolwiek innego przydatnego powodu, preferowany jest DNS.

Plik lokalnego hosta i DNS są zarządzane z innym priorytetem, więc nigdy nie będzie żadnych konfliktów.

francois P.
źródło
4
Nie zgadzam się co do konfliktów, miałem wiele trudnych do debugowania problemów, ponieważ host-Provision-by-group-A pozostawił nieaktualne /etc/hostswpisy, które w przyszłości spowodowały niepowodzenie operacji-by-group-B (moja grupa) , i skończyło się na tym, że postanowiliśmy zdezynfekować zawartość/etc/hosts
thrig
konflikty wewnątrz pliku mogą istnieć oczywiście, ale jest to wina właściciela maszyny :)
francois P
2
Nie zgadzam się również z tym, że nigdy nie mam żadnych konfliktów. Musiałem debugować bardzo dziwne błędy z powodu nieaktualnych wpisów hosta sprzecznych ze zmianami DNS.
Rui F Ribeiro
@ thrig: Być może problemem jest to, że twoje grupy są zbyt duże, aby skutecznie używać / etc / hosts. Działa idealnie dla 5 maszyn (w tej chwili) w mojej sieci domowej.
jamesqf
Cóż, system nie uważa, że ​​istnieje konflikt, ma jasne instrukcje dotyczące priorytetu rzeczy: p
StarWeaver
3

w 127.0.0.1 localhostsystemie Linux, odważę się powiedzieć, że zawsze powinien znajdować się przynajmniej plik, /etc/hosts a także odpowiedni adres IPv6 dla hosta lokalnego .

Jest to po prostu rozpoznawanie nazwy hosta na numeryczny adres IPv4 lub IPv6. Gdy próbujesz połączyć się z siecią (a) unix.stackexchange.com gdzieś na ziemi, która prawdopodobnie nie znajduje się w pobliżu, lub (b) myotherpc w sieci lokalnej w twoim domu, jest to albo /etc/hostsjakiś serwer nazw domen (DNS) robi rozwiązywanie hosta, więc po wpisaniu unix.stackexchage.com, który jako człowiek jest tym, na czym ci zależy, nie musisz pamiętać o nim 185.53.179.7, o czym tak naprawdę powinien wiedzieć komputer.

Jak już wspomniano, w /etc/nsswitchsystemie Linux zwykle definiuje się kolejność rozpoznawania nazw hostów, co oznacza, że ​​najpierw sprawdź DNS przed sprawdzeniem NIS, a następnie sprawdź plik, w /etc/hostsprzeciwnym razie host nie zostanie znaleziony

Jak zarządzasz sprawdzaniem zamówień i co / gdzie / kto zarządza usługą DNS lub NIS zależy od Ciebie, lub możesz zastąpić wszystko, modyfikując / etc / nsswitch, aby tylko się zameldował /etc/hostsi nigdy nie sprawdzał za pomocą DNS, NIS lub ...

W przypadku prostej domowej sieci złożonej z kilku komputerów, powiedzmy od 2 do N, administrator po prostu edytowałby /etc/hostsna każdym komputerze, aby był poprawny, byłby łatwiejszy, szybszy, tańszy niż konfiguracja serwera nazw domen lub innej usługi w celu posiadania jednej głównej lokalizacji lub uprawnienie do rozpoznawania nazw hostów na adres IP.

dla linux przeszukaj historię i powód localhost. Wiele rzeczy w Linuksie opiera się na nazwie localhost rozwiązującej na 127.0.0.1, a jeśli tak się nie stanie, spowoduje to problemy, a ta definicja hosta lokalnego powinna / powinna wystąpić w lokalnym pliku systemowym, takim jak / etc / hosts.

/etc/hostsjest domyślnie ostatnim słowem i ostatnią rzeczą dla systemu operacyjnego Linux, na której opiera się rozpoznawanie nazw hostów. w Windows XP i 7 odpowiednim pliku jest C:\Windows\System32\drivers\etc\lmhosts to, że nie wiem o Windows 8 lub 10.

Ron
źródło
Typowym zastosowaniem pliku hosts, szczególnie w systemie Windows, jest przekierowanie próby programu „wywołania domu” na urządzenie zerowe. Daleko ode mnie, aby sugerować, że może to udaremnić sprawdzenie legalności.
Laurence Payne
Nadal nie znalazłem edytora na moim iPhonie, który pozwala mi edytować / etc / hosts ... więc uruchamiam DNS na mojej sieci
ivanivan