mDNS Repeater

mDNS Repeater (Multicast DNS Repeater) позволяет ретранслировать Multicast DNS пакеты между различными сегментами сети (VLAN), обеспечивая обнаружение устройств и сервисов через границы подсетей.

Обзор

mDNS (Multicast DNS, также известный как Avahi, Bonjour, Zeroconf) - это протокол для обнаружения устройств и сервисов в локальной сети без необходимости настройки DNS сервера. mDNS использует multicast адрес 224.0.0.251 (IPv4) и ff02::fb (IPv6), и по умолчанию пакеты не покидают локальную подсеть.

Проблема: В сегментированных сетях с множественными VLAN устройства в одном VLAN не могут обнаружить сервисы в другом VLAN.

Решение: mDNS Repeater ретранслирует mDNS пакеты между указанными интерфейсами, сохраняя оригинальные адреса источников.

Типичные сценарии использования

Home Automation (Умный дом):

  • Apple HomeKit устройства в IoT VLAN доступны из основной сети
  • Интеграция с Home Assistant, Homebridge
  • Управление умным освещением, климатом, камерами

Медиа стриминг:

  • Apple AirPlay (AirPlay 2) для трансляции аудио/видео
  • Google Chromecast обнаружение между VLAN
  • Spotify Connect, DLNA/UPnP устройства

Сетевые сервисы:

  • Обнаружение сетевых принтеров (AirPrint, IPP)
  • Сканеры и многофункциональные устройства
  • NAS (Synology, QNAP) в отдельном VLAN

Корпоративные сети:

  • Общие принтеры для разных отделов
  • Беспроводные презентационные системы (Apple TV, Miracast)
  • Конференц-залы с AirPlay/Chromecast

Как работает mDNS Repeater

  1. Устройство в VLAN A отправляет mDNS query multicast на 224.0.0.251
  2. VyOS mDNS repeater перехватывает пакет на интерфейсе VLAN A
  3. Repeater ретранслирует пакет (без изменения источника) на другие настроенные интерфейсы
  4. Устройства в VLAN B получают query и отвечают
  5. Repeater ретранслирует ответы обратно в VLAN A
  6. Устройство в VLAN A обнаруживает сервис в VLAN B

Важно: mDNS Repeater работает на канальном уровне и не изменяет IP-адреса источников. Это означает, что между VLAN должна быть настроена маршрутизация.

Технические детали

Multicast адреса:

  • IPv4: 224.0.0.251
  • IPv6: ff02::fb

UDP порт: 5353

Типы сервисов (примеры):

  • _airplay._tcp - Apple AirPlay
  • _homekit._tcp - Apple HomeKit
  • _googlecast._tcp - Google Chromecast
  • _ipp._tcp - Internet Printing Protocol
  • _printer._tcp - Принтеры
  • _http._tcp - HTTP сервисы
  • _ssh._tcp - SSH сервисы
  • _smb._tcp - Samba/Windows shares
  • _afpovertcp._tcp - Apple File Protocol

Базовая конфигурация

Минимальная настройка

Для работы mDNS repeater необходимо указать минимум 2 интерфейса:

set service mdns repeater interface eth1
set service mdns repeater interface eth2

commit
save

Эта конфигурация ретранслирует все mDNS пакеты между eth1 и eth2.

Структура конфигурации

service mdns repeater
  ├── disable                           # Отключить сервис
  ├── interface <interface>             # Интерфейс для repeater (минимум 2)
  ├── ip-version <ipv4|ipv6|both>      # Версия IP протокола
  ├── allow-service <service>           # Ограничить сервисы (опционально)
  └── browse-domain <domain>            # Дополнительные домены (опционально)

Настройка интерфейсов

Указание интерфейсов

# Основная сеть
set service mdns repeater interface eth0

# VLAN 10 - Гостевая сеть
set service mdns repeater interface eth1.10

# VLAN 20 - IoT устройства
set service mdns repeater interface eth1.20

# VLAN 30 - Мультимедиа
set service mdns repeater interface eth1.30

commit
save

Важно: Можно указать любое количество интерфейсов. mDNS пакеты будут ретранслироваться между всеми указанными интерфейсами.

Поддерживаемые интерфейсы

