Должен ли / etc / hosts содержать запись типа «127.0.0.1 localhost myhost.example.org myhost»?

16

Рассматривая различные системы Linux и FreeBSD, я заметил, что в некоторых системах /etc/hostsесть запись для общедоступного имени хоста, но не в других systemst.

Какова лучшая практика здесь? Должен ли мой файл / etc / hosts содержать запись для полного доменного имени хоста (например, myhost.example.org) и короткого имени хоста (например, myhost)? Должна ли запись для полного доменного имени указывать на локальный хост или на внешний IP-адрес блока?

Например, конфигурация по умолчанию на многих блоках RHEL / EL не помещает публичное имя хоста в /etc/hosts:

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

Другой вариант заключается в том, что краткое имя хоста и полное доменное имя также указывают на 127.0.0.1. Мне сказали, что это старая практика, которая в наши дни не одобряется, но многие администраторы все еще делают это.

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 #    

Третий вариант заключается в том, что полное доменное имя и короткое имя хоста получают внешний IP-адрес хоста. Этот третий вариант кажется мне оптимальным, поскольку он уменьшает количество обращений к 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 #  

Какова лучшая практика здесь?

Стефан Ласевский
источник
2
он сводится к тому, какие псевдонимы используются программами (для бывшего Mysql любит / должен иметь псевдоним 'localhost'), 127.0.0.1 localhost myhostдолжно быть достаточно и, 74.125.239.xxx myhost myhost.example.orgкак вы сказали, сохраняет DNS-запросы. «Лучшая практика», если нет стандарта, это «то, что используют знающие люди».
LinuxDevOps

Ответы:

12

Готовы ли вы принять работающий DNS как точку сбоя в вашей среде или нет. Некоторые службы / приложения не будут работать в определенных конфигурациях, если система не сможет разрешить имя локального компьютера.

Если у вас есть абсолютно критическая служба, которая должна работать во всех ситуациях, нет ничего необычного в том, чтобы добавить запись в файл hosts, чтобы служба могла продолжать работать в ситуации, когда не удается разрешить DNS.

Если вы можете принять DNS как точку сбоя или если ваши службы не будут работать в случае нарушения разрешения, можно избежать записей конфигурации в файле hosts.

Я настоятельно рекомендую вам сделать ваши DNS-серверы настолько надежными, насколько это возможно, и если вам необходимо настроить файл hosts, используйте для этого систему управления конфигурацией. Вы действительно должны избегать вручную избегать прикосновения к файлу хостов.

Zoredache
источник
13
Просто добавить к этому, в большинстве случаев /etc/hostsбудет заменять DNS, а не использовать в качестве запасного варианта в случае сбоя DNS. Это различие, я думаю, должно быть сделано. (Не пытаясь придираться). Все зависит от порядка, определенного в /etc/nsswitch.conf.
Аарон Копли
4
Другая проблема заключается в том, что запросы к DNS-серверам намного медленнее, чем к /etc/hostsфайлу. Многие приложения запрашивают свои имена хостов много раз в секунду. Добавление имени хоста /etc/hostsуменьшит задержку и должно ускорить работу приложения.
Стефан Ласевский,