n1ro°
RU

Ошибки и коды · Инструкция

WSL: mDNS и имена .local не разрешаются

WSL mDNS .local не разрешается, потому что `.local` использует multicast, а не обычный DNS-сервер.

Редакция N1RO · Проверено

Короткий ответ

Для `.local`/mDNS учитывайте режим сети WSL: NAT с DNS tunneling не даёт тот же multicast-сценарий, что mirrored networking. На новых WSL mirrored mode поддерживает multicast; в Linux также нужен корректный mDNS/NSS-компонент.

Почему .local — это не обычный DNS

mDNS не работает как обычный DNS-запрос к серверу: устройства обмениваются multicast-пакетами в локальном сегменте. Поэтому запись `printer.local` может открываться в Windows, но не внутри WSL NAT. Microsoft описывает ограничения `.local` при DNS tunneling и рекомендует mirrored networking для возможностей multicast на подходящих Windows 11/WSL; в дистрибутиве при этом должен быть установлен механизм разрешения mDNS, например через NSS/avahi согласно Linux-системе.

Важно: Сначала убедитесь, что обычные DNS-имена разрешаются; иначе mDNS будет лишь вторичным симптомом общего сетевого сбоя.

NAT, DNS tunneling и mirrored mode

  1. Проверьте текущий режим: `.wslconfig` → `[wsl2] networkingMode=..`; после изменений всегда используйте `wsl --shutdown`.
  2. Убедитесь, что обычный DNS в WSL работает: `getent hosts example.com`; это отделит mDNS-проблему от общего отсутствия DNS.
  3. Для Windows 11 22H2+ и актуального WSL рассмотрите `networkingMode=mirrored`, если вам нужен multicast и конфигурация совместима с корпоративной сетью.
  4. В Linux установите/проверьте компоненты mDNS, которые использует ваш дистрибутив, и протестируйте `getent hosts device.local`.
  5. Проверьте firewall и наличие устройства в той же локальной сети; mDNS не предназначен для произвольной маршрутизации между изолированными VLAN.

Совет: Mirrored mode меняет сетевую архитектуру WSL, поэтому после включения проверьте VPN и Hyper-V firewall, а не только `.local`.

Как включить mDNS-разрешение внутри Linux

  • Простое добавление `.local` в `/etc/hosts` обходит mDNS только для одного статического адреса и скрывает исходную сетевую проблему.
  • Mirrored mode требует поддерживаемую Windows/WSL и может менять другие сетевые свойства; не включайте его только ради одного имени без теста VPN/firewall.
  • DNS tunneling полезен для обычного корпоративного DNS, но `.local` — отдельный multicast-сценарий.
  • Если принтер/устройство меняет IP, статический hosts быстро устареет; лучше восстановить реальное mDNS или использовать обычный DNS/DHCP hostname.

Предупреждение: Статическая запись в `/etc/hosts` удобна для теста, но не восстанавливает mDNS и быстро устаревает при смене IP устройства.

Проверка firewall, VLAN и одной локальной сети

Проверка должна сравнивать три имени: публичный DNS-домен, короткое корпоративное имя и `.local`. Если ломается только `.local`, не трогайте глобальный resolv.conf. После перехода на mirrored mode дополнительно проверьте VPN и входящие правила Hyper-V firewall, потому что сетевой режим меняет не одну функцию.

Когда статический hosts — плохой костыль

В mirrored mode multicast становится доступен, но Linux по умолчанию не обязан разрешать `.local`. Для Debian/Ubuntu Microsoft приводит вариант с `libnss-mdns` и настройкой `mdns_minimal` в `nsswitch.conf`. Проверяйте именно `getent hosts device.local`, потому что браузер может иметь собственные механизмы разрешения имён.

Как проверить смену сетевого режима

Если устройство находится в другом VLAN, гостевой сети или за изоляцией клиентов, mDNS может не проходить независимо от WSL. Сначала подтвердите, что Windows-хост и целевое устройство видят друг друга в одном локальном сегменте. Только после этого имеет смысл менять `networkingMode` или компоненты Linux.

Когда имеет смысл mirrored networking

Для `.local` в WSL режим сети важен: при NAT с DNS tunneling mDNS не поддерживается, а mirrored networking добавляет поддержку multicast и улучшает этот сценарий на подходящих версиях Windows/WSL. После смены режима выполните `wsl --shutdown`, иначе вы будете тестировать старую виртуальную сеть и получите ложный вывод.

Что учитывать

mDNS не работает как обычный DNS-запрос к серверу: устройства обмениваются multicast-пакетами в локальном сегменте. Поэтому запись `printer.local` может открываться в Windows, но не внутри WSL NAT. Microsoft описывает ограничения `.local` при DNS tunneling и рекомендует mirrored networking для возможностей multicast на подходящих Windows 11/WSL; в дистрибутиве при этом должен быть установлен механизм разрешения mDNS, например через NSS/avahi согласно Linux-системе.

Источники и проверка

Фактическая часть сверена по первичным источникам (в т.ч. Troubleshooting Windows Subsystem for Linux). Пример и формулировки — редакция N1RO на 2026-09-23.