Зрозумійте ім'я хоста та / etc / hosts


13

В / etc / hostname, у мене є myname.

У / etc / hosts у мене є:

127.0.0.1   localhost.localdomain   localhost myname
::1     localhost.localdomain   localhost myname

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

Ці більш точні запитання можуть допомогти мені зрозуміти це краще:

  1. Що насправді моє ім'я хоста в наведеному вище прикладі? mynameчи щось інше? Якби я замість того, щоб myname.domain.comв той /etc/hostname, що б моє реальне ім'я хоста тоді?

  2. У прикладі команда hostnameповертається myname, тоді як команда hostname -fповертається localhost.localdomain. Я мав на увазі, що /etc/hostsце лише відображення між іменами та ip-адресами. Здається, тут виконується інша функція. Що таке fqdn і для чого він використовується? Як це витягується? Чому саме так localhost.localdomain?

  3. Якби мені довелося замість myname.domain.comв /etc/hostname, hostname -fповернеться myname.domain.com. Чому?

  4. Чому в цих файлах fqdn не закінчується крапкою?

  5. Є hostname -dі dnsmydomainрівнозначні?

  6. У якому контексті я можу використовувати своє ім'я хоста ( myname) та коли мені потрібно використовувати своє fqdn ( localhost.localdomain)?

Відповіді:


9
  1. /etc/hostnameмістить ім'я машини, як відомо програмам, які працюють локально. /etc/hostsі DNS асоціюють імена з IP-адресами. mynameможе бути відображено на будь-яку IP-адресу, до якої може отримати доступ машина, але відображення її 127.0.0.1неестетично.
  2. Ні /etc/hosts, але /bin/hostnameвиконує іншу функцію за допомогою -f.
  3. Бо /etc/hostsможе перекрити здоровий глузд . Редагуйте це обережно і не залишайте там сміття після тимчасових виправлень та експериментів.
  4. Обидва стилі (⋯ .TLD. та LD .TLD ) є прийнятними. Перший є однозначним, тоді як останній є всюдисущим.
  5. Не знаю, що dnsmydomainтаке, але малоймовірно. Пошук чогось у /etc/hostsтехнічно не "DNS".
  6. Запам’ятайте пункт 1. Ім'я хосту - для програм, які працюють локально; також для таких своєрідних мережевих протоколів, як SMB (samba). FQDN (якщо це не фабрика чи заповнювач на зразок localhost.localdomain) - для доступу до машини ззовні. FQDN має бути вирішеним там, де він використовується.

1
Що робити, якщо мій IP є динамічним (DHCP) і час від часу змінюється? яку адресу я повинен використовувати як myname/ etc / hosts?
користувач156516

3

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

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

Той, про який я не вірю, торкається на сторінці manname (на основі мого перечитування власної сторінки man), тому записи у файлах не закінчуються крапкою.

Ця конвенція використовується при роботі з записами DNS. Ім’я хосту та файли хостів насправді не є записами DNS. Якщо ви конфігурували ці записи в обов'язковій формі, щоб їх вирішити для пошуку DNS, то використання точки може ввійти в гру (перегляньте цей хороший ресурс: http://www.zytrax.com/books/dns/apa/dot.html ).

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


Пов’язано, про остаточну крапку в /etc/hosts: serverfault.com/questions/336056/setting-fqdn-hostname-and-dot
Джон У. Сміт

3

У відповідь на

Що робити, якщо мій IP є динамічним (DHCP) і час від часу змінюється? яку адресу я повинен використовувати як своє ім’я в / etc / hosts?

Дозвольте мені зазначити, по-перше, що / etc / hosts - це статичне визначення імені для відображення адрес для хоста, на якому воно встановлено, і використовується ТОЛЬКО цим хостом для перетворення імені в IP-адресу.

Отже, слід врахувати дві точки зору - "моє ім'я" хоста та всі інші.

Для цього хоста 'myhost' або посилайтеся на поточний хост, використовуючи 'localhost' (який визначено в / etc / hosts як 127.0.0.1), або додайте 'myname' до рядка / etc / hosts, який визначає localhost так, що 'myname 'завжди карта на, добре, localhost. Так:

127.0.0.1 мій прізвище localhost

Тоді не має значення, яку IP-адресу отримує ІНТЕРФЕЙС, у вас завжди буде адреса, яка працює (додатковий бонус полягає в тому, що вам не потрібно натискати на апаратне забезпечення, щоб говорити від "myname" до "myname").

