Когда я настраиваю hostname
на компьютере, который я могу посмотреть так:
$ hostname
example
а затем ping или ssh с другого компьютера в той же локальной сети:
$ ssh example
user@example's password:
Где мой другой компьютер ищет адрес для этого имени хоста? Прежний компьютер как-то прописывает его в роутере? Второй компьютер просто спрашивает каждый IP-адрес в локальной сети: «Вы? example
? "?
Второй компьютер, кажется, знает IP-адрес, соответствующий example
даже если я отключу example
. Эта информация кэшируется на втором компьютере? Или делает hostnamectl
как-нибудь зарегистрируйте это имя хоста в роутере.
И если я сейчас подключу эти компьютеры к другой сети, смогут ли они найти друг друга по этим именам хостов?
Как все это работает?
Есть несколько способов:
Сеть без конфигурации протоколы с использованием многоадресной IP-рассылки (RFC 1112) отправляет UDP-пакеты по специальным адресам, которые многие устройства в локальной сети рассматривают как отправленное им сообщение. Следовательно, нет необходимости спрашивать каждый IP-адрес в сети. Они также используют зарезервированные MAC-адреса для пакетов, которые пересылаются на каждый порт коммутатора.
В Протокол динамического конфигурирования сервера (DHCP) может быть задействован:
DNS-суффикс для конкретного подключения, Параметр DHCP 15 (RFC 2132, 3.17) дает клиенту доменное имя, которое будет добавлено в качестве суффикса к этим запросам без полного доменного имени. Следовательно, ваш example
может стать example.example.com
который используется для запроса DNS.
Возможно автоматическое обновление DNS с помощью Параметр полного доменного имени DHCP-клиента (RFC 4702).
NetBIOS. См. Например Роберт Л. Бог: Как на самом деле работает разрешение имен NetBIOS.
Протокол разрешения одноранговых имен (PNRP). Технология Microsoft требует IPv6.
На клиентском (с) компьютере запустите "grep hosts /etc/nsswitch.conf"
Это сообщит вам местоположение и порядок, в котором система будет искать имена хостов. Обычно вы увидите что-то вроде:
хосты: файлы dns
Это означало бы, что он просматривает файл / etc / hosts, а затем запрашивает dns. Если бы вместо этого было сказано:
хосты: файлы DNS
Затем он будет искать DNS, а затем локальный файл / etc / hosts.
Есть и другие возможности для этой записи, так что посмотрите, что вы сможете найти!