Вопрос: Hostnames - О чем они?


Недавно я был «вынужден» выполнять какую-то работу с системным администратором, но это не то, что мне очень нравится, я читал, экспериментировал и многому научился.

Существует один фундаментальный аспект конфигурации сервера, который я не смог понять - хостов,

Например, в Ubuntu нужно указать имя хоста (см. Линейная библиотека):

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

Файл: / и т.д. / хосты

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

Я предполагаю, что plato является произвольным именем и что plato.example.com является полным доменным именем.

Теперь мои вопросы:

  • Это обязательно?
  • С какой целью?
  • Где это необходимо / используется?
  • Почему я не могу определить «localhost» как имя хоста для каждой машины?
  • Должен ли я настроить запись DNS для plato.example.com Полное доменное имя?
  • Должен plato.example.com использовать в качестве обратной записи DNS для моего IP-адреса?

Кроме того, есть ли «лучшие практики» для выбора имен хостов? Я видел людей, использующих греческие буквы, имена планет и даже мифологические фигуры ... Что происходит, когда у нас заканчиваются буквы / планеты?

Извините, если это глупый вопрос, но я никогда не был слишком в восторге от сетевых конфигураций.


49
2018-01-28 13:10


Источник


Я думаю, что Крис С здесь не работает. Вопрос - что такое системное имя хоста и как он относится к DNS - является допустимым. - larsks
@Chris S: Я понял, поверь мне. Я пробовал прочесть его один раз, но все это подействовало на меня как очень запутанное. Я не стремлюсь быть SA, просто пытаюсь понять основы немного лучше. - Alix Axel
Это должно перейти к вики сообщества - lynxman
@lynxman: Я не против, но почему? - Alix Axel
Потому что это очень интересно :) - lynxman


Ответы:


В наши дни система может иметь несколько интерфейсов, каждый с несколькими адресами, и каждый адрес может иметь несколько связанных с ним записей DNS. Так что же означает «системное имя хоста»?

Многие приложения будут использовать системное имя хоста в качестве идентификатора по умолчанию, когда они общаются в другом месте. Например, если вы собираете сообщения syslog на центральном сервере, все сообщения будут помечены именем хоста исходной системы. В идеальном мире вы, вероятно, проигнорируете это (потому что вы не обязательно хотите доверять клиенту), но поведение по умолчанию - если вы назвали все ваши системы «localhost» - приведет к появлению нескольких сообщений журнала, которые вы не сможет связываться с конкретной системой.

Как указывали другие люди, системное имя хоста также является полезным идентификатором, если вы обнаружите, что имеете удаленный доступ к нескольким системам. Если у вас есть пять окон, прикрепленных к системам с именем «localhost», вам будет трудно удерживать их прямо.

Аналогичным образом мы пытаемся сделать системное имя хоста совпадающим с именем хоста, которое мы используем для административного доступа к системе. Это помогает избежать путаницы при обращении к системе (в электронной почте, разговорах, документации и т. Д.).

Что касается DNS:

Вы хотите иметь правильные передовые и обратные записи DNS для своих приложений, чтобы избежать путаницы. Тебе нужно некоторые форвардная запись (имя -> ip-адрес), чтобы люди могли легко обращаться к вашему приложению. Наличие совпадения обратного входа полезно по ряду причин - например, оно помогает вам правильно идентифицировать приложение, если вы найдете соответствующий IP-адрес в журнале.

Обратите внимание, что здесь я говорю о «приложениях», а не «системах», потому что, особенно с веб-серверами, обычно существует несколько IP-адресов в системе, связанных с разными именами хостов и службами.

Попытка сохранить имя для ip-сопоставлений в вашем /etc/hosts файл быстро становится затруднительным, так как вы управляете все большим количеством систем. Очень легко, чтобы файл локальных хостов не синхронизировался с DNS, что потенциально приводило к путанице, а в некоторых случаях и к сбоям (потому что что-то пытается привязать к ip-адресу, который больше не существует в системе, например).


25
2018-01-28 13:33



Спасибо за ваш ответ, я все еще смущен, если мне (или нужно) поддерживать файл / etc / hosts вместо того, чтобы просто полагаться на записи DNS. - Alix Axel
Я вообще игнорирую /etc/hosts в пользу DNS. Это уменьшает количество мест, которые я поддерживал, чтобы поддерживать информацию о названии -> сопоставление адресов. На большинстве систем, которые я поддерживаю, /etc/hosts содержит только одну запись для localhost, - larsks
Когда вы работаете с кластерами - например, ganeti или кластер Linux-HA / Corosync - / etc / hosts используется для общения между членами кластера. Это плохо для того, чтобы полагаться исключительно на DNS, потому что ваша служба DNS может находиться на этих кластерах и переносится или отключается во время смены узла, поэтому / etc / hosts и правильное имя хоста помогут вам отлично провести время. - coredump
поэтому, в отношении «уникальных», мы скорее «пытаемся» быть «уникальными», чем «должны» быть уникальными, правильными? Потому что там так много серверов, и все они в одной и той же области, быть реальным «уникальным» невозможно. Правильно ли это понимание? - shenkwen


