Format / etc / hosts w systemie Linux (inny niż Windows?)

22

Poniżej tego pytania wklejono próbkę /etc/hostspliku z systemu Linux (CentOS) i komputera z systemem Windows. Plik Linux ma dwa wpisy z zakładkami po adresie IP (to znaczy localhost.localdomain localhost), a Windows ma tylko jeden. Jeśli chcę edytować plik hosts w systemie Windows, aby mieć nazwę komputera (etest) zamiast localhost, po prostu zastępuję słowo localhost nazwą komputera, którą chcę. Komputer nie musi być częścią domeny.

W maszynie z systemem Linux dwa wpisy localhost.localdomaini localhostwydaje się wskazywać, że będę potrzebował maszyny, aby była częścią domeny. Czy to prawda?

Czy mogę po prostu edytować oba wpisy, aby etestodczytać:

127.0.0.1       etest etest

czy jest wymagane, aby zastąpić jeden wpis nazwą domeny?

Ponadto daj mi znać, do czego /etc/hostssłuży druga linia pliku na komputerze z systemem Linux.

::1     localhost6.localdomain6 localhost6

hosts plik na komputerze z systemem Linux:

# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1       localhost.localdomain localhost
::1     localhost6.localdomain6 localhost6

hosts plik na komputerze z systemem Windows:

# Copyright (c) 1993-1999 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

127.0.0.1       localhost
Tomasz
źródło
Ostatnio zadałem podobne pytanie, ale nie wzbudziło to dużego zainteresowania. unix.stackexchange.com/questions/11844/etc-hosts-for-debian . Ten jest jednak lepiej napisany.
Faheem Mitha

Odpowiedzi:

13

Zawsze chcesz, aby adres 127.0.0.1 był rozpoznawany najpierw jako localhost. Jeśli istnieje domena, możesz jej również użyć, ale upewnij się, że localhost jest na drugim miejscu. Jeśli chcesz dodać aliasy dla swojego komputera, które będą wyszukiwać na adres pętli zwrotnej, możesz nadal dodawać je jako wartości oddzielone spacjami w tym wierszu. Określenie tutaj domeny jest opcjonalne, ale nie usuwaj „localhost” z opcji.

Caleb
źródło
5
Również „:: 1” jest odpowiednikiem ipv6 127.0.0.1 (dla ipv4).
XQYZ
Czy to oznacza, że ​​posiadanie takiej linii zamiast tej, którą zamieściłem z pytaniem, byłoby mądrzejsze? Podałem alias oddzielony spacją (sprawdź moją nazwę hosta), pozostawiając nietknięty localhost.localdomain localhost. Jeśli nie, proszę zamieścić przykład tego, co sugerujesz jako idealny wpis, aby dołączyć nazwę hosta mojej maszyny i mieć wpisy localhost w pliku hosts.
Thomas
1
127.0.0.1 localhost.localdomain localhost etest
Thomas
1
@Thomas: Twój przykład jest taki, jaki powinien być. Idź z tym, a jeśli chcesz dodać więcej aliasów do testowania (na przykład z nazwami wirtualnych hostów w apache), możesz nadal dołączać je do linii.
Caleb
22

Format /etc/hostsw systemie Linux i Windows jest taki sam:

IP address        hostname [hostalias]...

gdzie nawiasy kwadratowe to zwykły sposób wskazania, że ​​coś jest opcjonalne (nie należy ich wpisywać), a kropki ( ...) oznaczają, że może być ich więcej niż jeden.

Nie powinieneś musieć uczynić swojego hosta częścią domeny. Wypróbuj i przekonaj się. Ale byłoby dobrym pomysłem, .localdomainjeśli nie masz prawdziwej nazwy domeny. Może to nieco przyspieszyć rozpoznawanie nazw hostów dzięki ndotsopcji w /etc/resolv.conf.

Pamiętaj, że w tym sensie domena oznacza domenę DNS (jak google.comlub stackexchange.com), a nie domenę Windows lub coś podobnego.

Linia rozpoczynająca się od ::1dotyczy IPv6 . ::1jest jak 127.0.0.1w nowym schemacie adresowania. Uruchom ifconfig loi powinieneś zobaczyć, że ma dwa adresy. Zanotuj wpis zaczynający się od inet6.

$ ifconfig lo
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
...

Więcej informacji na stronie podręcznika hostów (5) .

Mikel
źródło
(...) oznacza, że ​​może istnieć więcej niż jeden: Czy dodatki są rozdzielone spacjami, przecinkami, czy oba?
Guy
1
spacje. Przypuszczam, że mam rację hostname [hostalias[,hostalias]*].
Mikel
6

Nie mogę mówić o tym, jak Windows może różnić się od Linuksa, ale format definicji komputera lokalnego wpływa na wyniki, które otrzymasz z polecenia „nazwa hosta”.

Znaleziony przeze mnie format działa najlepiej:

127.0.0.1 etest.mydomain.com etest localhost

Ważną rzeczą, którą znalazłem, to najpierw mieć FQDN, a po nim aliasy, w dowolnej kolejności.

Jeśli eksperymentujesz z ponownym układaniem nazw po adresie IP, a następnie za pomocą poleceń „hostname -s” (krótka nazwa) i „hostname -f” (w pełni kwalifikowana nazwa domeny lub FQDN) zobaczysz, co mam na myśli. Powinno to wyglądać mniej więcej tak:

$ hostname -s
etest

$ hostname -f
etest.mydomain.com

„nazwa hosta” sama w sobie powinna zwrócić dowolną nazwę wprowadzoną dla hosta w /etc/conf.d/hostname lub / etc / hostname (lokalizacja pliku różni się w zależności od dystrybucji, ale gdzieś w katalogu / etc).

Jeśli zmienisz kolejność nazw, może się okazać, że „nazwa hosta -f” daje odpowiedzi takie jak „localhost” lub „nazwa hosta: błąd systemu”. Jedyne ustalenie, które działało poprawnie, to umieszczenie nazwy FQDN na pierwszym miejscu.

Zawsze ustawiam lokalną linię adresu IPv6 (:: 1) w ten sam sposób, tj .:

::1 etest.mydomain.com etest localhost

Wiem, że niektóre dystrybucje ustawiają nazwę IPv6 na coś takiego jak ip6-localhost. Tak naprawdę nie używam IPv6, więc nie mogę komentować, jakie byłyby najlepsze ustawienia dla tej linii. Mogę tylko powiedzieć, że w sieci IPv4 działa tak, aby obie linie miały te same nazwy.

Angelo Babudro
źródło
0

Zachowaj plik hostów slave jako

127.0.0.1 localhost

Zachowaj główny plik hosta jako

<private ip> master
<private ip> slave1
<private ip> slave2

100% pracy

Puneet
źródło
Wyjaśnij swoją odpowiedź i zastosuj odpowiednie formatowanie. Nie musisz podawać swojego nazwiska w odpowiedzi.
Lambert