Понять имя хоста и / 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. и ⋯ .TLD ) являются приемлемыми. Первое однозначно, а второе вездесуще.
  5. Не знаю что dnsmydomainесть, но вряд ли. Поиск чего-либо в /etc/hostsтехнически не является «DNS».
  6. Запомните пункт 1. Имя хоста - для приложений, которые работают локально; также для таких своеобразных сетевых протоколов, как SMB (samba). Полное доменное имя (если это не подставка или заполнитель localhost.localdomain) - для доступа к машине извне. Полное доменное имя должно быть разрешено там, где оно используется.
Incnis Mrsi
источник
1
Что если мой IP-адрес является динамическим (DHCP) и время от времени меняется? какой адрес я должен использовать как mynameв / etc / hosts?
user156516
3

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

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

То, к чему я не верю, затронуто на странице руководства по имени хоста (основываясь на моем перечитывании страницы руководства), почему записи в файлах не заканчиваются точкой.

Это соглашение используется при работе с записями DNS. Файлы имени хоста и хоста на самом деле не являются записями DNS. Если вы настраивали эти записи в bind для разрешения поиска в DNS, тогда использование точки может вступить в игру (посмотрите этот хороший ресурс: http://www.zytrax.com/books/dns/apa/dot.html. ).

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

User52458
источник
Связано, о последней точке в /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» 'всегда отображается на, ну, локальный. Вот так:

127.0.0.1 localhost myname

Тогда не имеет значения, какой IP-адрес получает ИНТЕРФЕЙС, у вас всегда будет работающий адрес (дополнительным бонусом является то, что вам не нужно нажимать на оборудование, чтобы говорить от «моего имени» до «моего имени»).

Теперь, чтобы другие хосты могли находить «myhost», когда «myhost» имеет динамический IP-адрес, вы должны использовать DNS, и указанный DNS-сервер должен обрабатывать сопоставления, назначенные DHCP. (Хорошо, хорошо, есть другие решения, которые я могу придумать, но все, что приходит на ум, вписывается в категорию «за гранью глупости», ИМХО. Хорошо, хорошо, есть вещи, которые вы можете сделать с хостом, чтобы ИТ-отдел сообщил DNS где это, но это вопрос, достойный совершенно другой поток вопросов / ответов здесь, ИМХО)

RustyCar
источник
2

/ etc / hostname и / etc / hosts просты, но не так просты ...

Как быстро настроить Debian /etc/hostnameи/etc/hosts

1) Отредактируйте / etc / hostname .

Есть 2 способа установить это.

Либо сделать это:

  • machineпростое, одно слово для этого процессора.
    Например, « joe» может быть вашим самостоятельно выбранным именем машины.
    Обратите внимание, что для этого потребуется псевдоним в / etc / hosts, более подробно описанный ниже.

ИЛИ

  • machine.domain.netполное доменное имя (FQDN).
    Например, ' joe.xyz.com'.
    (Предполагается, что у вас есть запись «A» DNS-узла, указывающая с joe.xyz.com на IP-адрес вашего joe, то есть на вашем компьютере с именем joe. Обычно вы устанавливаете эту запись там, где приобрели свое доменное имя. Подробнее об этом в момент.)

После того, как / etc / hostname задан, следующим шагом будет получение команд hostname --all-fqdnи dnsdomainnameих правильная работа в следующем порядке:

2) Отредактируйте / etc / hosts .

В нем есть строка для полного доменного имени этого хоста , например «machine.domain.net», с префиксом IP-адреса этой машины (возможно, с сервера динамических IP-адресов), например:

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

  • Также обратите внимание, что для простогоhostname (т. Е. / Etc / hostname = 'machine') правильного генерирования полного доменного имени, псевдоним с именем 'machine' должен присутствовать в / etc / hosts. Вот почему псевдоним Джо там. (Кстати, иметь этот псевдоним можно, даже если вы его не используете.) В противном случае этот псевдоним не нужен и не используется.

  • Также обратите внимание, что «domain.net» должен быть разрешаем, то есть для него должна существовать запись A в DNS. Это то, что называется « разрешаемым » (то есть DNS-преобразователем).

3) Теперь установите эти новые настройки из / etc / hostname и / 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) Проверка полного доменного имени

$ 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.

Теперь это должно упростить настройку веб-сервера и почтового сервера.

Эллиптический вид
источник