mDNS repeater работает на следующих типах интерфейсов:

  • Физические Ethernet: eth0, eth1
  • VLAN интерфейсы: eth1.10, eth1.100
  • Bonding интерфейсы: bond0
  • Bridge интерфейсы: br0

Версия IP протокола

Выбор IPv4, IPv6 или оба

По умолчанию mDNS repeater работает для обеих версий IP. Можно ограничить:

# Только IPv4 mDNS
set service mdns repeater ip-version ipv4

# Только IPv6 mDNS
set service mdns repeater ip-version ipv6

# IPv4 и IPv6 (по умолчанию)
set service mdns repeater ip-version both

commit
save

Рекомендация: Используйте both если в сети используется dual-stack (IPv4 + IPv6).

Ограничение сервисов

Allow-service фильтрация

Для безопасности и производительности можно ограничить ретрансляцию только нужными сервисами:

# Разрешить только AirPlay
set service mdns repeater allow-service '_airplay._tcp'

# Разрешить AirPlay и HomeKit
set service mdns repeater allow-service '_airplay._tcp'
set service mdns repeater allow-service '_homekit._tcp'

# Разрешить принтеры
set service mdns repeater allow-service '_ipp._tcp'
set service mdns repeater allow-service '_printer._tcp'

commit
save

Без allow-service: Все mDNS сервисы ретранслируются (по умолчанию).

С allow-service: Только указанные сервисы ретранслируются.

Популярные сервисы

# Apple экосистема
set service mdns repeater allow-service '_airplay._tcp'
set service mdns repeater allow-service '_homekit._tcp'
set service mdns repeater allow-service '_raop._tcp'
set service mdns repeater allow-service '_airplay-audio._tcp'

# Google/Chromecast
set service mdns repeater allow-service '_googlecast._tcp'
set service mdns repeater allow-service '_googlezone._tcp'

# Печать
set service mdns repeater allow-service '_ipp._tcp'
set service mdns repeater allow-service '_ipps._tcp'
set service mdns repeater allow-service '_printer._tcp'
set service mdns repeater allow-service '_pdl-datastream._tcp'

# Файловые сервисы
set service mdns repeater allow-service '_smb._tcp'
set service mdns repeater allow-service '_afpovertcp._tcp'
set service mdns repeater allow-service '_nfs._tcp'

# Медиа серверы
set service mdns repeater allow-service '_http._tcp'
set service mdns repeater allow-service '_spotify-connect._tcp'
set service mdns repeater allow-service '_daap._tcp'

commit
save

Дополнительные домены

Browse-domain

Некоторые устройства используют специфические домены для обнаружения:

# Стандартный mDNS домен .local уже включен
# Добавление дополнительных доменов (редко требуется)
set service mdns repeater browse-domain 'example.local'

commit
save

Примечание: В 99% случаев эта опция не требуется. По умолчанию используется .local.

Отключение сервиса

Временное отключение

Для отключения mDNS repeater без удаления конфигурации:

set service mdns repeater disable

commit
save

Включение обратно:

delete service mdns repeater disable

commit
save

Примеры конфигурации

Пример 1: Простая домашняя сеть

Topology:

Main Network (192.168.1.0/24) --- eth0
IoT Network (192.168.10.0/24) --- eth1.10

Задача: Apple TV в основной сети должен обнаруживать HomeKit устройства в IoT VLAN.

Конфигурация:

# Интерфейсы для repeater
set service mdns repeater interface eth0
set service mdns repeater interface eth1.10

# Ограничить только Apple сервисами
set service mdns repeater allow-service '_airplay._tcp'
set service mdns repeater allow-service '_homekit._tcp'
set service mdns repeater allow-service '_raop._tcp'

commit
save

Пример 2: Корпоративная сеть с принтерами

Topology:

Management VLAN 10 (10.10.10.0/24) --- eth1.10
IT VLAN 20 (10.10.20.0/24) --- eth1.20
Finance VLAN 30 (10.10.30.0/24) --- eth1.30
Printers VLAN 50 (10.10.50.0/24) --- eth1.50

Задача: Все отделы должны видеть принтеры в VLAN 50.

Конфигурация:

# Все VLAN для принтеров
set service mdns repeater interface eth1.10
set service mdns repeater interface eth1.20
set service mdns repeater interface eth1.30
set service mdns repeater interface eth1.50

