Сценарий: простая домашняя сеть. По своей сути он состоит из:
Моя самая большая проблема в том, что я больше не понимаю, как ящики Windows (и Linux) выполняют разрешение имен для общих ресурсов SMB в сети TCP / IP.
Насколько я могу судить, единственная служба разрешения имен, которая у меня действительно есть, - это DNSMasq, предоставляемая службой DHCP беспроводных маршрутизаторов, которая позволяет всем моим зарегистрированным устройствам dhcp разрешать друг друга с помощью DNS-запросов.
Это не идеально, поскольку, если сервер DHCP перезагружается, он теряет свои записи DNSMasq до тех пор, пока не истечет срок резервирования DHCP на различных хостах, и они не выполнят повторный запрос.
Я попытался настроить вещи более надежно, добавил суффикс домена .local к DHCP-серверу и включил WINS-сервер на NAS-устройстве, но NAS-устройство сразу исчезло из любых перечислений SMB / рабочих групп. Я все еще могу пинговать его и использовать ssh, но пытаюсь перейти к нему или перейти непосредственно к нему (smb: // server или smb: //server.local), все выдает ошибку.
Как на самом деле работает разрешение имен SMB? Так что я могу отделить его от моих экспериментов с DHCP / DNSMasq.
SMB - это сетевой протокол совместного использования файлов, поэтому не существует механизма разрешения имен, специфичного для общих ресурсов SMB / CIFS. Разрешение имен для SMB / CIFS зависит от клиента и настроенных механизмов разрешения имен (DNS, WINS, широковещательная рассылка и т. Д.) И порядка, а также от того, используете ли вы полное доменное имя или одинарное имя.
В отсутствие сервера DNS или WINS клиенты Windows будут использовать широковещательные рассылки NetBIOS (если включен NetBT через TCP), чтобы попытаться разрешить имена. Клиенты Windows Vista, 7 и W2K8 также будут использовать LLMNR для локального разрешения имен.
Не вдаваясь во все кровавые подробности о том, как и в каком порядке клиенты Windows разрешают имена хостов, я могу предложить вам реализовать более надежный DNS-сервер внутри компании, например Windows DNS.