Чи повинен / etc / hosts містити запис типу "127.0.0.1 localhost myhost.example.org myhost"?


16

Переглядаючи різноманітні системи Linux та FreeBSD, я помітив, що в деяких системах /etc/hostsміститься запис для загального імені хоста хоста, а не для інших systemst.

Яка тут найкраща практика? Чи повинен мій / etc / hosts файл містити запис для хостів FQDN (наприклад, myhost.example.org) та короткого імені хоста (наприклад, myhost)? Чи повинен запис для FQDN вказувати на localhost або він повинен вказувати на зовнішній 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 #

Інший варіант полягає в тому, що коротке ім'я хоста і FQDN також вказують на 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 #    

Третій варіант полягає в тому, що FQDN і коротке ім'я хоста отримують зовнішню 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 у випадку збою чи ні. Деякі сервіси / програми вийдуть з ладу в певних конфігураціях, якщо система не може вирішити ім'я локальної машини.

Якщо у вас є абсолютно критична служба, яка повинна працювати в будь-яких ситуаціях, незвично додати запис у файл хостів, щоб служба могла продовжувати працювати в ситуації, коли роздільна здатність DNS виходить з ладу.

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

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


13
Просто для додання цього, у більшості випадків /etc/hostsDNS замінить, а не використовуватиметься як резервний випадок у разі відмови DNS. Це, на мою думку, слід зробити різницю. (Не намагається забрати нит.) Все залежить від порядку, визначеного в /etc/nsswitch.conf.
Аарон Коплі

4
Інша проблема полягає в тому, що запит на сервери DNS відбувається набагато повільніше, ніж звернення до /etc/hostsфайлу. Багато додатків запитують ім'я хоста знову і знову, кілька разів на секунду. Додавання імені хоста /etc/hostsзменшить затримку та повинно пришвидшити додаток.
Стефан Ласєвський
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.