Nazwy hostów - o co w tym wszystkim chodzi?

54

Niedawno zostałem „zmuszony” do wykonania pracy sysadmin, podczas gdy nie jest to coś, co absolutnie uwielbiam robić. Czytam, eksperymentuję i dużo się uczę.

Jest jeden podstawowy aspekt konfiguracji serwera, którego nie byłem w stanie pojąć - nazwy hostów .

Na przykład w Ubuntu należy ustawić nazwę hosta w ten sposób (zgodnie z biblioteką Linode ):

echo "plato" > /etc/hostname
hostname -F /etc/hostname

Plik: / etc / hosts

127.0.0.1        localhost.localdomain        localhost
12.34.56.78      plato.example.com            plato

Zakładam, że platojest to dowolna nazwa i to plato.example.comjest FQDN.

Teraz moje pytania to:

  • Czy to jest obowiązkowe?
  • W jakim celu?
  • Gdzie jest to potrzebne / używane?
  • Dlaczego nie mogę zdefiniować „localhost” jako nazwy hosta dla każdego komputera?
  • Czy muszę skonfigurować wpis DNS dla nazwy plato.example.comFQDN?
  • Czy powinienem plato.example.comzostać użyty jako zwrotny wpis DNS dla mojego adresu IP?

Czy istnieją też „najlepsze praktyki” dotyczące wybierania nazw hostów? Widziałem ludzi używających greckich liter, nazw planet, a nawet postaci mitologicznych ... Co się stanie, gdy zabraknie liter / planet?

Przepraszam, jeśli to głupie pytanie, ale nigdy nie byłem zbyt entuzjastycznie nastawiony do konfiguracji sieci.

Alix Axel
źródło
3
Myślę, że Chris S jest tutaj nieobecny. Pytanie - jaka jest nazwa hosta systemu i jaki ma związek z DNS - jest prawidłowe.
larsks 28.01.11
@Chris S: Rozumiem, uwierz mi. Próbowałem to przeczytać raz, ale cała sprawa sprawiła, że ​​poczułem się bardzo zagmatwany. Nie aspiruję do bycia SA, staram się tylko trochę lepiej zrozumieć podstawy.
Alix Axel
To powinno przejść do wiki społeczności
lynxman,
1
@lynxman: Nie przeszkadza mi to, ale dlaczego?
Alix Axel
1
Ponieważ to bardzo interesujące :)
lynxman

Odpowiedzi:

28

Obecnie system może mieć wiele interfejsów, każdy z wieloma adresami, a każdy adres może mieć nawet wiele powiązanych wpisów DNS. Co więc w ogóle oznacza „systemowa nazwa hosta”?

Wiele aplikacji używa systemowej nazwy hosta jako domyślnego identyfikatora, gdy komunikuje się gdzie indziej. Na przykład, jeśli zbierasz wiadomości syslog na centralnym serwerze, wszystkie będą oznaczone tagiem hosta systemu początkowego. W idealnym świecie prawdopodobnie zignorowałbyś to (ponieważ niekoniecznie chcesz ufać klientowi), ale domyślne zachowanie - jeśli nazwiesz wszystkie systemy „localhost” - spowoduje powstanie wielu komunikatów dziennika, które nie byłby w stanie skojarzyć się z konkretnym systemem.

Jak zauważyli inni, nazwa hosta systemu jest również przydatnym identyfikatorem, jeśli zdalnie uzyskujesz dostęp do wielu systemów. Jeśli masz pięć okien podłączonych do systemów o nazwie „localhost”, trudno ci będzie utrzymać je prosto.

W podobny sposób staramy się, aby systemowa nazwa hosta była zgodna z nazwą hosta, której używamy do administracyjnego dostępu do systemu. Pomaga to uniknąć nieporozumień w odniesieniu do systemu (w wiadomościach e-mail, rozmowach, dokumentacji itp.).

W odniesieniu do DNS:

Chcesz mieć odpowiednie wpisy DNS do przodu i do tyłu dla swoich aplikacji, aby uniknąć nieporozumień. Trzeba trochę naprzód wpis (nazwa -> adres IP) dla ludzi, aby móc uzyskać dostęp do aplikacji wygodnie. Dopasowywanie odwrotnego wpisu jest przydatne z wielu powodów - na przykład pomaga poprawnie zidentyfikować aplikację, jeśli znajdziesz odpowiedni adres IP w dzienniku.

