UDP Broadcast Relay

UDP Broadcast Relay - сервис для перенаправления UDP broadcast-пакетов между различными сетевыми сегментами и VLAN.

Обзор

UDP Broadcast Relay решает проблему изоляции broadcast-доменов, позволяя сервисам, использующим UDP broadcast для обнаружения, работать через границы сетей.

Основные возможности

  • Перенаправление UDP broadcast между интерфейсами и VLAN
  • Поддержка до 99 независимых relay-конфигураций
  • Фильтрация по портам UDP
  • Защита от broadcast-штормов
  • Возможность указания source IP для исходящих пакетов
  • Независимое включение/отключение relay без удаления конфигурации

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

  1. DHCP Relay - перенаправление DHCP-запросов между подсетями
  2. NETBIOS/WINS - обнаружение сетевых ресурсов Windows
  3. Wake-on-LAN (WoL) - удаленное включение компьютеров через VLAN
  4. SONOS/UPnP/SSDP - обнаружение медиа-устройств в мультикаст-сетях
  5. Сетевое оборудование - обнаружение принтеров, IP-камер, точек доступа
  6. Игровые консоли - обнаружение игр и устройств в локальной сети

Как работает

  1. VyOS прослушивает UDP broadcast на указанных интерфейсах
  2. При получении broadcast-пакета на указанном порту, ретранслирует его на все остальные интерфейсы в группе
  3. Пакет отправляется как broadcast на каждый интерфейс
  4. Механизм защиты предотвращает циклические ретрансляции

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

Структура команд

set service broadcast-relay id <relay-id>
  ├── description <text>
  ├── interface <interface>
  ├── port <udp-port>
  └── address <source-ip>

Минимальная конфигурация

Простейший relay между двумя интерфейсами:

set service broadcast-relay id 1 interface eth0
set service broadcast-relay id 1 interface eth1
set service broadcast-relay id 1 port 9
commit

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

Relay ID

Уникальный идентификатор relay-группы (1-99):

set service broadcast-relay id 1

Можно создать до 99 независимых relay-конфигураций.

Интерфейсы

Интерфейсы для ретрансляции broadcast-пакетов:

set service broadcast-relay id 1 interface eth0
set service broadcast-relay id 1 interface eth1
set service broadcast-relay id 1 interface eth0.10
set service broadcast-relay id 1 interface eth0.20

Поддерживаются:

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

UDP порт

Указание UDP порта для фильтрации:

set service broadcast-relay id 1 port 67

Relay будет обрабатывать только broadcast на указанном UDP порту.

Описание

Текстовое описание relay-группы:

set service broadcast-relay id 1 description 'DHCP Relay between VLANs'

Source Address (опционально)

Указание source IP для исходящих пакетов:

set service broadcast-relay id 1 address 192.168.1.1

Полезно для контроля источника пакетов в маршрутизируемых сетях.

Отключение без удаления

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

set service broadcast-relay id 1 disable

Конфигурация сохраняется, но relay не активен.

Типовые конфигурации

DHCP Relay

Перенаправление DHCP-запросов (порты 67/68) между VLAN:

# DHCP Server Request (port 67)
set service broadcast-relay id 1 description 'DHCP Relay'
set service broadcast-relay id 1 interface eth0.10
set service broadcast-relay id 1 interface eth0.20
set service broadcast-relay id 1 interface eth0.30
set service broadcast-relay id 1 port 67
commit

Важно: Для полноценного DHCP relay рекомендуется использовать встроенный service dhcp-relay:

set service dhcp-relay interface eth0.10
set service dhcp-relay interface eth0.20
set service dhcp-relay server 192.168.1.1

NETBIOS Name Service

Обнаружение Windows-ресурсов (порт 137):

set service broadcast-relay id 2 description 'NETBIOS Name Service'
set service broadcast-relay id 2 interface eth0
set service broadcast-relay id 2 interface eth1
set service broadcast-relay id 2 interface eth2
set service broadcast-relay id 2 port 137
commit

