Назад | Перейти на главную страницу

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

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

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

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

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

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

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

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

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

Кроме того, идея хостника немного вариативна:

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

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

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

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

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

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

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

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

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

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

Чтобы были точки (.) в приглашении вашего имени хоста (PS1). Измените свой PS1 настройки, изменить: \h в \H. PS1 обычно создается в Вашем ~/.bashrc