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?


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.


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.


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.


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
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.