Wake-on-LAN (WoL)

Перенаправление magic packets для удаленного включения (порт 9):

set service broadcast-relay id 3 description 'Wake-on-LAN'
set service broadcast-relay id 3 interface eth0.10
set service broadcast-relay id 3 interface eth0.20
set service broadcast-relay id 3 interface eth0.30
set service broadcast-relay id 3 port 9
commit

Также поддерживается порт 7 (некоторые реализации WoL):

set service broadcast-relay id 4 description 'Wake-on-LAN (port 7)'
set service broadcast-relay id 4 interface eth0.10
set service broadcast-relay id 4 interface eth0.20
set service broadcast-relay id 4 port 7
commit

SONOS Discovery

Обнаружение SONOS аудиосистем (порт 1900 - SSDP):

set service broadcast-relay id 5 description 'SONOS Discovery'
set service broadcast-relay id 5 interface eth3
set service broadcast-relay id 5 interface eth4
set service broadcast-relay id 5 interface eth5
set service broadcast-relay id 5 port 1900
commit

UPnP/SSDP

Universal Plug and Play discovery (порт 1900):

set service broadcast-relay id 6 description 'UPnP/SSDP Discovery'
set service broadcast-relay id 6 interface eth0.100
set service broadcast-relay id 6 interface eth0.200
set service broadcast-relay id 6 port 1900
commit

Chromecast Discovery

Google Chromecast использует mDNS (порт 5353):

set service broadcast-relay id 7 description 'Chromecast mDNS'
set service broadcast-relay id 7 interface eth0.10
set service broadcast-relay id 7 interface eth0.20
set service broadcast-relay id 7 port 5353
commit

Принтеры и сканеры

Обнаружение сетевых принтеров (SNMP trap - порт 161):

set service broadcast-relay id 8 description 'Network Printers'
set service broadcast-relay id 8 interface eth0.50
set service broadcast-relay id 8 interface eth0.60
set service broadcast-relay id 8 port 161
commit

Практические сценарии

Сценарий 1: Корпоративная сеть с VLAN

Задача: Обеспечить работу DHCP и Wake-on-LAN между VLAN отделов.

Топология:

  • VLAN 10 - Management (192.168.10.0/24)
  • VLAN 20 - Development (192.168.20.0/24)
  • VLAN 30 - Production (192.168.30.0/24)
  • DHCP сервер: 192.168.10.5

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

# DHCP Relay между всеми VLAN
set service broadcast-relay id 1 description 'Corporate DHCP Relay'
set service broadcast-relay id 1 interface eth0.10
set service broadcast-relay id 1 interface eth0.20
set service broadcast-relay id 1 interface eth0.30
set service broadcast-relay id 1 port 67

# Wake-on-LAN между VLAN
set service broadcast-relay id 2 description 'Corporate WoL'
set service broadcast-relay id 2 interface eth0.10
set service broadcast-relay id 2 interface eth0.20
set service broadcast-relay id 2 interface eth0.30
set service broadcast-relay id 2 port 9

commit

Сценарий 2: Домашняя мультимедийная сеть

Задача: SONOS, Chromecast и Smart TV должны обнаруживаться между гостевой и домашней сетью.

Топология:

  • VLAN 100 - Home (192.168.100.0/24)
  • VLAN 200 - Guest (192.168.200.0/24)
  • VLAN 300 - IoT (192.168.300.0/24)

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

# SONOS Discovery
set service broadcast-relay id 10 description 'SONOS Audio'
set service broadcast-relay id 10 interface eth0.100
set service broadcast-relay id 10 interface eth0.300
set service broadcast-relay id 10 port 1900

# Chromecast mDNS
set service broadcast-relay id 11 description 'Chromecast'
set service broadcast-relay id 11 interface eth0.100
set service broadcast-relay id 11 interface eth0.200
set service broadcast-relay id 11 interface eth0.300
set service broadcast-relay id 11 port 5353