# Только печать
set service mdns repeater allow-service '_ipp._tcp'
set service mdns repeater allow-service '_ipps._tcp'
set service mdns repeater allow-service '_printer._tcp'

commit
save

Пример 3: Медиа сеть (AirPlay + Chromecast)

Topology:

Living Room VLAN 100 (192.168.100.0/24) --- eth1.100
Bedroom VLAN 101 (192.168.101.0/24) --- eth1.101
Office VLAN 102 (192.168.102.0/24) --- eth1.102

Задача: Все устройства должны видеть Apple TV и Chromecast в любой комнате.

Конфигурация:

# Все VLAN для медиа
set service mdns repeater interface eth1.100
set service mdns repeater interface eth1.101
set service mdns repeater interface eth1.102

# AirPlay и Chromecast
set service mdns repeater allow-service '_airplay._tcp'
set service mdns repeater allow-service '_raop._tcp'
set service mdns repeater allow-service '_googlecast._tcp'
set service mdns repeater allow-service '_spotify-connect._tcp'

commit
save

Пример 4: Home Assistant + HomeKit

Topology:

Main Network (192.168.1.0/24) --- eth0
Home Assistant VLAN 20 (192.168.20.0/24) --- eth1.20
IoT VLAN 30 (192.168.30.0/24) --- eth1.30

Задача: Home Assistant в VLAN 20 управляет IoT в VLAN 30, iPhone в Main Network видит все HomeKit устройства.

Конфигурация:

# Все три сети
set service mdns repeater interface eth0
set service mdns repeater interface eth1.20
set service mdns repeater interface eth1.30

# HomeKit и IoT протоколы
set service mdns repeater allow-service '_homekit._tcp'
set service mdns repeater allow-service '_hap._tcp'
set service mdns repeater allow-service '_http._tcp'

commit
save

Пример 5: Полная конфигурация без ограничений

Конфигурация:

# Все VLAN участвуют в mDNS discovery
set service mdns repeater interface eth0
set service mdns repeater interface eth1.10
set service mdns repeater interface eth1.20
set service mdns repeater interface eth1.30

# Поддержка IPv4 и IPv6
set service mdns repeater ip-version both

# Без ограничений сервисов (все разрешено)
# (не устанавливаем allow-service)

commit
save

Пример 6: Yandex Cloud конфигурация

Topology:

Public Subnet (10.128.0.0/24) --- eth0
Private Subnet 1 (10.128.1.0/24) --- eth1
Private Subnet 2 (10.128.2.0/24) --- eth2

Задача: Внутренние сервисы обнаруживаются через mDNS в приватных подсетях.

Конфигурация:

# Только приватные подсети (не включаем публичный eth0)
set service mdns repeater interface eth1
set service mdns repeater interface eth2

# Ограничить сервисы
set service mdns repeater allow-service '_http._tcp'
set service mdns repeater allow-service '_ssh._tcp'
set service mdns repeater allow-service '_prometheus-http._tcp'

commit
save

Пример 7: VK Cloud multi-tenant конфигурация

Topology:

Tenant A VLAN 100 (172.16.100.0/24) --- eth1.100
Tenant A VLAN 101 (172.16.101.0/24) --- eth1.101
Tenant B VLAN 200 (172.16.200.0/24) --- eth1.200
Tenant B VLAN 201 (172.16.201.0/24) --- eth1.201

Задача: mDNS только внутри tenant (изоляция между Tenant A и B).

Конфигурация для Tenant A:

# Только VLAN Tenant A
set service mdns repeater interface eth1.100
set service mdns repeater interface eth1.101

commit
save

Отдельный VyOS для Tenant B или использование VRF для изоляции.

Firewall правила

Разрешение mDNS трафика

mDNS использует UDP порт 5353 и multicast адрес 224.0.0.251. Необходимо разрешить этот трафик в firewall.

VyOS 1.4 (Sagitta) - iptables:

# Разрешить mDNS multicast в INPUT
set firewall name WAN_LOCAL rule 100 action accept
set firewall name WAN_LOCAL rule 100 protocol udp
set firewall name WAN_LOCAL rule 100 destination port 5353
set firewall name WAN_LOCAL rule 100 destination address 224.0.0.251