Zauważ, że tutaj mówię o „aplikacjach”, a nie o „systemach”, ponieważ - szczególnie w przypadku serwerów WWW - powszechne jest posiadanie wielu adresów IP w systemie, powiązanych z różnymi nazwami hostów i usługami.

Próba utrzymania mapowań nazw na ip w twoim /etc/hostspliku szybko staje się trudna, gdy zarządzasz coraz większą liczbą systemów. Bardzo łatwo jest, aby lokalny plik hosts przestał być zsynchronizowany w odniesieniu do DNS, potencjalnie prowadząc do zamieszania, a w niektórych przypadkach do awarii (ponieważ na przykład coś próbuje powiązać z adresem IP, który już nie istnieje w systemie).

Larsks
źródło
Dziękuję za odpowiedź, nadal jestem zdezorientowany, jeśli powinienem (lub muszę) zachować plik / etc / hosts zamiast polegać tylko na wpisach DNS.
Alix Axel
8
Ogólnie ignoruję /etc/hostsna rzecz DNS. Zmniejsza to liczbę miejsc, które potrzebuję do utrzymania informacji o nazwie -> mapowanie adresu. W większości systemów, które utrzymuję, /etc/hostszawiera tylko jeden wpis dotyczący localhost.
larsks
Kiedy masz do czynienia z klastrami - takimi jak ganeti lub klaster Linux-HA / Corosync - / etc / hosts służy do komunikowania się między członkami klastra. Opieranie się wyłącznie na systemie DNS jest złe, ponieważ usługa DNS może znajdować się w tych klastrach i być migrowana lub offline podczas zmiany węzła, więc / etc / hosts i poprawna nazwa hosta pomogą ci się dobrze bawić.
coredump
więc jeśli chodzi o „unikatowy”, raczej „próbujemy” być „wyjątkowy” niż „musi” być wyjątkowy, prawda? Ponieważ istnieje tak wiele serwerów i wszystkie są w tym samym zakresie, bycie „wyjątkowym” jest niemożliwe. Czy to zrozumienie jest prawidłowe?
shenkwen 15.04.17
10

Możesz ustawić każdą nazwę hosta na „localhost”, ale jest to bardzo przydatne alix@plato ~ $w wierszu polecenia, gdy zarządzasz komputerami przez ssh. Zdalne zarządzanie serwerami może stać się bardzo mylące, jeśli tego nie zrobisz.

Posiadanie poprawnej nazwy FQDN jest ważne w przypadku hostowania serwera WWW lub serwera poczty. Tego rodzaju aplikacje serwerowe lubią wiedzieć „na kim” działają.

Aby wybrać dobry schemat nazewnictwa, odsyłam do tego bardzo popularnego pytania .

Nazwa FQDN staje się użyteczna tylko wtedy, gdy ma znaczenie dla innego komputera. Istnieją trzy poziomy tego:

  • Jeden komputer w sieci lokalnej ma wpis w swoim pliku hosts, który wskazuje ten komputer
  • Serwer DNS działa w sieci lokalnej, a każdy komputer lokalny, który używa go jako serwera DNS, zna teraz platon według nazwy.
  • Rejestrujesz nazwę domeny i teraz cały świat wie, na którą maszynę wskazuje nazwa plato.alixaxel.com.

Podczas wysyłania wiadomości e-mail lub udostępniania stron internetowych na zewnątrz, trzecia jest ta, którą chcesz mieć. W większości innych przypadków możesz zadowolić się lokalnym DNS lub nawet edytować pliki hostów.

W takim przypadku możesz po prostu stworzyć nazwę domeny (plato.alixnetwork może być w porządku jako FQDN) do użytku w sieci lokalnej. Jedyną wartością dodaną posiadania części „alixnetwork” (nazwy domeny) jest wygoda, gdy masz inną sieć lokalną, od której chcesz ją odróżnić.