# UPnP для Smart TV
set service broadcast-relay id 12 description 'Smart TV UPnP'
set service broadcast-relay id 12 interface eth0.100
set service broadcast-relay id 12 interface eth0.300
set service broadcast-relay id 12 port 1900

commit

Сценарий 3: Дата-центр с изолированными зонами

Задача: Обеспечить централизованное управление через Wake-on-LAN и PXE boot.

Топология:

  • VLAN 500 - Management (10.0.0.0/24)
  • VLAN 501 - DMZ Servers (10.0.1.0/24)
  • VLAN 502 - Internal Servers (10.0.2.0/24)
  • VLAN 503 - Database Zone (10.0.3.0/24)

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

# Wake-on-LAN для всех серверных зон
set service broadcast-relay id 20 description 'Datacenter WoL'
set service broadcast-relay id 20 interface eth0.500
set service broadcast-relay id 20 interface eth0.501
set service broadcast-relay id 20 interface eth0.502
set service broadcast-relay id 20 interface eth0.503
set service broadcast-relay id 20 port 9
set service broadcast-relay id 20 address 10.0.0.1

# TFTP для PXE Boot
set service broadcast-relay id 21 description 'PXE Boot TFTP'
set service broadcast-relay id 21 interface eth0.500
set service broadcast-relay id 21 interface eth0.501
set service broadcast-relay id 21 interface eth0.502
set service broadcast-relay id 21 port 69
set service broadcast-relay id 21 address 10.0.0.1

commit

Сценарий 4: Множественные офисы через VPN

Задача: Relay broadcast между VPN интерфейсами для обнаружения сетевых ресурсов.

Топология:

  • Local LAN - eth1 (192.168.1.0/24)
  • VPN Office 1 - wg0 (10.10.1.0/24)
  • VPN Office 2 - wg1 (10.10.2.0/24)

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

# NETBIOS между офисами
set service broadcast-relay id 30 description 'Inter-Office NETBIOS'
set service broadcast-relay id 30 interface eth1
set service broadcast-relay id 30 interface wg0
set service broadcast-relay id 30 interface wg1
set service broadcast-relay id 30 port 137

# Wake-on-LAN между офисами
set service broadcast-relay id 31 description 'Inter-Office WoL'
set service broadcast-relay id 31 interface eth1
set service broadcast-relay id 31 interface wg0
set service broadcast-relay id 31 interface wg1
set service broadcast-relay id 31 port 9

commit

Общие UDP порты для Relay

ПортПротокол/СервисОписание
7Echo / WoLWake-on-LAN (альтернативный)
9Discard / WoLWake-on-LAN (основной)
67DHCP ServerDHCP запросы от клиентов
68DHCP ClientDHCP ответы от сервера
69TFTPTrivial File Transfer Protocol
137NETBIOS-NSNetBIOS Name Service
138NETBIOS-DGMNetBIOS Datagram Service
161SNMPSimple Network Management Protocol
427SLPService Location Protocol
1900SSDPSimple Service Discovery Protocol (UPnP)
5353mDNSMulticast DNS (Bonjour/Avahi)
6969BitTorrentBitTorrent tracker discovery
10001UbiquitiUbiquiti device discovery

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

Просмотр конфигурации

Все relay:

show service broadcast-relay

Конкретный relay:

show service broadcast-relay id 1

Текущая конфигурация в CLI-формате:

show configuration commands | grep broadcast-relay

Мониторинг трафика

Просмотр UDP broadcast на интерфейсе:

monitor traffic interface eth0 filter "udp and broadcast"

Мониторинг конкретного порта:

monitor traffic interface eth0 filter "udp port 67"

Подробный вывод с содержимым пакетов:

monitor traffic interface eth0.10 filter "udp port 9" verbose

Логи

Системные логи relay:

show log | grep broadcast

Мониторинг в реальном времени:

monitor log | grep broadcast

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

Проверка broadcast-пакетов на интерфейсе:

show interfaces ethernet eth0 statistics

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

Отправка Wake-on-LAN с роутера:

generate wol interface eth0 mac 00:11:22:33:44:55

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