# Разрешить в FORWARD (для ретрансляции между VLAN)
set firewall name LAN_FORWARD rule 100 action accept
set firewall name LAN_FORWARD rule 100 protocol udp
set firewall name LAN_FORWARD rule 100 destination port 5353

commit
save

VyOS 1.5 (Circinus) - nftables:

# Input chain
set firewall ipv4 input filter rule 100 action accept
set firewall ipv4 input filter rule 100 protocol udp
set firewall ipv4 input filter rule 100 destination port 5353
set firewall ipv4 input filter rule 100 destination address 224.0.0.251

# Forward chain
set firewall ipv4 forward filter rule 100 action accept
set firewall ipv4 forward filter rule 100 protocol udp
set firewall ipv4 forward filter rule 100 destination port 5353

commit
save

IPv6 mDNS (ff02::fb)

# VyOS 1.5 - IPv6
set firewall ipv6 input filter rule 110 action accept
set firewall ipv6 input filter rule 110 protocol udp
set firewall ipv6 input filter rule 110 destination port 5353
set firewall ipv6 input filter rule 110 destination address ff02::fb

set firewall ipv6 forward filter rule 110 action accept
set firewall ipv6 forward filter rule 110 protocol udp
set firewall ipv6 forward filter rule 110 destination port 5353

commit
save

Безопасность: Ограничение на интерфейсах

Блокируйте mDNS на WAN интерфейсе для безопасности:

# Блокировать mDNS на WAN
set firewall ipv4 input filter rule 90 action drop
set firewall ipv4 input filter rule 90 protocol udp
set firewall ipv4 input filter rule 90 destination port 5353
set firewall ipv4 input filter rule 90 inbound-interface name eth0

commit
save

Операционные команды

Перезапуск mDNS Repeater

restart mdns repeater

Просмотр логов

show log mdns repeater

Real-time мониторинг:

monitor log mdns repeater

Проверка конфигурации

show service mdns repeater

Пример вывода:

service mdns repeater {
    interface eth0
    interface eth1.10
    interface eth1.20
    allow-service _airplay._tcp
    allow-service _homekit._tcp
    ip-version both
}

Тестирование mDNS discovery

На клиенте (macOS):

# Обнаружение всех mDNS сервисов
dns-sd -B _services._dns-sd._udp .

# Обнаружение AirPlay устройств
dns-sd -B _airplay._tcp .

# Обнаружение принтеров
dns-sd -B _ipp._tcp .

# Обнаружение HomeKit устройств
dns-sd -B _homekit._tcp .

На клиенте (Linux):

# Установка avahi-tools
sudo apt install avahi-utils

# Обнаружение всех сервисов
avahi-browse -a

# Обнаружение конкретного сервиса
avahi-browse _airplay._tcp

# Детальная информация
avahi-browse -a -v -r

На клиенте (Windows):

Используйте программы:

  • Bonjour Browser
  • Discovery - DNS-SD Browser
  • VLC (Media → Open Network Stream → обнаружение)

Packet capture

Захват mDNS трафика для диагностики:

# Захват на интерфейсе
monitor traffic interface eth1.10 filter 'udp port 5353'

# Расширенный фильтр
monitor traffic interface eth0 filter 'host 224.0.0.251 and udp port 5353'

Пример вывода mDNS пакета:

18:24:35.123456 IP 192.168.1.10.5353 > 224.0.0.251.5353: UDP, length 45
    0x0000:  4500 0049 0000 4000 ff11 0000 c0a8 010a  E..I..@.........
    0x0010:  e000 00fb 14e9 14e9 0035 0000 0000 0000  .........5......
    0x0020:  0001 0000 0000 0000 075f 6169 7270 6c61  ........._airpla
    0x0030:  7904 5f74 6370 056c 6f63 616c 0000 0c00  y._tcp.local....
    0x0040:  0100 0011 9400 1400                      ........

Мониторинг и диагностика

Проверка работы repeater

# Проверка процесса
ps aux | grep avahi

# Статус systemd сервиса
systemctl status avahi-daemon

Логи

# Все логи mDNS repeater
show log | match mdns

# Последние 50 строк
show log | match mdns | tail 50