Вы можете установить каждое имя хоста на «localhost», но очень удобно иметь alix@plato ~ $ в командной строке, когда вы управляете машинами по ssh. Удаленное управление серверами может стать очень запутанным, если вы этого не сделаете.

Наличие правильного FQDN важно при размещении веб-сервера или почтового сервера. Такие серверные приложения любят знать, с кем они работают.

Для выбора хорошей схемы именования я отсылаю вас к этот очень популярный вопрос ,

Полное доменное имя становится полезным только тогда, когда оно имеет смысл для другого компьютера. Для этого есть три уровня:

  • Один компьютер в вашей локальной сети имеет запись в своем файле hosts, указывающую на эту машину
  • У вас есть DNS-сервер, работающий в локальной сети, и каждый локальный компьютер, который использует его в качестве DNS-сервера, теперь знает платон по имени.
  • Вы регистрируете доменное имя, и теперь весь мир знает, на какую машину указывает имя plato.alixaxel.com.

При отправке электронной почты или обслуживании веб-страниц во внешний мир, третий - тот, который вы хотите иметь. Для большинства других случаев вы можете обойтись с локальным DNS или даже редактировать файлы хостов.

В этом случае вы можете просто создать доменное имя (plato.alixnetwork может быть прекрасным как полное доменное имя) для использования в вашей локальной сети. Единственное добавленное значение наличия части «alixnetwork» (имя домена) является удобством, когда у вас есть другая локальная сеть, с которой вы хотите отличить ее.


10
2018-01-28 13:21



Спасибо, Кенни, я думаю, мое главное сомнение в том, почему важно, чтобы веб-сервер / почтовый сервер имел правильное полное доменное имя. Кроме того, что представляет собой «надлежащее» полное доменное имя? Должен ли я просто добавить имя хоста в домен и указать его на общедоступный IP-адрес? У меня создается впечатление, что я должен создавать записи DNS A / AAAA с именем хоста, нет? - Alix Axel
Это зависит от того, чего вы хотите достичь. Если вы не отправляете электронные письма или не обслуживаете веб-страницы в мире с помощью платона, действительно нет необходимости создавать глобальную запись DNS для этой машины. - Kenny Rasschaert
«Вы регистрируете доменное имя, и теперь весь мир знает, на какой машине имя plato.alixaxel.com указывает». Я этого не понимаю. Разве не весь мир знает, на какой машине имя plato.alixaxel.com указывает, установив DNS-разрешение «alixaxel.com»? Что это связано с установкой FQDN в случайной машине? - shenkwen


Основной обзор. Имя хоста - это просто указатели; вы можете назначить один конкретный для имени хоста, на который ссылается машина, но он может иметь несколько. Некоторые службы, заметная почта и HTTP полагаются на имена доменов, чтобы знать, где должны располагаться сервисы, и как добраться до них.

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

Когда вы помещаете запись в hosts файл, вы не назначаете его компьютеру. Назначение имени хоста, используемого компьютером, выполняется в файлах конфигурации (в системах * nix) и в системных свойствах в системах Windows (в системе Windows также могут быть суффиксы NIC).

Записи в hosts файл, как и система DNS, - это просто сопоставление от имени хоста к IP-адресу. Чтобы использовать имя хоста localhost (нет ничего особенного, это имя хоста, как и все остальное), он должен быть сопоставлен с интерфейсом loopback (поэтому он всегда будет указывать на локальный компьютер). Чтобы обеспечить это, все компьютеры поставляются с этим стандартным отображением в своих hostsфайл, но его можно было бы удалить, если вы не хотите использовать это имя хоста.

Кроме того, как отмечали другие, очень полезно назначить имя хоста компьютеру. При подключении к компьютеру вы можете отображать свое имя хоста при входе в систему или в качестве приглашения или в любом другом месте. Это упрощает идентификацию компьютера, к которому вы подключены. Если вы настроите это имя хоста в DNS или поместите его во все hosts файлы, вы сможете подключиться к компьютеру, указав его имя хоста, а не постоянно знать его IP-адрес. (Еще более полезно, если компьютер использует DHCP, поскольку адрес может измениться. Если компьютер обновляет DNS, тогда запись DNS будет указывать на новый IP-адрес, вы все равно можете подключиться, не зная нового IP-адреса, потому что знаете имя DNS ).

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