Тепер, щоб дозволити іншим хостам знайти "myhost", коли "myhost" має динамічну IP-адресу, ви повинні використовувати DNS, і вказаний DNS-сервер повинен обробляти відображення, призначені DHCP. (Ну гаразд, є інші рішення, про які я можу придумати, але все, що спадає на думку, входить у категорію "поза дурними", ІМХО. Ну, добре, є що ви можете зробити хосту, щоб він повідомив DNS де це є, але це питання, гідне зовсім іншого потоку питань / відповідей тут, ІМХО)


2

/ etc / ім'я хоста та / etc / hosts просто, але й не так просто ...

Як швидко налаштувати Debian /etc/hostnameі/etc/hosts

1) Редагувати / etc / ім'я хоста .

Є два дійсних способи встановити це.

Або зробіть це:

  • machine, тобто просте одне слово для цього процесора.
    Наприклад, " joe" може бути назвою машини, яку ви вибрали самостійно.
    Зверніть увагу, для цього знадобиться псевдонім у / etc / hosts, далі описаний нижче.

АБО

  • machine.domain.net, тобто повністю кваліфіковане ім'я домену (FQDN).
    Наприклад, ' joe.xyz.com'.
    (Це припущення, що у вас є запис D "Хост DNS", що вказує з joe.xyz.com на IP-адресу вашого Джо, тобто на вашу машину з ім'ям Джо. Зазвичай ви встановлюєте цей запис там, де придбали ваше доменне ім'я. Детальніше про це момент.)

Після того, як / etc / hostname встановлено, наступним кроком є ​​отримання команд hostname --all-fqdnта dnsdomainnameналежна робота в такому порядку, як показано нижче:

2) Редагувати / etc / hosts .

У ньому є рядок для FQDN цього хоста , наприклад, 'machine.domain.net' з префіксом IP-адреси цієї машини (можливо, з динамічного сервера IP-адрес), наприклад:

#   IP           FQDN (CANONICAL_HOSTNAME)   ALIASES
#-------------- --------------------------- ------------------------
192.168.1.14    Joe.xyz.com                 joe
  • По-перше, зауважте, що верхній чи нижній регістр тут не має значення . Порада. Однак, якщо увімкнути деякі обмежувальні шапки, це дозволяє нам помітити, звідки в наступних кроках. Отже, я заробив великими літерами J oe.

  • Також зауважте, що для простогоhostname (тобто / etc / hostname = 'machine') правильно генерувати FQDN, псевдонім з назвою 'machine' повинен бути присутнім у / etc / hosts. Ось чому псевдонім Джо є. (BTW, нормально мати цей псевдонім, навіть якщо ви його не використовуєте.) Інакше цей псевдонім не потрібен і не використовується.

  • Також зауважте, що "domain.net" повинен бути вирішеним, тобто має існувати запис A для нього в DNS. Це те, що називається " вирішуваним " (тобто розв'язувачем DNS).

3) Тепер встановіть ці нові налаштування з / etc / ім'я хоста та / etc / hosts в ядро, запустивши:

    $ /etc/init.d/hostname.sh       # Or by rebooting

4) Перевірте ім'я хоста

$ hostname      # Reports the hostname previously read from in /etc/hostname.
joe

АБО

$ hostname
joe.xyz.com

Поради:

  • Зауважте, що в даний час це не те, що / etc / hostname є, як, наприклад, якщо ви його знову відредагуєте, а скоріше те, що було прочитано раніше сценарієм /etc/init.d/hostname.sh, можливо в результаті перезавантаження.

  • Також зауважте, що 'j' є малі, тому це говорить про те, що воно походить від / etc / hostname, а не / etc / hosts.

5) Тест на FQDN

$ hostname --all-fqdn   #reports the FQDN(s) matched in /etc/hosts.
Joe.xyz.com             #  It searches /etc/hosts for the joe in /etc/hostname.
                        #  Notice that the 'J' is uppercase.  
                        #     This suggest it came from /etc/hosts.

6) Тестуйте доменне ім’я DNS

$ dnsdomainname         #reports the computed DNS doman name    
xyz.com                 #  (i.e. the right most part of the FQDN; 
                        #    the part to the right of the first, left most, dot)
                        #  This is coming from Joe.xyz.com in /hosts, 
                        #    after 'Joe.' is removed.

Тепер це спростить налаштування веб-сервера та сервера електронної пошти.

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