Следует ли использовать полное доменное имя в / etc / hostname вместо hostname?

10

Как я прочитал на странице руководства, рекомендуется указывать имя хоста (без имени домена) /etc/hostname. Например, хост вместо host.domainsub.domaintld. Но, как я знаю, некоторые программы зависят от наличия FQDNв /etc/hostname.

Что нужно указать /etc/hostname на машинах Debian / Ubuntu?

Если не FQDN, где вместо этого должно быть указано FQDN?

Я знаю, вопрос устарел, но не нашел четкого ответа. Некоторые люди говорят имя хоста, некоторые - FQDN. Спасибо.

Булат М.
источник
1
Где вы находите людей, которые говорят, что вы поместили полное доменное имя в файл / etc / hostname? Этот файл предназначен только для имени хоста системы.
Терренс
При чтении материала об этом в интернете где-то встречался. И где нужно указать его полное доменное имя?
Булат М.
@Terrance, на самом деле я хочу получить ответы от опытных людей в этой области, чтобы они показали, как сделать это "правильно" с самого начала. Напиши как ответ. А что делать в дистрибутивах, которые не имеют / etc / hostname?
Булат М.

Ответы:

7

В файле / etc / hostname вы используете только имя хоста. Полное доменное имя, которое вы можете установить в: / etc / hosts, может выглядеть так:

127.0.1.1        thishost.mydomain.org    thishost

В соответствии с руководством файла hosts.

http://man7.org/linux/man-pages/man5/hosts.5.html

Adonist
источник
1
ИСПРАВЛЕНИЕ: Спасибо, однако следует знать о плюсах и минусах указания / не указания FQDN в / etc / hostname. Я знаю о вашем решении: это заглушка для программ, которые хотят разрешить полное доменное имя для чего-то (не важно, по какому адресу) работать.
Булат М.
12

Пересмотренный ответ:

Сам хост не обрабатывает фактическое полное доменное имя. Это обрабатывается DNS . Полное доменное имя (FQDN) обрабатывается DNS, переводя имена в IP-адреса. Используя /etc/hostsфайл, вы по сути переопределяете DNS-сервер. /etc/hostsСначала компьютер ищет файл, чтобы определить, определена ли запись для имени хоста по IP-адресу. Записи в /etc/hostsвыглядит следующим образом:

127.0.0.1 localhost
127.0.1.1 terrance-ubuntu.local terrance-ubuntu

Эти записи не являются специфичными для дистрибутива. Все ОС используют одинаковый формат для этих строк. Просто местоположение hostsфайла меняется. Linux, как правило, находится в /etc/папке, а в Windows - в C:\Windows\System32\drivers\etc\папке.

Разбивая эту цепочку, вы можете видеть, что я назначаю оба terrance-ubuntu.local, а именно мое полное доменное имя, для переопределения DNS, чтобы приложения знали, что не покинуть мой компьютер, и terrance-ubuntu, что является именем хоста, снова, чтобы приложения знали, чтобы не покидать мой компьютер или 127.0.0.1 ( localhost ). Назначение моего имени хоста моей системы 127.0.1.1не влияет на остальные компьютеры, которые находят мой хост в сети. Если DNS работает правильно, они увидят мое имя хоста как 10.0.0.100. Причиной использования 127.0.1.1является то, что мои приложения находят мою систему быстрее, поскольку она будет знать, что моей системы нет в другом месте моей сети. Мое фактическое имя хоста с тем, .localчто мое полное доменное имя,.local на самом деле мой домен, который я настраиваю через маршрутизатор, который также является другим DNS-сервером в моей сети.

Теперь предположим, что службы DNS в локальной сети не присваивают IP-адресам имена хостов или FQDN, но все же вы знаете, каков IP-адрес хоста в локальной сети. Затем вы должны назначить этот хост в своем /etc/hostsфайле, чтобы вам не приходилось вводить IP-адрес хоста каждый раз, когда вы хотите получить к нему доступ. Хост может быть сервером инструментов, принтером или какой-либо другой системой, подключенной к сети. Добавьте запись, как обычно, в /etc/hostsфайл.

Я собираюсь использовать мой сетевой принтер, например. Он имеет статический IP-адрес 10.0.0.253. Я не знаю, как это называется. Для этого я хочу назвать это hp_printer. Я буду пинговать IP и имя хоста для него, а затем добавить в /etc/hosts.

