Uwzględnić nazwę domeny czy nie w / etc / hosts?

15

Konfiguruję klaster VMWare węzłów CentOS. Czy najlepszą praktyką jest umieszczanie nazwy domeny po komputerze? Jakie są potencjalne problemy z pominięciem tego? Czy domena komplikuje konfigurację, czy ją upraszcza?

Na przykład, jeśli mój węzeł jest w 192.168.1.93, powinienem zmienić /etc/hostsz

127.0.0.1 localhost.localdomain localhost

do

127.0.0.1 localhost.cluster localhost
192.168.1.93 computernode1.cluster computenode1

lub

127.0.0.1 localhost
192.168.1.93 computenode1

lub

#127.0.0.1 localhost
192.168.1.93 computenode1

lub

192.168.1.93 localhost
192.168.1.93 computenode1
T. Webster
źródło

Odpowiedzi:

24

Wpisanie nazwy domeny /etc/hostsjest opcjonalne i możesz uruchomić system bez żadnego złego efektu.

Jedynym minusem pominięcia go jest to, że w pełni kwalifikowana nazwa hosta systemu nie wyświetla się poprawnie. Na przykład hostname -f.

Sposób wykrywania w pełni kwalifikowanej nazwy hosta:

  1. Najpierw pobiera nazwę hosta lub „krótką nazwę”. To jest wynik działania uname -nlub hostname.
  2. Następnie pobiera adres IP dla tej nazwy hosta, konsultując się /etc/hosts(lub cokolwiek masz /etc/resolv.conf, i wracając do tych ostatnich źródeł, jeśli nie możesz ich znaleźć /etc/hosts).
  3. Po uzyskaniu adresu IP dokonuje wyszukiwania wstecznego, ponownie konsultując się /etc/hosts.
  4. Po zarejestrowaniu /etc/hostspierwszy wpis jest używany jako w pełni kwalifikowana nazwa hosta.

Krótko mówiąc, jeśli chcesz, aby w pełni kwalifikowana nazwa hosta działała, powinieneś:

127.0.0.1 fully.qualified.hostname hostname localhost.localdomain localhost

lub

127.0.0.1 localhost.localdomain localhost
1.2.3.4 fully.qualified.hostname hostname
Patrick
źródło
1
Nie zastanawiałem się nad tym. Posiadanie w pełni kwalifikowanej nazwy hosta jest bezużyteczne na komputerze stacjonarnym i może być problematyczne dla laptopa (ponieważ laptop może być przenoszony w różnych sieciach), ale jest użyteczny dla serwera. Na przykład Apache2 narzeka, gdy nie może określić swojej nazwy FQDN.
lgeorget
@lgeorget Możesz również użyć, libnss-myhostnamektóry zajmuje się rozwiązywaniem nazwy FQDN, ale nie wymaga wpisu/etc/hsots
Ulrich Dangel
Powyższa konfiguracja może powodować problemy, zobacz dyskusję na temat bieżącej praktyki Debiana dotyczącej konfigurowania hostspliku, a na temat użycia (lub jego braku) localhost.localdomainwpisu.
Joó Ádám
1
sudonarzeka także, jeśli nazwa hosta nie znajduje się w /etc/hosts:sudo: unable to resolve host <hostname>
x-yuri
3

Tak długo, jak twój host zgadza się z nazwą twojej domeny, podanie jej lub jej brak /etc/hostsnie zmieni niczego. Inną praktyką jest podanie go jako domainparametru w/etc/resolv.conf . Nie sprecyzowanie tego może uprościć życie, jeśli pewnego dnia administrator sieci go zmieni. Podanie tego nic nie zmienia, o ile wiem.

Powinno się pozostawić 127.0.0.1 localhostlub 127.0.0.1 localhost localhost.localdomainw/etc/hosts . Niektóre aplikacje mogą zacząć mieć naprawdę dziwne zachowanie, localhostwiąże się z czymkolwiek innym niż adres pętli zwrotnej, ponieważ jest to naprawdę, naprawdę nieoczekiwane ustawienie.

lgeorget
źródło
2

Musisz podać w pełni kwalifikowaną nazwę domeny na pierwszej pozycji po adresie IP.

Jak czytamy man 5 hosts :

Dla każdego hosta powinna być obecna pojedyncza linia z następującymi informacjami:

Adres_nazwa_hosta kanoniczna [aliasy ...]

Jeśli nie będziesz przestrzegać tej zasady, niektóre programy mogą się zepsuć. Na przykład, system zarządzania konfiguracją Puppet może zacząć zmieniać twoją nazwę hosta tam iz powrotem przy każdym uruchomieniu tylko dlatego, że nie określiłeś części domeny lub dlatego, że umieściłeś alias bez domeny w wierszu przed FQDN.

synapsa
źródło
0

Nie jestem pewien, czy to naprawdę „opcjonalne” (jak wskazał powyżej Patrick). Właśnie w końcu wyśledziłem problem z przywracaniem uprawnień nfs do nikogo: do nikogo. Wygląda na to, że dla uprawnień do poprawnego działania z montażami nfs (przy użyciu idmapd) nazwa domeny serwera musi dokładnie odpowiadać nazwie domeny klienta. Z niektórych dokumentów, które znalazłem -hostname -f minus rzeczywista nazwa hosta musi być identyczna między klientem a serwerem LUB musisz podać nazwę domeny dla klienta w/etc/idmapd.conf , co oznacza każdego klienta.

Czy istnieje oficjalna zasada określająca, gdzie należy podać nazwę domeny? Wydaje się, że domainnamepolecenie nie odbiera go z / etc / hosts .. więc włożenie do / etc / hosts przeszkadza mi, ponieważ oznacza, że ​​jest ono przechowywane w wielu lokalizacjach w systemie plików.

tyto
źródło