Broadcast-пакеты не перенаправляются

Проверка 1: Убедитесь, что relay активен:

show service broadcast-relay id 1

Если показывает disabled, включите:

configure
delete service broadcast-relay id 1 disable
commit

Проверка 2: Проверьте, что интерфейсы up:

show interfaces

Проверка 3: Убедитесь, что broadcast достигает интерфейса:

monitor traffic interface eth0 filter "udp port 67"

Проверка 4: Проверьте firewall правила:

show firewall

Убедитесь, что UDP broadcast не блокируется:

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 67
commit

DHCP relay не работает

Проблема: Клиенты не получают адреса через relay.

Решение: Используйте специализированный DHCP relay вместо broadcast relay:

delete service broadcast-relay id 1
set service dhcp-relay interface eth0.10
set service dhcp-relay interface eth0.20
set service dhcp-relay server 192.168.1.1
commit

DHCP relay поддерживает DHCP-specific функции (giaddr, relay agent information).

Wake-on-LAN не пробуждает устройства

Проверка 1: Убедитесь, что устройство поддерживает WoL:

  • BIOS/UEFI настройка включена
  • Сетевая карта поддерживает WoL
  • ОС настроена на WoL

Проверка 2: Проверьте порт: Некоторые реализации используют порт 7, другие - порт 9:

set service broadcast-relay id 3 port 7
commit

Проверка 3: Тестируйте из той же подсети сначала:

generate wol interface eth0.10 mac 00:11:22:33:44:55

Проверка 4: Убедитесь, что broadcast адрес правильный:

  • 255.255.255.255 (limited broadcast)
  • 192.168.1.255 (subnet broadcast для 192.168.1.0/24)

SONOS/Chromecast не обнаруживаются

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

Решение 1: Добавьте mDNS relay (порт 5353):

set service broadcast-relay id 10 description 'mDNS Relay'
set service broadcast-relay id 10 interface eth0.100
set service broadcast-relay id 10 interface eth0.200
set service broadcast-relay id 10 port 5353
commit

Решение 2: Используйте специализированный mDNS repeater:

set service mdns repeater interface eth0.100
set service mdns repeater interface eth0.200
commit

mDNS repeater более эффективен для multicast DNS.

Broadcast storm

Проблема: Циклическая ретрансляция вызывает перегрузку сети.

Объяснение: Встроенная защита VyOS предотвращает это, но проверьте топологию:

Проверка: Убедитесь, что нет петель на L2:

show spanning-tree

Решение: Включите STP на bridge интерфейсах:

set interfaces bridge br0 stp
commit

High CPU usage

Проблема: Высокая нагрузка на CPU из-за relay.

Причина: Слишком много broadcast-трафика.

Решение 1: Фильтруйте relay только на необходимых портах.

Решение 2: Ограничьте количество интерфейсов в relay группе.

Решение 3: Используйте специализированные протоколы вместо broadcast relay:

  • DHCP relay вместо broadcast relay
  • mDNS repeater вместо broadcast relay для mDNS

Безопасность и лучшие практики

1. Минимизируйте broadcast-домены

Используйте relay только когда необходимо. Не создавайте большие broadcast-домены без причины.

2. Фильтруйте по портам

Всегда указывайте конкретные UDP порты:

set service broadcast-relay id 1 port 67

Не используйте relay для всех портов.

3. Ограничивайте интерфейсы

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

set service broadcast-relay id 1 interface eth0.10
set service broadcast-relay id 1 interface eth0.20

Не добавляйте WAN интерфейсы в relay!

4. Используйте описания

Документируйте назначение каждого relay:

set service broadcast-relay id 1 description 'DHCP for Office VLANs 10-30'

5. Контролируйте source address

Для маршрутизируемых сетей указывайте source:

set service broadcast-relay id 1 address 192.168.1.1

6. Защита firewall

Ограничьте broadcast relay firewall правилами:

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 source address 192.168.0.0/16
set firewall ipv4 forward filter rule 100 destination port 67

