Czy / etc / hosts powinien zawierać wpis „127.0.0.1 localhost myhost.example.org myhost”?

16

Przeglądając różne systemy Linux i FreeBSD, zauważyłem, że w niektórych systemach /etc/hostszawiera wpis dotyczący publicznej nazwy hosta, ale nie w innych systemach.

Jaka jest tutaj najlepsza praktyka? Czy mój plik / etc / hosts powinien zawierać wpis dla nazwy FQDN hosta (np. Myhost.example.org) i krótkiej nazwy hosta (np. Myhost)? Czy rekord FQDN powinien wskazywać na hosta lokalnego, czy powinien wskazywać na zewnętrzny adres IP urządzenia?

Na przykład domyślna konfiguracja wielu skrzynek RHEL / EL nie umieszcza publicznej nazwy hosta w /etc/hosts:

myhost # cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
myhost #

Drugi wariant polega na tym, że krótka nazwa hosta i nazwa FQDN hosta również wskazują na 127.0.0.1. Powiedziano mi, że jest to starsza praktyka, która jest obecnie źle oceniana, ale wielu administratorów nadal to robi.

myhost # cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 myhost myhost.example.org
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
myhost #    

Trzeci wariant polega na tym, że nazwa FQDN hosta i krótka nazwa hosta otrzymują zewnętrzny adres IP hosta. Ten trzeci wariant wydaje mi się optymalny, ponieważ ogranicza liczbę wyszukiwań względem serwerów DNS.

myhost # cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
74.125.239.xxx myhost myhost.example.org
myhost #  

Jaka jest tutaj najlepsza praktyka?

Stefan Lasiewski
źródło
2
sprowadza się do tego, jakich aliasów używają programy (np. Mysql lubi / musi mieć alias „localhost”), 127.0.0.1 localhost myhostpowinno wystarczyć i, 74.125.239.xxx myhost myhost.example.orgjak powiedziałeś, zapisuje wyszukiwanie DNS. „Najlepsza praktyka”, chyba że istnieje norma, to „to, czego używają kompetentni ludzie”.
LinuxDevOps

Odpowiedzi:

12

Czy chcesz zaakceptować działający DNS jako punkt awarii w swoim środowisku, czy nie. Niektóre usługi / aplikacje ulegną awarii w niektórych konfiguracjach, jeśli system nie będzie mógł rozpoznać nazwy komputera lokalnego.

Jeśli masz absolutnie krytyczną usługę, która musi być uruchomiona we wszystkich sytuacjach, nie jest niczym niezwykłym dodanie wpisu w pliku hosts, aby usługa mogła nadal działać w sytuacji, gdy rozpoznawanie DNS kończy się niepowodzeniem.

Jeśli możesz zaakceptować DNS jako punkt awarii lub jeśli twoje usługi nie zawiodą w przypadku zepsutego rozwiązania, można uniknąć wpisów konfiguracji w pliku hosts.

Zdecydowanie sugeruję, aby Twoje serwery DNS były tak solidne, jak to możliwe, a jeśli musisz skonfigurować plik hosts, użyj do tego systemu zarządzania konfiguracją. Naprawdę powinieneś unikać ręcznego unikania dotykania pliku hosts.

Zoredache
źródło
13
Aby dodać do tego, w większości przypadków /etc/hostszastąpi DNS, a nie będzie używany jako rezerwowy w przypadku awarii DNS. To jest rozróżnienie, które moim zdaniem należy wprowadzić. (Nie próbuje nit-pick.) Wszystko zależy od kolejności zdefiniowanej w /etc/nsswitch.conf.
Aaron Copley,
4
Innym problemem jest to, że zapytania do serwerów DNS są znacznie wolniejsze niż sprawdzanie /etc/hostspliku. Wiele aplikacji wielokrotnie sprawdza swoją nazwę hosta, wiele razy na sekundę. Dodanie nazwy hosta w celu /etc/hostszmniejszenia opóźnień i przyspieszenia działania aplikacji.
Stefan Lasiewski