# Real-time мониторинг
monitor log | match mdns

Проверка multicast маршрутизации

# Просмотр multicast routes
show ip multicast route

# Интерфейсы с multicast
show ip multicast interface

Статистика интерфейсов

# Multicast пакеты
show interfaces ethernet eth0 statistics

# Подробная статистика
show interfaces detail

Устранение неполадок

Проблема 1: Устройства не обнаруживаются

Диагностика:

# 1. Проверка конфигурации
show service mdns repeater

# 2. Проверка интерфейсов
show interfaces

# 3. Проверка firewall
show firewall ipv4 input filter
show firewall ipv4 forward filter

# 4. Packet capture
monitor traffic interface eth1.10 filter 'udp port 5353'

Решение:

# Убедитесь что сервис не отключен
delete service mdns repeater disable

# Проверьте что указаны правильные интерфейсы
set service mdns repeater interface eth0
set service mdns repeater interface eth1.10

# Разрешите mDNS в firewall
set firewall ipv4 input filter rule 100 action accept
set firewall ipv4 input filter rule 100 protocol udp
set firewall ipv4 input filter rule 100 destination port 5353

set firewall ipv4 forward filter rule 100 action accept
set firewall ipv4 forward filter rule 100 protocol udp
set firewall ipv4 forward filter rule 100 destination port 5353

commit
save

# Перезапуск сервиса
restart mdns repeater

Проблема 2: Работает только в одном направлении

Причина: Неправильная маршрутизация или firewall блокирует обратный трафик.

Решение:

# Проверьте маршруты между VLAN
show ip route

# Убедитесь что есть маршруты для обеих подсетей
# Например:
# 192.168.1.0/24 via eth0
# 192.168.10.0/24 via eth1.10

# Проверьте FORWARD правила firewall
show firewall ipv4 forward filter

# Разрешите bidirectional трафик
set firewall ipv4 forward filter rule 100 action accept
set firewall ipv4 forward filter rule 100 protocol udp
set firewall ipv4 forward filter rule 100 destination port 5353

commit
save

Проблема 3: Некоторые сервисы не обнаруживаются

Причина: allow-service фильтр блокирует нужные сервисы.

Диагностика:

# Проверьте allow-service
show service mdns repeater

# Если есть allow-service, проверьте список

Решение:

# Добавьте нужный сервис
set service mdns repeater allow-service '_googlecast._tcp'

# Или удалите все ограничения для теста
delete service mdns repeater allow-service

commit
save
restart mdns repeater

Проблема 4: mDNS packet storm

Симптомы: Высокая загрузка CPU, большое количество mDNS пакетов в network.

Причина: Петля в конфигурации или несколько mDNS repeaters в одной сети.

ВАЖНОЕ ПРЕДУПРЕЖДЕНИЕ: НЕ используйте mDNS repeater в VRRP setup с несколькими активными VyOS роутерами в одной сети. Это создаст mDNS packet storm.

Решение:

# Временно отключите repeater
set service mdns repeater disable
commit

# Проверьте топологию:
# - Только один VyOS должен быть mDNS repeater в сегменте
# - Не должно быть петель в конфигурации интерфейсов

# Исправьте конфигурацию и включите обратно
delete service mdns repeater disable
commit
save

Проблема 5: IPv6 mDNS не работает

Диагностика:

# Проверьте ip-version
show service mdns repeater

# Проверьте IPv6 firewall
show firewall ipv6 input filter
show firewall ipv6 forward filter

Решение:

# Установите ip-version both
set service mdns repeater ip-version both

# Разрешите IPv6 mDNS
set firewall ipv6 input filter rule 110 action accept
set firewall ipv6 input filter rule 110 protocol udp
set firewall ipv6 input filter rule 110 destination port 5353
set firewall ipv6 input filter rule 110 destination address ff02::fb

set firewall ipv6 forward filter rule 110 action accept
set firewall ipv6 forward filter rule 110 protocol udp
set firewall ipv6 forward filter rule 110 destination port 5353

commit
save
restart mdns repeater

Проблема 6: Apple AirPlay не работает

Особенность: AirPlay использует несколько сервисов одновременно.

Решение:

# Добавьте все AirPlay сервисы
set service mdns repeater allow-service '_airplay._tcp'
set service mdns repeater allow-service '_raop._tcp'
set service mdns repeater allow-service '_airplay-audio._tcp'

commit
save
restart mdns repeater

Также убедитесь что открыты дополнительные порты для AirPlay:

  • TCP 7000 (AirPlay data)
  • TCP 7100 (AirPlay mirroring)
  • UDP 6001-6011 (AirPlay audio)
  • UDP 47998-48000 (AirPlay control)

Проблема 7: HomeKit устройства недоступны

Решение:

# HomeKit сервисы
set service mdns repeater allow-service '_homekit._tcp'
set service mdns repeater allow-service '_hap._tcp'

commit
save
restart mdns repeater

Firewall для HomeKit (дополнительно к mDNS):

  • TCP 80 (HTTP)
  • TCP 443 (HTTPS)
  • TCP 8080 (альтернативный HTTP)

Проблема 8: Chromecast не обнаруживается

Решение:

# Chromecast сервисы
set service mdns repeater allow-service '_googlecast._tcp'
set service mdns repeater allow-service '_googlezone._tcp'

commit
save
restart mdns repeater

Firewall для Chromecast:

  • TCP 8008-8009 (Chromecast HTTP)
  • UDP 32768-61000 (Dynamic ports для streaming)

Лучшие практики

1. Минимальное количество интерфейсов

Указывайте только необходимые интерфейсы:

# Правильно
set service mdns repeater interface eth0
set service mdns repeater interface eth1.10

# Неправильно - слишком много VLAN
# (приводит к ненужному трафику)

2. Используйте allow-service

Всегда ограничивайте сервисы для безопасности и производительности:

# Правильно - только нужные сервисы
set service mdns repeater allow-service '_airplay._tcp'
set service mdns repeater allow-service '_homekit._tcp'

# Неправильно - все сервисы (по умолчанию)

3. Не включайте WAN интерфейс

# Правильно - только LAN/VLAN
set service mdns repeater interface eth1
set service mdns repeater interface eth1.10

# Неправильно - включен WAN
# set service mdns repeater interface eth0  # WAN

4. Firewall правила

Всегда настраивайте firewall для mDNS:

# Разрешить mDNS на LAN
set firewall ipv4 input filter rule 100 action accept
set firewall ipv4 input filter rule 100 protocol udp
set firewall ipv4 input filter rule 100 destination port 5353
set firewall ipv4 input filter rule 100 inbound-interface name eth1

# Блокировать mDNS на WAN
set firewall ipv4 input filter rule 90 action drop
set firewall ipv4 input filter rule 90 protocol udp
set firewall ipv4 input filter rule 90 destination port 5353
set firewall ipv4 input filter rule 90 inbound-interface name eth0

5. Избегайте VRRP + mDNS Repeater

НЕ используйте mDNS repeater на обоих VyOS в VRRP setup. Это создаст packet storm.

Правильно: Используйте mDNS repeater только на master роутере или на отдельном выделенном устройстве.

6. Мониторинг packet storm

Регулярно проверяйте логи на признаки packet storm:

monitor log mdns repeater

Если видите множественные повторяющиеся пакеты, проверьте топологию.

7. Документирование allow-service

Документируйте зачем нужен каждый сервис:

# AirPlay для конференц-залов
set service mdns repeater allow-service '_airplay._tcp'

# Принтеры для всех отделов
set service mdns repeater allow-service '_ipp._tcp'

8. Тестирование после изменений

После каждого изменения конфигурации тестируйте работу:

# На macOS
dns-sd -B _airplay._tcp .

# На Linux
avahi-browse -a

9. Резервное копирование конфигурации

show configuration service mdns repeater > /config/mdns-repeater-backup.txt

10. Использование с NAT

Если используете NAT, убедитесь что mDNS трафик не NAT-ится:

# mDNS multicast не должен проходить NAT
# Настройте NAT exclude если необходимо

Совместимость с VyOS версиями

VyOS 1.4 (Sagitta LTS)

mDNS repeater полностью поддерживается.

Базовые команды:

set service mdns repeater interface <interface>
set service mdns repeater allow-service <service>

VyOS 1.5 (Circinus)

mDNS repeater полностью поддерживается с новыми опциями.

