Імена хостів - про що вони всі?


54

Нещодавно мене "змусили" виконувати якусь роботу з систематизацією, хоча це не те, що я абсолютно люблю робити, я багато читав, експериментував і вчився.

Є один основний аспект конфігурації сервера, який я не зміг зрозуміти - імена хостів .

Наприклад, в Ubuntu, слід встановити ім'я хоста таким чином (згідно бібліотеки Linode ):

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

Файл: / etc / hosts

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

Я припускаю, що platoце довільна назва, і plato.example.comце FQDN.

Тепер мої запитання:

  • Це обов’язково?
  • З якою метою?
  • Де це потрібно / використовується?
  • Чому я не можу визначити "localhost" як ім'я хоста для кожної машини?
  • Чи потрібно налаштувати запис DNS для plato.example.comFQDN?
  • Чи plato.example.comслід використовувати як зворотний запис DNS для мого IP?

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

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


3
Я думаю, що Крис S тут не працює. Питання - що таке ім'я хоста системи та як воно стосується DNS - є правильним.
larsks

@Chris S: Я розумію, повірте. Я спробував прочитати це один раз, але все це вразило мене надзвичайно заплутаною. Я не прагну бути СА, просто намагаюся зрозуміти основи трохи краще.
Алікс Аксель

Це має перейти до вікі спільноти
lynxman

1
@lynxman: Я не проти цього, але чому?
Алікс Аксель

1
Бо це дуже цікаво :)
lynxman

Відповіді:


28

У ці дні система може мати декілька інтерфейсів, кожен з декількома адресами, і кожна адреса може навіть мати декілька записів DNS, пов'язаних з нею. Отже, що означає навіть ім'я хоста системи?

Багато додатків використовуватимуть ім'я хоста системи як ідентифікатор за замовчуванням, коли вони спілкуються в іншому місці. Наприклад, якщо ви збираєте повідомлення системного журналу на центральному сервері, усі вони будуть позначені тегом імені хоста вихідної системи. В ідеальному світі ви, мабуть, проігноруєте це (оскільки не обов’язково хочете довіряти клієнтові), але поведінка за замовчуванням - якщо ви назвали всі ваші системи "localhost" - призведе до купки повідомлень журналу, які ви не зможе зв’язатись із певною системою.

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

Аналогічно ми намагаємося, щоб ім’я хоста системи відповідало імені хоста, яке ми використовуємо для адміністративного доступу до системи. Це допомагає уникнути плутанини при посиланні на систему (електронною поштою, розмовами, документацією тощо).

Щодо DNS:

Ви хочете мати належні прямі та зворотні записи DNS для своїх додатків, щоб уникнути плутанини. Вам потрібен певний запис (ім'я -> ip-адреса), щоб люди мали можливість легко отримувати доступ до вашої програми. Збіг із зворотним входом корисний з ряду причин - наприклад, він допомагає правильно визначити додаток, якщо ви знайдете відповідну ip адресу в журналі.

Зауважте, що тут я говорю про "додатки", а не про "системи", тому що - особливо з веб-серверами - зазвичай в системі є кілька ip-адрес, пов'язаних з різними іменами хостів і службами.

Спроба зберегти ім'я для ip відображень у вашому /etc/hostsфайлі швидко стає важкою, оскільки ви керуєте все більшою кількістю систем. Для локальних файлів хостів дуже просто випадати з синхронізації щодо DNS, що може призвести до плутанини, а в деяких випадках і до несправності (оскільки, наприклад, щось намагається прив’язати до ip-адреси, яка більше не існує в системі).


Дякую за вашу відповідь, я все ще плутаюсь, якщо мені слід (або мені потрібно) підтримувати файл / etc / hosts, а не просто покладатися на записи DNS.
Алікс Аксель

8
Я взагалі ігнорую /etc/hostsна користь DNS. Це зменшує кількість місць, які мені потрібні, щоб підтримувати інформацію про ім'я -> відображення адреси. Більшість систем, які я підтримую, /etc/hostsмістить лише один запис для localhost.
larsks

Коли ви маєте справу з кластерами, такими як ganeti або кластер Linux-HA / Corosync, / etc / hosts використовується для розмови між членами кластеру. Це погано покладатися виключно на DNS, оскільки ваша служба DNS може бути на цих кластерах і перенесена або офлайн під час зміни вузла, тому / etc / hosts та правильне ім'я хоста допоможуть вам чудово провести час.
coredump

Отже, щодо "унікальних" ми швидше "намагаємось" бути "унікальними", ніж "повинні" бути унікальними, правильно? Оскільки настільки багато серверів там, і всі вони знаходяться в одному обсязі, бути фактичним "унікальним" неможливо. Чи правильно це розуміння?
shenkwen

10

Ви можете встановити кожне ім'я хоста на "localhost", але це дуже зручно мати alix@plato ~ $у вашому командному рядку, коли ви керуєте машинами над ssh. Віддалене керування серверами може стати дуже заплутаним, якщо цього не зробити.

Правильний FQDN важливий для розміщення веб-сервера або поштового сервера. Ці види серверних додатків люблять знати, "ким" вони працюють.

Для вибору хорошої схеми іменування я посилаю вас на це дуже популярне питання .

FQDN стає корисним лише тоді, коли він має сенс для іншого комп'ютера. Для цього є три рівні:

  • Один комп'ютер у вашій локальній мережі має запис у файлі хостів, який вказує на цю машину
  • У вас в локальній мережі працює DNS-сервер, і кожен локальний комп'ютер, який використовує його як DNS-сервер, тепер знає Платона за назвою.
  • Ви реєструєте доменне ім'я, і ​​тепер увесь світ знає, на яку машину вказує ім'я plato.alixaxel.com.

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

У такому випадку ви можете просто скласти доменне ім’я (plato.alixnetwork може бути чудовим як FQDN) для використання у вашій локальній мережі. Єдина додана цінність наявності частини "alixnetwork" (доменне ім'я) - це зручність, коли у вас є інша локальна мережа, від якої ви хочете відрізнити її.


Дякую, Кенні, я думаю, моє головне сумнів - чому важливо, щоб сервер веб-пошти мав належний FQDN. Крім того, що являє собою "належний" FQDN? Чи потрібно просто додати ім'я хоста до домену та вказати його на загальнодоступну IP-адресу? Мені здається, що мені потрібно створити записи DNS A / AAAA з ім'ям хоста, ні?
Алікс Аксель

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

"Ви реєструєте доменне ім'я, і ​​тепер увесь світ знає, на яку машину вказує ім'я plato.alixaxel.com." - Я цього не розумію. Хіба весь світ не знає, на яку машину вказує ім’я plato.alixaxel.com, перевіряючи роздільну здатність DNS "alixaxel.com"? Що це стосується встановлення FQDN у випадковій машині?
shenkwen

8

Основний огляд. Ім'я хоста - лише покажчики; Ви можете призначити одне конкретне ім'я, на яке посилається машина, але воно може мати кілька. Деякі сервіси, примітна пошта та HTTP покладаються на доменні імена, щоб знати, де повинні розташовуватися служби та як дістатися до них.

Давним-давно всі ці імена (що знову ж таки є лише вказівниками на IP-адреси) відслідковувались у файлі під назвою hosts. По мірі зростання системи вони не змогли зберегти синхронізований файл на всіх відповідних комп'ютерах, що беруть участь у різних взаємопов’язаних мережах. Так була винайдена система DNS. Коли ви робите пошук імен, він все-таки спочатку перевіряє файл хостів, а потім систему DNS. Windows також може перевіряти інші системи, такі як WINS або NetBIOS.

Коли ви поміщаєте запис у hostsфайл, ви не присвоюєте його комп'ютеру. Призначення імені хоста такому, яке використовується комп'ютером, виконується у файлах конфігурації (у * nix системах) та Властивості системи в системах Windows (система Windows також може мати специфічні суфікси NIC).

Записи у hostsфайлі, як і система DNS, є лише відображенням від імені хоста до IP-адреси. Для того, щоб використовувати ім'я хоста 'localhost' (у ньому немає нічого особливого, це ім'я хоста, як і всі інші), його потрібно відобразити на інтерфейс зворотного циклу (тому він завжди вказуватиме на локальний комп'ютер). Щоб забезпечити це, усі комп’ютери мають у своєму hostsфайлі це зіставлення за замовчуванням , але його потенційно можна видалити, якщо ви не хочете мати можливість використовувати це ім'я хоста.

Далі, як зазначали інші, дуже корисно присвоїти ім'я хоста комп'ютеру. Підключившись до комп'ютера, ви можете вказати ім'я хоста під час входу в систему, або як підказку, або будь-яку кількість інших місць. Це полегшує ідентифікацію комп'ютера, до якого ви підключені. Якщо ви встановите це ім’я хоста в DNS або введете його у всі hostsфайли, ви зможете підключитися до комп'ютера, посилаючись на його ім’я хоста, замість того, щоб постійно знати його IP-адресу. (Ще корисніше, якщо комп'ютер використовує DHCP, оскільки адреса може змінюватися. Якщо комп'ютер оновлює DNS, то запис DNS вказуватиме на нову IP-адресу; ви все одно можете підключитися, не знаючи нової IP-адреси, оскільки знаєте ім'я DNS ).

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


4
+1 за те, що ви зайняли час, щоб написати хорошу відповідь, незважаючи на ваше первісне почуття розчарування з питанням.
Kenny Rasschaert

Дивовижне пояснення! Якщо моє розуміння правильне, розміщувати FQDN у значенні /etc/hostsне потрібно, якщо ім'я хоста у записі DNS досягне того ж результату, правда?
Алікс Аксель

2
@Alix, правильно, якщо запис є в DNS (а DNS працює належним чином), то наявність його у hostsфайлі було б зайвим. Також запис у hostsфайл замінить DNS (корисний для тестування іноді, дратує, коли ви забудете про нього). Зауважте, що це все стосується записів A і AAAA, є інші типи записів для імен хостів, але я їх не зрозумів для наочності.
Кріс С

Дякую, Крис, це робить все набагато зрозумілішим.
Алікс Аксель

5

Кожен хост повинен давати змістовну назву. Ім'я хоста може виконувати різні сервери:

1- Це допомагає визначити, над чим ви зараз працюєте.

2- Використання імен, налаштованих у /etc/hostsта / або DNS-записах, простіше, ніж запам'ятовування багатьох IP-адрес.

3- Localhost - це зарезервоване ім'я для позначення поточної машини (адреса 127.0.0.1).

4- DNS-записи корисні, щоб зробити ваші сервери загальнодоступними.

Вибір відповідного імені для кожного сервера дуже допомагає вам у адміністрації. Крім того, це допомагає вашим клієнтам отримати доступ до ваших серверів.


2

Як бічна примітка: Правильна робота в прямому і зворотному дозволі DNS - це абсолютний наріжний камінь кожної ІТ-установки на цій планеті. Ніколи не варто недооцінювати необхідність доглянутого DNS та правильної роздільної здатності імені хоста!


Я не можу зрозуміти, чому це важливо. У мене є сервер linode, який розміщує багато веб-сайтів. Не розуміючи мети встановлення імені хоста, я просто залишаю його таким, яким воно є, яке є "ubuntu". Цей сервер працює вже пару років, і я ніколи не відчуваю незручностей. Я не ставлю під сумнів вашу відповідь, я просто намагаюся зрозуміти, чому ім'я хоста важливо. У моєму випадку, коли б я хотів, щоб я правильно встановив ім'я хоста?
shenkwen

1
@shenkwen - якщо у вас чесно є лише один сервер, ви можете назвати його тим, що бажає ваше серце, і це, очевидно, не має значення. Як тільки кількість серверів стає більшою за 1, у вас виникають нові проблеми в управлінні, а правильне іменування є важливим інструментом.
mfinni

1

Відмова: головне питання стосується систем Linux, тому сміливо ігноруйте цю відповідь, якщо вас не цікавить проблема Windows.

У будь-якому випадку, в системах Windows, крім усіх пунктів, зазначених в інших відповідях, ім’я хоста фактично використовується самою ОС для цілей мереж та аутентифікації; конкретно:

  • Кожна система, незалежно від того, чи є членом домену, повинна мати унікальне ім’я в одній мережі (тобто в одній підмережі IP), інакше виник конфлікт імен, і різні мережеві послуги (в основному спільний доступ до файлів і друку) не будуть робота.
  • Усі системи, що є членами одного домену Active Directory, повинні мати унікальне ім’я, незалежно від меж мережі.
  • У доменному середовищі ім'я хоста системи виступає головним захистом і може використовуватися для віддаленої автентифікації (просто подумайте про це як обліковий запис користувача для машини); йому можуть бути призначені дозволи та права доступу та може бути розміщений у групи з метою безпеки. Це впливає на всі процеси, що працюють у системі за допомогою вбудованих облікових записів LocalSystemта NetworkServiceоблікових записів користувачів, які можуть автентифікувати інші системи за допомогою облікових даних системи, в якій вони працюють; це дозволяє, наприклад, у процесі, що працює в NetworkServiceSystemA, отримати доступ до спільної папки в SystemB, надавши дозволи на папку для акаунта користувача SystemA.

-1

Зараз багато сайтів та / або передбачуваних адміністраторів заявляють, що атрибут "ім'я хоста" містить FQDN екземпляра ОС, який "порушує" будь-яку роздільну здатність, яка додає до нього ім'я домену:

hostname
system1.domain1.org

ping hostname
- не вдається вирішити system1.domain1.org.domain1.org


Чи можете ви надати довідкове джерело для своєї заяви?
Дейв М
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.