Это в моей домашней локальной сети, где есть DNS-сервер (Bind9) и DHCP-сервер (dhcpd).
Мой настольный компьютер получает свой IP-адрес от DHCP-сервера, который включает поисковый домен mylan
.
Итак, полное доменное имя моего настольного компьютера: mydesktop.mylan
.
Соглашение Debian, похоже, заключается в том, что /etc/hostname
должен содержать только короткое имя хоста, поэтому mydesktop
.
Но что насчет /etc/hosts
?
Какой должна быть запись: короткое или полное доменное имя?
127.0.0.1 localhost
127.0.1.1 mydesktop.mylan mydesktop
Есть соглашение? Рекомендация?
Если полное доменное имя находится в /etc/hosts
не будет ли это "отменять" разрешение DNS? Это имеет значение?
Если вы посмотрите справочную страницу для имя хоста, может быть, это укажет вам правильное направление. Также Установка имени хоста и настройка службы имен и Орейли Служба имен и конфигурация преобразователя из Руководства сетевого администратора Linux, 2-е издание, очень хорошо объясняет проблему разрешения имен в Linux. Думаю, этого достаточно, чтобы помочь вам начать.
Дело в том, что Интернет и идея разрешения имен и DNS эволюционировали со временем, и многие вещи, которые мы находим сегодня, имеют исторические причины.
Чтобы ответить на ваши вопросы, вы можете установить каноническое имя хоста просто в /etc/hostname
файл. Ядро может получить доступ к имени через hostname
команда. Теперь это не имеет отношения к днс вообще.
В /etc/hosts
Файл существует по причинам, помогающим разрешению имен для нескольких клиентов (вместе с локальной системой), а также когда DNS-сервер недоступен.
Теперь, как система Linux решит, что использовать для разрешения имен, определяется в /etc/nsswitch.conf
файл. Пример частичного содержимого файла может выглядеть так:
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# Information about this file is available in the `libc6-doc' package.
hosts: files dns
Первая строка с hosts
означает, что система обратится к /etc/hosts
сначала файл, а затем DNS-сервер для разрешения имен.
Как видите, если у вас есть рабочий DNS, вам не нужно добавлять запись имени хоста в /etc/hosts
файл. И что будет иметь приоритет, определяется /etc/nsswitch
файл.
Ограничение с файлом / etc / hosts заключается в том, что он виден только локальной системе, и его нужно поддерживать вручную (редактировать / добавлять / удалять имена IP / хостов) и не может помочь другим системам в сети разрешить имена хостов из этого файл. Так появилась идея централизованного файла хостов, который будет доступен для всех компьютеров в локальной сети, и оттуда развилась идея DNS-сервера.
Я всегда настраивал свой файл / etc / hosts как с локальным именем хоста, так и с полным доменным именем.
В / etc / hosts справочная страница:
127.0.1.1 thishost.mydomain.org thishost
192.168.1.10 foo.mydomain.org foo
192.168.1.13 bar.mydomain.org bar
146.82.138.7 master.debian.org master
Если полное доменное имя находится в / etc / hosts, не будет ли это "отменять" разрешение DNS? Это имеет значение?
Да, ваш файл hosts всегда будет отменять разрешение DNS, поскольку это первое, что проверяет ваш локальный преобразователь DNS. Однако это не должно быть проблемой в любой конфигурации сети, о которой я могу думать, если только вам не нужно, чтобы ваш клиент по какой-либо причине запрашивал DNS-сервер для разрешения собственного имени хоста клиента.