Poznaj nazwę hosta i / etc / hosts

13

W pliku / etc / hostname mam myname.

W / etc / hosts mam:

127.0.0.1   localhost.localdomain   localhost myname
::1     localhost.localdomain   localhost myname

Mam niejasne zrozumienie, czym tak naprawdę jest nazwa hosta i do czego jest używana.

Te bardziej precyzyjne pytania mogą pomóc mi lepiej to zrozumieć:

  1. Jaka jest naprawdę moja nazwa hosta w powyższym przykładzie? mynamealbo coś innego? Gdybym miał zamiast myname.domain.comw /etc/hostname, co byłoby moim prawdziwym hosta wtedy?

  2. W tym przykładzie polecenie hostnamepowraca myname, a polecenie hostname -fpowraca localhost.localdomain. Miałem na myśli, że /etc/hoststo tylko mapowanie między nazwami a adresami IP. Wydaje się, że pełni tutaj inną funkcję. Co to jest FQDN i do czego służy? Jak to jest odzyskiwane? Dlaczego jest to localhost.localdomain?

  3. Gdybym miał zamiast myname.domain.comw /etc/hostname, hostname -fwróci myname.domain.com. Dlaczego?

  4. Dlaczego FQDN nie kończy się kropką w tych plikach?

  5. Czy hostname -di dnsmydomainekwiwalent?

  6. W jakim kontekście mogę używać mojej nazwy hosta ( myname) i kiedy muszę używać mojej funkcji fqdn ( localhost.localdomain)?

Gradient
źródło

Odpowiedzi:

9
  1. /etc/hostnamezawiera nazwę komputera, znaną aplikacjom uruchamianym lokalnie. /etc/hostsa DNS kojarzy nazwy z adresami IP. mynamemoże być odwzorowany na dowolny adres IP, do którego urządzenie może uzyskać dostęp, ale odwzorowanie go 127.0.0.1jest nieestetyczne.
  2. Nie /etc/hosts, ale /bin/hostnamesłuży innej funkcji z -f.
  3. Ponieważ /etc/hostsmoże zastąpić zdrowy rozsądek . Edytuj go ostrożnie i nie pozostawiaj śmieci po tymczasowych łatkach i eksperymentach.
  4. Oba style (⋯ .TLD. i ⋯ .TLD ) są dopuszczalne. Ten pierwszy jest jednoznaczny, podczas gdy drugi jest wszechobecny.
  5. Nie wiem, co dnsmydomainjest, ale mało prawdopodobne. Szukanie czegoś /etc/hostsnie jest technicznie „DNS”.
  6. Zapamiętaj punkt 1. Nazwa hosta - dla aplikacji działających lokalnie; także dla takich specyficznych protokołów sieciowych, jak SMB (samba). FQDN (jeśli nie fałszerstwo lub symbol zastępczy localhost.localdomain) - do uzyskiwania dostępu do maszyny z zewnątrz. Nazwa FQDN musi być rozpoznawalna tam, gdzie jest używana.
Incnis Mrsi
źródło
1
Co jeśli mój adres IP jest dynamiczny (DHCP) i zmienia się od czasu do czasu? jakiego adresu powinienem użyć jako mynamew / etc / hosts?
user156516
3

Absolutnie nienawidzę, gdy ktoś każe mi przeczytać instrukcję, ale w takim przypadku zajrzyj na stronę podręcznika dla nazwy hosta i na większość, jeśli nie na wszystkie pytania, należy odpowiedzieć. Jest napisany o wiele lepiej, niż mógłbym to wyjaśnić.

Aby zapewnić pomoc, niektóre fragmenty, które trafiły do ​​twoich pytań, to: - Twoja nazwa hosta jest widoczna w / etc / hosts. - Zwrócona nazwa FQDN zależy od tego, co zwraca resolver, dlatego dlaczego widzisz wartość w / etc / hosts, gdy resolver najpierw sprawdza plik hosts, a następnie wykonuje wszelkie niezbędne zapytania DNS.

Ten, w który nie wierzę, jest poruszony na stronie man nazwy hosta (na podstawie mojego ponownego przeczytania strony man), dlatego wpisy w plikach nie kończą się kropką.