Новые возможности:

  • Улучшенная производительность
  • Лучшая интеграция с nftables firewall
  • Поддержка дополнительных browse-domain

Команды те же:

set service mdns repeater interface <interface>
set service mdns repeater ip-version <ipv4|ipv6|both>

Интеграция с Home Automation

Home Assistant

VyOS конфигурация:

# Main network где работает Home Assistant
set service mdns repeater interface eth0

# IoT VLAN
set service mdns repeater interface eth1.30

# Сервисы для Home Assistant
set service mdns repeater allow-service '_homekit._tcp'
set service mdns repeater allow-service '_hap._tcp'
set service mdns repeater allow-service '_http._tcp'

commit
save

Home Assistant configuration.yaml:

# mDNS обнаружение уже встроено в Home Assistant
# Никаких дополнительных настроек не требуется

# Интеграции будут автоматически обнаруживать устройства:
discovery:
  enable:
    - homekit
    - zeroconf

homekit:
  auto_start: true

Homebridge

VyOS конфигурация:

# Homebridge VLAN
set service mdns repeater interface eth1.20

# Main network
set service mdns repeater interface eth0

# HomeKit сервисы
set service mdns repeater allow-service '_homekit._tcp'
set service mdns repeater allow-service '_hap._tcp'

commit
save

Apple Home App

После настройки mDNS repeater, устройства автоматически появятся в Apple Home App на iPhone/iPad.

Проверка:

  1. Откройте Home App
  2. Tap (+) → Add Accessory
  3. Устройства в других VLAN должны появиться

Производительность

Влияние на систему

mDNS repeater - легковесный сервис:

  • CPU overhead: < 1% в типичных сценариях
  • Memory: ~5-10 MB RAM
  • Network: Минимальный трафик (только multicast retransmission)

Рекомендации по масштабированию

  • До 10 устройств: Любая конфигурация работает отлично
  • 10-50 устройств: Рекомендуется allow-service фильтрация
  • 50-100 устройств: Обязательна фильтрация, мониторинг packet rate
  • 100+ устройств: Рассмотрите централизованный mDNS proxy (не repeater)

Оптимизация

# Используйте allow-service для снижения трафика
set service mdns repeater allow-service '_airplay._tcp'
set service mdns repeater allow-service '_homekit._tcp'

# Не указывайте лишние интерфейсы
# Только необходимые VLAN

Альтернативные решения

Когда НЕ использовать mDNS Repeater

  1. VRRP setup: Несколько активных роутеров приведут к packet storm
  2. Очень большие сети: 100+ mDNS устройств
  3. Строгие security требования: mDNS может раскрывать информацию об устройствах
  4. WAN использование: mDNS только для локальных сетей

Альтернативы

Централизованный Avahi Reflector:

# Установка на отдельном сервере (не VyOS)
sudo apt install avahi-daemon

# /etc/avahi/avahi-daemon.conf
[reflector]
enable-reflector=yes

DNS-SD с централизованным DNS:

  • Wide-Area Bonjour (Apple)
  • DNS-Based Service Discovery (RFC 6763)

Application-specific решения:

  • Homebridge для Apple HomeKit
  • ChromecastDiscovery для Google Cast
  • Dedicated IoT hub (Home Assistant, OpenHAB)

Следующие шаги

  • LLDP - обнаружение сетевых устройств
  • UDP Broadcast Relay - ретрансляция других broadcast протоколов
  • DHCP Relay - централизованный DHCP
  • Firewall - защита сети
  • VLAN Configuration - настройка VLAN интерфейсов

Заключение

mDNS Repeater в VyOS - это мощный инструмент для обеспечения обнаружения сервисов через границы VLAN. Он незаменим для:

  • Apple экосистемы (AirPlay, HomeKit)
  • Google Chromecast
  • Сетевых принтеров
  • Home automation систем
  • IoT устройств

Ключевые моменты:

  • Минимум 2 интерфейса для работы
  • Используйте allow-service для фильтрации
  • Настраивайте firewall правила
  • НЕ используйте в VRRP setups
  • Тестируйте после каждого изменения

С правильной конфигурацией mDNS Repeater обеспечит seamless discovery устройств в сегментированных сетях без компромиссов в безопасности.