Kenny Rasschaert
źródło
Dzięki, Kenny, myślę, że moje główne wątpliwości dotyczą tego, dlaczego ważne jest, aby serwer WWW / poczty miał prawidłową nazwę FQDN. Co również stanowi „właściwą” nazwę FQDN? Czy powinienem po prostu wstawić nazwę hosta do domeny i wskazać publiczny adres IP? Mam wrażenie, że muszę utworzyć wpisy DNS A / AAAA z nazwą hosta, prawda?
Alix Axel
To zależy od tego, co chcesz osiągnąć. Jeśli nie wysyłasz wiadomości e-mail ani nie podajesz stron internetowych na świecie za pomocą plato, naprawdę nie ma potrzeby tworzenia globalnego rekordu DNS dla tego komputera.
Kenny Rasschaert
„Rejestrujesz nazwę domeny, a teraz cały świat wie, na którą maszynę wskazuje nazwa plato.alixaxel.com”. - Nie rozumiem tego. Czy cały świat nie wie, na którą maszynę wskazuje nazwa plato.alixaxel.com, sprawdzając rozdzielczość DNS „alixaxel.com”? Co to ma wspólnego z ustawianiem nazwy FQDN na losowej maszynie?
shenkwen 15.04.17
8

Podstawowy przegląd. Nazwa hosta to tylko wskaźniki; możesz przypisać jeden konkretny jako nazwę hosta, do której odnosi się komputer, ale może mieć wiele. Niektóre usługi, znacząca poczta i HTTP polegają na nazwach domen, aby wiedzieć, gdzie usługi powinny się znajdować i jak się do nich dostać.

Dawno temu wszystkie te nazwy (które są tylko wskaźnikami do adresów IP) były przechowywane w pliku o nazwie hosts. W miarę rozwoju systemu nie byli w stanie utrzymać synchronizacji pliku na wszystkich odpowiednich komputerach uczestniczących w różnych połączonych sieciach. Więc wymyślono system DNS. Podczas wyszukiwania nazwy nadal najpierw sprawdza plik hosts, a następnie system DNS. Windows może również sprawdzać inne systemy, takie jak WINS lub NetBIOS.

Po umieszczeniu wpisu w hostspliku nie jest on przypisywany do komputera. Przypisanie nazwy hosta jako tej używanej przez komputer odbywa się w plikach konfiguracyjnych (w systemach * nix) i we właściwościach systemu w systemach Windows (system Windows może także mieć przyrostki specyficzne dla NIC).

Wpisy w hostspliku, podobnie jak system DNS, są tylko mapowaniem nazwy hosta na adres IP. Aby użyć nazwy hosta „localhost” (nie ma w tym nic specjalnego, jest to nazwa hosta jak cała reszta), należy ją odwzorować na interfejs pętli zwrotnej (aby zawsze wskazywał na komputer lokalny). Aby upewnić się, że to działa, wszystkie komputery są wyposażone w domyślne mapowanie w swoich hostsplikach, ale można je potencjalnie usunąć, jeśli nie chcesz używać tej nazwy hosta.

Ponadto, jak zauważyli inni, bardzo przydatne jest przypisanie nazwy hosta do komputera. Po podłączeniu do komputera możesz wyświetlać jego nazwę hosta podczas logowania lub jako monit lub dowolną liczbę innych miejsc. Ułatwia to identyfikację komputera, do którego jesteś podłączony. Jeśli skonfigurujesz tę nazwę hosta w DNS lub umieścisz ją we wszystkich hostsplikach, będziesz mógł połączyć się z komputerem, odwołując się do jego nazwy hosta zamiast znać cały czas jego adres IP. (Nawet bardziej przydatne, jeśli komputer korzysta z DHCP, ponieważ adres może się zmienić. Jeśli komputer zaktualizuje DNS, wówczas rekord DNS wskazywałby na nowy adres IP; nadal możesz się połączyć, nie znając nowego adresu IP, ponieważ znasz nazwę DNS ).

Istnieje wiele innych zastosowań obu hostsi DNS, ale podejrzewam, że masz więcej pytań niż odpowiedzi, jeśli przeczytasz to wszystko.

Chris S.
źródło
4
+1 za poświęcenie czasu na napisanie dobrej odpowiedzi pomimo początkowego poczucia frustracji pytaniem.
Kenny Rasschaert
Niesamowite wyjaśnienie! Jeśli moje zrozumienie jest prawidłowe, umieszczenie nazwy FQDN w polu /etc/hostsnie jest konieczne, posiadanie nazwy hosta we wpisie DNS osiągnęłoby ten sam wynik, prawda?
Alix Axel
2
@Alix, poprawne, jeśli wpis znajduje się w DNS (a DNS działa poprawnie), wówczas umieszczenie go w hostspliku byłoby zbędne. Również wpis w hostspliku zastąpiłby DNS (czasem przydatny do testowania, irytujący, gdy o nim zapomnisz). Zauważ, że to wszystko dotyczy rekordów A i AAAA, istnieją inne typy rekordów dla nazw hostów, ale pominąłem je dla jasności.
Chris S
Dziękuję Chris, dzięki temu wszystko staje się bardziej przejrzyste.
Alix Axel
5

