2

В современных локальных сетях устройства используют несколько разных методов для разрешения имен. В частности, просто чтобы назвать несколько вещей, таких как DNS, Avahi, zeroconf, mDNS, Bonjour, NetBIOS, WINS или даже ручные файлы хостов. Я полагаю, что некоторые из них - это разные термины, обозначающие одно и то же. Некоторые используют децентрализованные технологии, другие полагаются на DHCP для распределения центральных адресов.

Как современные распространенные операционные системы проходят через эти различные, возможно, противоречивые, методы разрешения имен? Какой порядок они используют? У разных ОС разное поведение?

Когда кто-то запрашивает IP-адрес foobar , когда к имени добавляется локальный поисковый домен - после сбоя при первоначальном разрешении имени, до того, как он запрашивает что-то в сети, или в другое время? Могут ли (и / или могут ли) преобразователи DNS добавлять поисковые домены при попытке найти запись в своих таблицах?

Почему изменилось поведение моих клиентов, когда я указал локальный поисковый домен (в отличие от пустого) в моем маршрутизаторе?

Некоторые из этих методов поддерживают и / или используют .local tld / search. Это только авахи?

Как происходит добавление . в конце домена изменить вещи? Это просто мешает искать "локальный домен"? Когда я просматриваю google.com , почему мне не нужен трейлинг .?

Почему мой преобразователь DNS не выполняет поиск google.com.local или google.com.MyLocalSearchDomain?

У вас могут быть вложенные поисковые домены?

NetBIOS и WINS - это одно и то же? А как насчет авахи, бонжур и других?

Следующий вопрос: как работает каждая из этих служб? Я понимаю, что DNS использует более традиционный стиль (по существу) одного центрального сервера, который настроен для использования каждым клиентом. Однако децентрализованные методы должны использовать некоторые другие методы для автоматического обнаружения имен. Как это работает?

2 ответа2

3

Короче говоря, это очень запутанная смесь различных наборов протоколов разрешения имен, используемых различными операционными системами, продуктами, приложениями, службами и API.

IETF ZeroConf определяет протокол mDNS (многоадресная DNS), а также протокол DNS-SD (обнаружение службы DNS). Bonjour (ранее Rendezvous, также известный как mDNSResponder) и Avahi - две реализации ZeroConf. Я слышал, что есть также реализация сообщества OpenWrt, которая просто называет себя "mDNS". С тех пор, как Apple создала это, продукты Apple фокусируются на этом, хотя Mac могут также использовать NetBIOS Name Service и WINS для разрешения имен, особенно при использовании SMB-клиента macOS для подключения к файловым серверам SMB (Windows Server, Linux SaMBa-сервера).

Собственные протоколы службы имен Microsoft начинаются с NetBIOS Name Service, основанной на локальных (не маршрутизируемых) широковещательных рассылках. Я говорю "проприетарный Microsoft", но технически он возник с IBM как часть протоколов Server Message Block (SMB). Поскольку файловая служба SMB стала отраслевым стандартом де-факто, многим операционным системам пришлось по меньшей мере использовать службу имен NetBIOS в своих клиентах и серверах SMB. Позже Microsoft создала WINS для предоставления одноадресного решения на основе сервера для такого же разрешения имен, принадлежащих Microsoft. Когда Apple создала mDNS под названием "Rendezvous" (позже переименованный в Bonjour) и передала его IETF, чтобы в итоге стать IETF ZeroConf, Microsoft с недоумением решила сделать свою собственную немного отличающуюся, несовместимую mDNS-подобную мысль, которую они называли «Link-Local Multicast» Разрешение имен »(LLMNR). В мире Microsoft запросы на хосты «.local» обычно направляются в LLMNR, как бы несмотря на стандартизированное использование ZeroConf «.local». Microsoft также использует UPnP для обнаружения некоторых вещей в локальных сетях, таких как маршрутизаторы (точки доступа Wi-Fi и шлюзы NAT).

Linux, в том числе Google Android, похоже, в настоящее время тяготеет к ZeroConf для безлимитного разрешения имен на основе локальной сети. Google перенес Apple-совместимый POSIX-совместимый демон mDNSResponder с открытым исходным кодом на Linux для использования в Android; это то, что реализует API Android "Network Service Discovery" (NSD).

Как и macOS, Linux использует NetBIOS Name Service и WINS для подключения к SMB-серверам.

Это большой беспорядок, и какой протокол (-ы) используется для конкретной вещи, зависит от того, на какой ОС вы работаете, какие API-интерфейсы вызывает ваше программное обеспечение и многое другое.

1

Другая часть головоломки - файл /etc/nsswitch.conf .  Это «переключатель службы имен», который присутствует во многих системах на основе Unix; он говорит системе, как переводить имена в числовые значения и обратно.  Он содержит около десятка строк, которые выглядят как

(database):   (source)
Подробно описано здесь .

Пример строки будет

hosts:        files dns
Это означает, что когда любая программа * хочет преобразовать имя хоста / домена в IP-адрес (или наоборот), она должна
  1. Загляните в /etc/hosts и, если он не найдет там результата,
  2. проконсультируйтесь с DNS.

Таким образом, системы могут быть индивидуально настроены для разрешения имен хостов (включая порядок поиска).
________
* Это верно для большинства прикладных программ, таких как ping , ssh , ftp и т.д. Служебные программы, такие как dig и nslookup , жестко запрограммированы для использования DNS и ничего более.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .