Могу ли я иметь точки в имени хоста?

23

Я использую такие имена, как a.alpha, для имени хоста моего linux-бокса, но кажется, что эти имена нельзя использовать полностью. Ответ на команду оболочки hostname правильный (a.alpha). Но имя, напечатанное после моей учетной записи пользователя, будет «user @ a» вместо «user@a.alpha». Когда я использую avahi, я могу достичь (по имени хоста) a.alpha, но не b.alpha. Это нормально?

БЕНЗОЛА
источник

Ответы:

23

Измельчитель прав. Из-за того, как работает DNS, «альфа» компонент «a.alpha» считается дискретной «меткой» в DNS. Использование имени хоста с точкой в ​​нем приведет к противоречивым результатам в любой системе, которая использует DNS.

Avahi взаимодействует с DNS-именами, и, в частности, в <host-name>директиве должно быть указано полное доменное имя DNS службы, поэтому она также подвержена несоответствию DNS с точечными именами.

Не используйте пунктирное имя.

sysadmin1138
источник
Это правильно, но для правильного ответа нужны ссылки. Кто-то говорит «Из-за того, как работает DNS» в переполнении стека, ничего не доказывает.
mikemaccana
Это жесткое правило, что имя хоста не может содержать «.» ?
Динеш Кумар П
1
@DineshKumarP Да. RFC DNS описывают символ точки как разделитель между метками DNS. Хотя службы, отличные от DNS, такие как Avahi или SLP, могут разрешать это, сам DNS этого не делает.
sysadmin1138
Это не совсем верно. DNS очень рада разрешить точки в метках, хотя и предполагает соответствие ограниченному синтаксису («правило LDH»; см. Tools.ietf.org/html/rfc1035#section-2.3.1 ). Приложения DNS, такие как хранение имен узлов в DNS, вступают в силу ограничений на синтаксис меток DNS.
Тони Гарнок-Джонс
17

Вы просите проблемы с этой схемой именования из-за DNS, рассмотрите вместо этого альфа.

Chopper3
источник
Я бы задал тот же вопрос на аскубунту, и никто не может ответить мне ни на что. Так что я буду использовать этот метод
бензен
1

Как уже упоминали другие, вы определенно хотите избежать точек в именах хостов из-за DNS, и я также обнаружил, что это может создать проблему, если вы используете подстановочные сертификаты для выполнения SSL, так как подстановочные сертификаты будут подстановочными только для одного уровня субдомен. Поэтому, если ваш сертификат подстановочного знака предназначен для * .mycompany.com, но у вас есть имя хоста a.alpha, сертификат подстановочного знака может не работать, если он обрабатывает «альфа» как поддомен.

Митчелл Трейси
источник
1

Полное имя хоста, как правило, является полным доменным именем (полностью определенным доменным именем), оснащенным доменом, и в linux должно заканчиваться выводом host --fqdn, причем часть перед первой точкой рассматривается как псевдоним хоста. Однако в разных системах (Linux, SunOS и т. Д.) Концепция hostnick реализована по-разному. Такие как:

  • / etc / hostname содержит только hostnick, а остальные находятся в / etc / domainname
  • / etc / hostname содержит полное полное доменное имя, а домен также находится в / etc / domainname
  • Доменное имя существует только в конфигурации YP / NIS
  • Доменное имя существует только в определенных подсистемах, а не является глобальным
  • (другие, как правило, более странные подходы)

Кроме того, идея hostnick - это небольшая переменная:

  • Часть полного доменного имени перед первой точкой
  • Некоторая левая часть полного доменного имени, выраженная исключительно без конечной точки
  • Часть полного доменного имени перед фактическим именем домена (как установлено где-то)

И, что еще больше усложняет ситуацию, hostкоманда от bind9-host нарушает стандарты DNS, имея -N <int>возможность контролировать, используются ли поисковые домены. Это нарушает поиск DNS различными способами в зависимости от сценария. Предполагается, что DNS принимает любой поиск для имени с конечной точкой как буквально то, что нужно искать, а для других имен, чтобы искать их с помощью добавленных доменов с момента, /etc/resolv.confпока не будет найдено совпадение, или все они потерпят неудачу (эти домены неявно имеют конечная точка). [Это из памяти, пожалуйста, прокомментируйте, если общий процесс изменился в RFC, который я пропустил]

Таким образом, если вы используете точки в вашем hostnick, hostкоманда, вероятно, испортит что-то, сломав сценарии, которые используют его для поиска. Лично я нахожу это непостижимым, поскольку hostоно сломано, и даже сегодня кажется, что оно нарушает поиск системы в моей домашней сети, поскольку у меня дома есть и IPv4, и -v6, и такие имена, как .v4. как дополнительные, специфичные для версии короткие формы, которые hostне могут быть найдены, хотя и pingнаходят их в порядке.

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

Алекс Норт-Киз
источник
0

Правильный ответ определенно «не делай этого», как указано выше.

Для некоторого, возможно, полезного и определенно касательного чтения, пожалуйста, продолжайте:

Вы говорите о разрешении DNS или командной строке? Если вы хотите исправить приглашение командной строки, просто поиграйтесь с $ PS1 (или аналогичным не-bash / sh эквивалентом, где это применимо).

Если вы действительно хотите, чтобы .alpha был именем хоста, которое разрешается в IP-адресах на веб-сайтах, вы можете сделать это, но это может включать субдомен для каждого суффикса имени хоста (EG alpha, beta и т. Д.).

Даже возможно, что вы можете настроить свой DNS-сервер для работы без создания поддоменов. Вы можете обслуживать IP-адреса серверов имен субдомена в файлах зон родительского домена, поэтому он может «просто работать». Это связано с тем, что, когда кто-то запрашивает у вашего DNS-сервера IP-адрес a.alpha.examaple.com, он запрашивает у DNS-сервера example.com, и если у этого DNS-сервера уже есть адрес, он ответит ответом. вместо того, чтобы пытаться передать вас на авторизованный сервер субдомена. Это может быть связано с отсутствующим SOA ... поэтому, возможно, вы добавляете запись A для каждого префикса хоста и SOA для каждого суффикса хоста. Да, это билет ...

Все в Интернете все еще будут думать, что ваше имя хоста - «a», а ваш домен - alpha.example.com.

Дилан Мартин
источник