Яка мета / etc / hosts?


21

Як я розумію, hostsфайл є одним із декількох системних засобів, що допомагають у вирішенні мережевих вузлів у комп'ютерній мережі. Але що має бути всередині нього? Коли я встановлюю Ubuntu за замовчуванням

127.0.0.1 localhost 

буду там. Чому?

  • Як /etc/hostsпрацює у випадку таких систем JVM, як Cassandra?
  • Коли альтернатива DNS, я думаю, не на одному комп'ютері?


Мої /etc/hostsмістить 127.0.0.2 mycouchdb bookmarkdb myothercouchappі 127.0.0.3 myapachi websiteя використовую їх , щоб допомогти мені з моїм розвитком працює на моїй локальній машині. У мене є три сервіси, що слухають на порту 80. Я не хочу розміщувати їх у DNS, оскільки вони лише локальні.
ctrl-alt-delor

Ви пробували man 5 hosts?
Відновіть Моніку - М. Шредер

Чи Linux не має довідкової сторінки для цього, де це детально пояснено? Це найбільш фундаментальне питання.
Роб

Відповіді:


45

Файл /etc/hostsрозпочався за старих часів DARPA як файл роздільної здатності для всіх хостів, підключених до Інтернету (до існування DNS). Він має максимальний пріоритет, тобто цей файл надається перевагу перед будь-якою іншою системою імен. 1

Однак, як один файл, він не масштабується: розмір файлу стає занадто великим дуже скоро. Саме тому була розроблена система DNS, ієрархічна система розподілених імен. Це дозволяє будь-якому хосту ефективно знайти числову адресу якогось іншого хоста.

Дуже стара концепція /etc/hostsфайлу дуже просто, адреса та ім'я хоста:

127.0.0.1      localhost

для кожного рядка Це простий список пар адрес-хост. 2

Основне його сучасне використання - це обхід роздільної здатності DNS. Збір, знайдений у /etc/hostsфайлі, буде використаний перед будь-яким записом DNS. Фактично, якщо ім'я, яке шукається (як localhost), знайдено у файлі, роздільна здатність DNS взагалі не буде виконуватися.


1 Ну, порядок роздільної здатності імен фактично визначений у /etc/nsswitch.conf, де зазвичай є цей запис:

hosts:          files dns

що означає "спробувати файли ( /etc/hosts); якщо це не вдалося, спробуйте DNS."

Але цей порядок можна було змінити чи розширити.


2 (в даний час) Файл хостів містить рядки тексту, що складаються з IP-адреси в першому текстовому полі з наступним одним або декількома іменами хостів. Кожне поле розділено пробілом - вкладки часто віддають перевагу з історичних причин, але також використовуються пробіли. Рядки коментарів можуть бути включені; вони позначені октоторпом (#) у першому положенні таких рядків. Повністю порожні рядки у файлі ігноруються. Наприклад, типовий файл хостів може містити наступне:

127.0.0.1   localhost loopback
::1         localhost localhost6 ipv6-localhost ipv6-loopback mycomputer.local
192.168.0.8 mycomputer.lan
10.0.0.27   mycomputer.lan

Цей приклад містить записи для адрес зворотного зв'язку системи та імен їх хостів, перший рядок - типовий вміст файлу хостів за замовчуванням. Другий рядок має кілька додаткових (можливо, дійсних лише в локальних системах) імен. Приклад ілюструє, що IP-адреса може мати кілька імен хостів (localhost та loopback), а також те, що ім'я хоста може бути зіставлено як на IPv4, так і на IPv6 IP-адреси, як показано у першому та другому рядках відповідно. Одне ім’я ( mycomputer.lan) може містити декілька адрес ( 192.168.0.8 10.0.0.27). Однак у тому випадку, який з них використовується, залежить від маршрутів (та їх пріоритетів), встановлених для комп'ютера.

Деякі старіші ОС не мали можливості повідомити список адрес для заданого імені.


5

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

Локальним файлом хостів і DNS управляється з різним пріоритетом, тому ніколи не виникає конфліктів.


4
Я не погоджуюсь з конфліктами, у мене виникло ряд важких проблем налагодження, оскільки хост-надання по групі-A залишив застарілі /etc/hostsзаписи, які в майбутньому спричинили збій операцій за групою B (моя група) , і ми закінчилися, щоб встановити щось, щоб /etc/hosts
очистити

конфлікти всередині файлу можуть існувати поза курсом, але тоді це власна вина власника машини :)
francois P

2
Я також не згоден з тим, що ніколи не було конфліктів. Мені довелося налагоджувати дуже дивні помилки через несвіжі записи хоста, що суперечать змінам DNS.
Rui F Ribeiro

@thrig: Можливо, проблема полягає в тому, що ваші групи занадто великі, щоб ефективно використовувати / etc / hosts. Відмінно працює для 5 машин (на даний момент) в моїй домашній мережі.
jamesqf

Добре, що система не вважає конфлікту, вона має чіткі вказівки щодо пріоритетності речей: p
StarWeaver

3

у Linux, смію сказати, завжди має бути принаймні 127.0.0.1 localhostфайл /etc/hosts , а також відповідна IPv6 адреса для localhost .

Це просто дозвіл імені хоста до числової адреси IPv4 або IPv6. Коли ви намагаєтесь встановити мережу (a) unix.stackexchange.com десь на землі, яка, ймовірно, не поруч з вами, або (b) myotherpc в локальній мережі у вашому домі, це або один, /etc/hostsабо деякий сервер доменних імен (DNS), виконує роздільну здатність хоста, тому коли ви вводите unix.stackexchage.com, який як людина - це те, що вам важливо, вам не потрібно пам’ятати 185.53.179.7 для нього, що саме те, що комп'ютер дійсно повинен знати.

Як було зазначено, в Linux /etc/nsswitchзазвичай визначається порядок вирішення імені хоста, тобто спочатку перевірте DNS перед тим, як перевірити NIS, а потім остаточно перевірити файл, /etc/hostsінакше хост не знайдений

Як ви керуєте перевіркою замовлень і що / де / хто керує службою DNS або NIS, залежить від вас, або ви можете змінити все, змінивши / etc / nsswitch, щоб лише перевірятись /etc/hostsі ніколи не перевіряти за допомогою DNS або NIS або ...

Для простої домашньої мережі з декількох комп’ютерів, скажімо, від 2 до N, адміністратор просто редагує /etc/hostsна кожному комп’ютері, щоб було правильніше, було б простіше, швидше, дешевше, ніж налаштування сервера доменних імен чи іншої служби мати одне головне місцезнаходження або повноваження робити дозвіл імені хоста на IP-адресу.

для веб-пошуку Linux, історія та причина localhost. Багато речей у Linux покладаються на ім’я localhost, яке дорівнює 127.0.0.1, і якщо цього не стане, це спричинить проблеми, і це визначення localhost було б / повинно відбуватися у файлі локальної системи, такому як / etc / hosts.

/etc/hostsза замовчуванням, як правило, остаточне слово і останнє для операційної системи linux, щоб повернутися до вирішення імені хоста. в Windows XP і 7 відповідний файл - це C:\Windows\System32\drivers\etc\lmhosts я не знаю про Windows 8 або 10.


Типовим використанням файлу хостів, особливо в Windows, є перенаправлення спроби програми "зателефонувати додому" на нульовий пристрій. Далеко не припускаю, що це може зірвати перевірку законності.
Лоранс Пейн

Я досі не знайшов редактора на своєму iPhone, який дозволяє мені редагувати / etc / hosts ... тому я запускаю DNS на своєму LAN
ivanivan
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.