8
2018-01-28 13:41



+1 за то, что нашли время, чтобы написать хороший ответ, несмотря на начальное чувство разочарования в вопросе. - Kenny Rasschaert
Удивительное объяснение! Если мое понимание верно, установите полное доменное имя в /etc/hosts не обязательно, если имя хоста в записи DNS достигнет того же результата, правильно? - Alix Axel
@Alix, правильно, если запись находится в DNS (и DNS работает правильно), а затем в hosts файл будет лишним. Также запись в hosts файл будет переопределять DNS (полезно для тестирования иногда, раздражает, когда вы забыли об этом, хотя). Обратите внимание, что все это относится к записям A и AAAA, есть записи других типов для имен хостов, но я оставил их для ясности. - Chris S
Спасибо Крису, это делает все намного понятнее. - Alix Axel


Ведущему нужно присвоить содержательное имя. Имя хоста может иметь несколько целей:

1- Это помогает вам распознавать, на котором вы сейчас работаете.

2- Использование имен, настроенных в /etc/hosts и / или записи DNS проще, чем запоминание многих IP-адресов.

3- Localhost - это зарезервированное имя для ссылки на текущий компьютер (адрес 127.0.0.1).

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

Выбор подходящего имени для каждого сервера помогает вам в управлении. Кроме того, он помогает вашим клиентам получать доступ к вашим серверам.


5
2018-01-28 13:19





Как примечание стороны: Правильная работа по переходу и обратному DNS-разрешению является абсолютным краеугольным камнем в каждой ИТ-установке на этой планете. Никогда не стоит недооценивать необходимость хорошо поддерживаемого DNS и правильного разрешения имен хоста!


2
2018-01-28 13:40



Я не могу понять, почему это важно. У меня есть linode-сервер, на котором размещаются многие веб-сайты. Не понимая цели установки имени хоста, я просто оставляю его как есть, что является «ubuntu». Этот сервер работает уже пару лет, и я никогда не испытываю никаких неудобств. Я не стану сомневаться в вашем ответе, я просто пытаюсь понять, почему имя хоста важно. В моем случае, когда я хочу, чтобы я правильно установил имя хоста? - shenkwen
@shenkwen - если у вас, честно говоря, есть только один сервер, вы можете назвать его, как пожелает ваше сердце, и это, очевидно, не имеет значения. Как только количество серверов станет больше 1, у вас возникнут новые проблемы для управления, и правильное именование является важным инструментом. - mfinni


Отказ от ответственности: основной вопрос касается систем Linux, поэтому не стесняйтесь игнорировать этот ответ, если вас не интересует сторона Windows.

В любом случае, в системах Windows, помимо всех пунктов, упомянутых в других ответах, имя хоста фактически используется O.S. сам по сети и аутентификации; в частности:

  • Каждая система, будь то член домена или член домена, должна иметь уникальное имя в той же сети (то есть в той же самой подсети IP), в противном случае возникнет конфликт имен и различные сетевые службы (в основном совместное использование файлов и принтеров) не будут работать.
  • Все системы, входящие в один домен Active Directory, должны иметь уникальное имя, независимо от границ сети.
  • В доменной среде имя хоста системы выступает в качестве принципала безопасности и может использоваться для удаленной аутентификации (просто подумайте об этом как учетной записи пользователя для машины); ему могут быть назначены разрешения и права доступа и могут быть помещены в группы в целях безопасности. Это влияет на все процессы, выполняемые в системе, используя встроенный LocalSystem а также NetworkService учетные записи пользователей, которые могут аутентифицироваться в других системах, используя учетные данные системы, в которой они работают; это позволяет f.e. процесс, выполняющийся как NetworkServiceна SystemA для доступа к общей папке в SystemB путем предоставления разрешений в папке для учетной записи пользователя SystemA.

1
2017-10-14 14:22





Многие сайты и / или предполагаемые «админы» теперь заявляют, что атрибут «hostname» содержит полное доменное имя экземпляра ОС, которое «ломает» любое разрешение, которое добавляет к нему «domainname»:

имя хоста
  system1.domain1.org

пинг hostname
  - невозможно разрешить system1.domain1.org.domain1.org


-1
2017-12-02 00:16



Можете ли вы предоставить справочный источник для своего заявления? - Dave M