Każdy gospodarz powinien otrzymać sensowną nazwę. Nazwa hosta może służyć do wielu celów:

1- Pomaga rozpoznać, nad którym aktualnie pracujesz.

2- Używanie nazw skonfigurowanych w /etc/hostsrekordach DNS i / lub DNS jest łatwiejsze niż zapamiętywanie wielu adresów IP.

3- Localhost to zastrzeżona nazwa odnosząca się do bieżącego komputera (adres 127.0.0.1).

4- Rekordy DNS są przydatne, aby twoje serwery były publicznie dostępne.

Wybór odpowiedniej nazwy dla każdego serwera bardzo pomaga w administracji. Pomaga także Twoim klientom uzyskać dostęp do Twoich serwerów.

Khaled
źródło
2

Na marginesie: Prawidłowe działanie do przodu i do tyłu rozdzielczość DNS jest absolutnym kamieniem węgielnym każdej instalacji IT na tej planecie. Nigdy nie lekceważ konieczności dobrze utrzymanego DNS i właściwego rozpoznawania nazw hostów!

pfo
źródło
Nie rozumiem, dlaczego to ważne. Mam serwer linode, który obsługuje wiele stron internetowych. Nie rozumiem celu ustawienia nazwy hosta, po prostu zostawiam ją taką, jaka jest, czyli „ubuntu”. Ten serwer działa od kilku lat i nigdy nie odczuwam żadnych niedogodności. Nie kwestionuję twojej odpowiedzi, po prostu próbuję zrozumieć, dlaczego nazwa hosta jest ważna. Kiedy w moim przypadku chciałbym prawidłowo ustawić nazwę hosta?
shenkwen 15.04.17
1
@ shenkwen - jeśli szczerze mówiąc masz tylko jeden serwer, możesz nazwać go, jak tylko zapragnie twoje serce, i oczywiście nie będzie to miało znaczenia. Gdy tylko liczba serwerów wzrośnie powyżej 1, masz nowe problemy do rozwiązania, a prawidłowe nazywanie jest ważnym narzędziem.
mfinni
1

Oświadczenie: główne pytanie dotyczy systemów Linux, więc zignoruj ​​tę odpowiedź, jeśli nie jesteś zainteresowany tą stroną systemu Windows.

W każdym razie, w systemach Windows, oprócz wszystkich punktów wymienionych w innych odpowiedziach, nazwa hosta jest faktycznie używana przez sam system operacyjny, do celów sieciowych i uwierzytelniania; konkretnie:

  • Każdy system, niezależnie od tego, czy jest członkiem domeny, musi mieć unikalną nazwę w tej samej sieci (tj. W tej samej podsieci IP), w przeciwnym razie nastąpi konflikt nazw i różne usługi sieciowe (głównie udostępnianie plików i drukarek) nie będą praca.
  • Wszystkie systemy należące do tej samej domeny Active Directory muszą mieć unikalną nazwę, niezależnie od granic sieci.
  • W środowisku domenowym nazwa hosta systemu działa jako nazwa użytkownika zabezpieczeń i może być używana do zdalnego uwierzytelniania (pomyśl o tym jako o koncie użytkownika komputera); można mu przypisywać uprawnienia i prawa dostępu oraz można go umieszczać w grupach ze względów bezpieczeństwa. Wpływa to na wszystkie procesy uruchomione w systemie przy użyciu kont wbudowanych LocalSystemi NetworkServicekont użytkowników, które mogą uwierzytelniać się w innych systemach przy użyciu poświadczeń systemu, na którym działają; pozwala to procesowi działającemu jak NetworkServicena SystemA na uzyskanie dostępu do folderu współdzielonego na SystemB poprzez przyznanie uprawnień do tego folderu na konto użytkownika SystemA.
Massimo
źródło
-1

Wiele witryn i / lub domniemanych „administratorów” twierdzi teraz, że atrybut „nazwa hosta” zawiera nazwę FQDN instancji systemu operacyjnego, co „łamie” każdą rozdzielczość, która dołącza do niej „nazwę domeny”:


nazwa hosta system1.domain1.org

ping hostname
- nie można rozwiązać system1.domain1.org.domain1.org

zantar
źródło
Czy możesz podać źródło odniesienia dla swojego wyciągu?
Dave M