Ta konwencja jest stosowana w przypadku rekordów DNS. Nazwa hosta i pliki hostów nie są tak naprawdę rekordami DNS. Jeśli konfigurowałeś te wpisy w rozwiązaniu do wyszukiwania DNS, wówczas może pojawić się użycie kropki (sprawdź ten dobry zasób: http://www.zytrax.com/books/dns/apa/dot.html ).

Należy również pamiętać, że wszystkie te wartości nie są nadawane z systemu. Jeśli więc chcesz, aby inny system uzyskiwał dostęp w oparciu o nazwę FQDN, jest on oparty na pliku hosts w tym innym systemie lub brakuje wpisów hosta w oparciu o wyszukiwania DNS, które system zewnętrzny wykonuje w FQDN, aby umożliwić mu powrót do system.

Użytkownik52458
źródło
Powiązane informacje na temat ostatniej kropki w /etc/hosts: serverfault.com/questions/336056/setting-fqdn-hostname-and-dot
John WH Smith
3

W odpowiedzi na

Co jeśli mój adres IP jest dynamiczny (DHCP) i zmienia się od czasu do czasu? jakiego adresu powinienem użyć jako myname w / etc / hosts?

Po pierwsze, zaznaczę, że / etc / hosts jest statyczną definicją mapowania nazwy na adres dla hosta, na którym jest zainstalowany, i jest używany TYLKO przez ten host do konwersji nazwy na adres IP.

Tak więc należy wziąć pod uwagę 2 punkty widzenia - „myname” hosta i wszystkich innych.

W przypadku tego hosta „myhost” albo odwołaj się do bieżącego hosta, używając „localhost” (który jest zdefiniowany w / etc / hosts jako 127.0.0.1), lub dodaj „myname” do linii / etc / hosts, która definiuje localhost, tak aby „myname „zawsze mapuje na, no cóż, localhost. Tak jak:

127.0.0.1 nazwa_hosta localhost

Wtedy nie ma znaczenia, jaki adres IP zostanie podany INTERFEJS, zawsze będziesz mieć adres, który działa (dodatkową zaletą jest to, że nie musisz naciskać na sprzęt, aby rozmawiać z „myname” na „myname”).

Teraz, aby umożliwić INNYM hostom znalezienie „myhost”, gdy „myhost” ma dynamiczny adres IP, musisz użyć DNS, a serwer DNS musi obsługiwać przypisania DHCP. (Cóż, ok, są jeszcze inne rozwiązania, o których mogę myśleć, ale wszystko, co przychodzi mi do głowy, mieści się w kategorii „poza głupotą”, IMHO. Cóż, ok, są rzeczy, które możesz zrobić hostowi, aby informował DNS gdzie to jest, ale to pytanie jest warte zupełnie innego strumienia pytań / odpowiedzi, IMHO)

Zardzewiały samochód
źródło
2

/ etc / nazwa hosta i / etc / hosts są proste, ale także nie takie proste ...

Jak szybko skonfigurować Debiana /etc/hostnamei/etc/hosts

1) Edytuj / etc / hostname .

Istnieją 2 prawidłowe sposoby skonfigurowania tego.

Albo zrób to:

  • machine, tj. prosta, jedno słowo nazwa tego procesora.
    Na przykład „ joe” może być nazwą Twojego komputera.
    Uwaga: będzie to wymagało aliasu w / etc / hosts, dokładniej opisanego poniżej.

LUB

  • machine.domain.net, tj. w pełni kwalifikowana nazwa domeny (FQDN).
    Na przykład „ joe.xyz.com”.
    (Zakłada się, że masz rekord „A” hosta DNS wskazujący z joe.xyz.com na adres IP twojego joe, tj. Na komputerze o nazwie joe. Zwykle ten rekord jest konfigurowany w miejscu, w którym kupiłeś nazwę swojej domeny. Więcej na ten temat w chwila.)

Po ustawieniu / etc / hostname następnym krokiem jest uzyskanie poleceń hostname --all-fqdni dnsdomainnamepoprawne działanie w tej kolejności:

2) Edytuj / etc / hosts .

W nim znajduje się wiersz nazwy FQDN tego hosta , np. „Machine.domain.net”, poprzedzony adresem IP tego komputera (być może z dynamicznego serwera adresów IP) w następujący sposób:

#   IP           FQDN (CANONICAL_HOSTNAME)   ALIASES
#-------------- --------------------------- ------------------------
192.168.1.14    Joe.xyz.com                 joe
  • Po pierwsze, pamiętaj, że wielkie lub małe litery nie mają tutaj znaczenia . Wskazówka: jednak włączenie niektórych limitów pozwala nam zauważyć, skąd biorą się rzeczy w kolejnych krokach. Więc wykorzystali J oe.

  • Zauważ też, że aby prostehostname (tj. / Etc / hostname = 'machine') prawidłowe wygenerowanie nazwy FQDN, alias o nazwie 'machine' musi znajdować się w / etc / hosts. Właśnie dlatego jest tam alias Joe . (BTW, możesz mieć ten alias, nawet jeśli go nie używasz). W przeciwnym razie ten alias nie jest potrzebny ani używany.

  • Zauważ również, że „domain.net” musi być możliwe do rozwiązania, tzn. Musi istnieć dla niego rekord A w DNS. Jest to tak zwane „możliwe do rozwiązania ” (tzn. Przez program rozpoznawania nazw DNS).

3) Teraz zainstaluj te nowe ustawienia z / etc / hostname i / etc / hosts do jądra, uruchamiając:

    $ /etc/init.d/hostname.sh       # Or by rebooting

4) Przetestuj nazwę hosta

$ hostname      # Reports the hostname previously read from in /etc/hostname.
joe

LUB

$ hostname
joe.xyz.com

Wskazówki:

  • Zauważ, że nie jest to obecnie / etc / nazwa hosta, na przykład jeśli teraz go ponownie edytujesz, ale raczej to, co zostało wcześniej odczytane przez skrypt /etc/init.d/hostname.sh, być może w wyniku ponownego uruchomienia.

  • Zauważ też, że „j” jest małe, więc sugeruje, że pochodzi od / etc / hostname, a nie / etc / hosts.

5) Przetestuj FQDN

$ hostname --all-fqdn   #reports the FQDN(s) matched in /etc/hosts.
Joe.xyz.com             #  It searches /etc/hosts for the joe in /etc/hostname.
                        #  Notice that the 'J' is uppercase.  
                        #     This suggest it came from /etc/hosts.

6) Sprawdź nazwę domeny DNS

$ dnsdomainname         #reports the computed DNS doman name    
xyz.com                 #  (i.e. the right most part of the FQDN; 
                        #    the part to the right of the first, left most, dot)
                        #  This is coming from Joe.xyz.com in /hosts, 
                        #    after 'Joe.' is removed.

Teraz powinno to ułatwić konfigurację serwera WWW i poczty e-mail.

Widok eliptyczny
źródło