Пересмотренный ответ:
Сам хост не обрабатывает фактическое полное доменное имя. Это обрабатывается 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.