terrance@terrance-ubuntu:~$ ping -c 2 10.0.0.253
PING 10.0.0.253 (10.0.0.253) 56(84) bytes of data.
64 bytes from 10.0.0.253: icmp_seq=1 ttl=255 time=0.326 ms
64 bytes from 10.0.0.253: icmp_seq=2 ttl=255 time=0.334 ms

terrance@terrance-ubuntu:~$ ping -c 2 hp_printer
ping: unknown host hp_printer

terrance@terrance-ubuntu:~$ sudo vi /etc/hosts
10.0.0.253 hp_printer.local hp_printer

terrance@terrance-ubuntu:~$ ping -c 2 hp_printer
PING hp_printer.local (10.0.0.253) 56(84) bytes of data.
64 bytes from hp_printer.local (10.0.0.253): icmp_seq=1 ttl=255 time=0.334 ms
64 bytes from hp_printer.local (10.0.0.253): icmp_seq=2 ttl=255 time=0.303 ms

Теперь я также могу получить доступ к веб-странице для моей настройки принтера по названию, которое я дал ему, а не по IP-адресу, который может быть легче запомнить:

введите описание изображения здесь

Ваш файл /etc/resolv.conf также используется DNS для поиска имен хостов. Это файл конфигурации для распознавателя. Он предоставляет поисковый домен, чтобы вам не приходилось указывать свое полное доменное имя все время, когда вы ищете хост. Он также предоставляет IP-адрес для DNS или сервера имен вашей локальной сети. searchЛиния ниже показывает название , localкоторое мое доменное имя.

terrance@terrance-ubuntu:~$ cat /etc/resolv.conf 
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 10.0.0.1
search local

Надеюсь, это поможет лучше понять, как работают DNS и FQDN.

Терренс
источник
почему вы сопоставляете полное доменное имя в / etc / hosts с 127.0.1.1?
Булат М.
1
@BulatM. Пожалуйста, смотрите мой исправленный ответ.
Терренс
Не могли бы вы объяснить разницу между поисковыми и доменными ключевыми словами в /etc/resolv.conf? Я читаю справочную страницу resolv.conf, но пока не очень ясно.
Булат М.
И можно ли включить их обоих? Не могли бы вы представить полезный действительный случай в ответ? Спасибо.
Булат М.
1
@BulatM. Нажмите на ссылки в моем ответе, и они приведут вас к дополнительной информации о вещах. Например, en.wikipedia.org/wiki/Resolv.conf дает гораздо больше информации. Я здесь, чтобы помогать, а не учить вас. Мне не платят, так как это все добровольцы, поэтому, пожалуйста, изучите их самостоятельно.
Терренс
4

В справочной страницеhostname(1) обсуждается это (абзац, выделенный жирным шрифтом, выделен мной):

Полное доменное имя
   Полное доменное имя (FQDN) системы - это имя, котороераспознаватель (3) возвращает для имени хоста, например, ursula.example.com .
   Обычно это имя хоста, за которым следует DNS-имя домена (часть
   после первой точки). Вы можете проверить полное доменное имя, используя hostname --fqdn   или
   доменное имя с использованием dnsdomainname .

   Вы не можете изменить полное доменное имя с именем хоста или именем домена .

   Рекомендуемый метод установки полного доменного имени - сделать имя хоста
   псевдоним для полного имени, используя / etc / hosts, DNS или NIS.
   Например, если имя хоста было "ursula", можно было бы иметь строку в
   / etc / hosts, который читает

          127.0.1.1 ursula.example.com ursula

   Технически: полное доменное имя - это имя, которое getaddrinfo (3) возвращает для хоста
   имя, возвращаемое gethostname (2). DNS-имя домена является частью после
   первая точка.

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

И если вы зададите полное доменное имя в качестве имени хоста во время установки, оно записывает только первый компонент /etc/hostnameи сохраняет полное доменное имя /etc/hosts.

Итак, в этом случае просто позвольте установщику сделать то, что он делает.

Мур
источник
Является ли он (включение 127.0.1.1 ursula.example.com ursula в / etc / hosts) специфичным для Debian \ Ubuntu или может применяться одинаково хорошо для любого другого дистрибутива?
Булат М.
1
Не знаю о других дистрибутивах. Вы можете сделать то же самое в Arch и Cent OS, хотя. Вопросы о других дистрибутивах следует задавать в Unix & Linux .
Муру