7. Мониторинг

Регулярно проверяйте broadcast трафик:

show interfaces statistics

8. Альтернативы broadcast relay

Используйте специализированные протоколы где возможно:

  • DHCP relay для DHCP
  • mDNS repeater для mDNS/Bonjour
  • IGMP proxy для multicast

9. Разделение relay групп

Не объединяйте разные сервисы в один relay:

# Хорошо - отдельные relay
set service broadcast-relay id 1 port 67  # DHCP
set service broadcast-relay id 2 port 9   # WoL

# Плохо - один relay для всего
set service broadcast-relay id 1 port 67
set service broadcast-relay id 1 port 9   # Невозможно!

10. Тестирование перед продакшеном

Всегда тестируйте relay в лабораторной среде перед развертыванием.

Интеграция с другими сервисами

DHCP Server + Broadcast Relay

Комбинация для централизованного DHCP:

# DHCP Server на роутере
set service dhcp-server shared-network-name LAN subnet 192.168.10.0/24 subnet-id 10
set service dhcp-server shared-network-name LAN subnet 192.168.10.0/24 option default-router '192.168.10.1'
set service dhcp-server shared-network-name LAN subnet 192.168.10.0/24 range 0 start '192.168.10.100'
set service dhcp-server shared-network-name LAN subnet 192.168.10.0/24 range 0 stop '192.168.10.200'

# Relay от других VLAN к DHCP серверу
set service dhcp-relay interface eth0.20
set service dhcp-relay interface eth0.30
set service dhcp-relay server 192.168.10.1

mDNS Repeater + Broadcast Relay

Для полной совместимости Apple/Android устройств:

# mDNS repeater для Bonjour/Avahi
set service mdns repeater interface eth0.100
set service mdns repeater interface eth0.200

# Broadcast relay для других discovery протоколов
set service broadcast-relay id 10 description 'SSDP/UPnP'
set service broadcast-relay id 10 interface eth0.100
set service broadcast-relay id 10 interface eth0.200
set service broadcast-relay id 10 port 1900

DNS Forwarding

Интеграция с локальным DNS:

# DNS forwarding для резолва локальных имен
set service dns forwarding listen-address 192.168.1.1
set service dns forwarding listen-address 192.168.2.1

# Broadcast relay для NETBIOS
set service broadcast-relay id 5 description 'NETBIOS'
set service broadcast-relay id 5 interface eth0
set service broadcast-relay id 5 interface eth1
set service broadcast-relay id 5 port 137

Сравнение с альтернативами

Broadcast Relay vs DHCP Relay

Broadcast Relay (Generic):

  • Преимущества: универсальный, простой
  • Недостатки: нет DHCP-specific функций

DHCP Relay (Specialized):

  • Преимущества: поддержка giaddr, relay agent info, более эффективный
  • Недостатки: только для DHCP

Рекомендация: Используйте DHCP relay для DHCP.

Broadcast Relay vs mDNS Repeater

Broadcast Relay (UDP port 5353):

  • Преимущества: простая конфигурация
  • Недостатки: не понимает mDNS-specific протокол

mDNS Repeater:

  • Преимущества: оптимизирован для mDNS, понимает протокол
  • Недостатки: только для mDNS

Рекомендация: Используйте mDNS repeater для Bonjour/Avahi.

Broadcast Relay vs IGMP Proxy

Broadcast Relay:

  • Только для UDP broadcast
  • Не подходит для multicast

IGMP Proxy:

  • Для multicast групп
  • Требует IGMP membership

Рекомендация: Используйте IGMP proxy для IPTV, multicast streaming.

Ограничения

  1. Только UDP: Relay работает только с UDP протоколом
  2. Только broadcast: Не работает с unicast или multicast (используйте IGMP proxy)
  3. Производительность: Большое количество broadcast может повлиять на CPU
  4. TTL: Broadcast не проходит через роутеры (TTL=1), relay позволяет обойти это
  5. Не для WAN: Никогда не используйте relay на WAN интерфейсах

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