Настройка сводится к тому, чтобы создать между сегментами сети один Broadcast-домен с использованием L2 VPN. Далее настроить передачу трафика через VPN-интерфейс, только для протоколов mDNS и SSDP, а весь остальной трафик - отбросить. Для этого будут использоваться L2TPv3 и фильтры на Bridge интерфейсе. Для организации L2 VPN в ROS можно использовать BCP, EoIP, VXLAN, L2TPv3, VPLS.
Ссылки по теме:
Нам необходимо сделать так, чтобы клиент, будь то TV или VLC смог обнаружить MiniDLNA-сервер. После этого, передача будет вестись напрямую юникастом. И без разницы, если клиент и сервер находиться в разных сегментах сети, главное, чтобы между ними была настроена маршрутизация.
- mDNS - Используется multicat-адрес 224.0.0.251. Когда клиенту mDNS необходимо разрешить имя хоста, он отправляет сообщение с multicast-запросом, в котором просит хост с таким именем идентифицировать себя. Затем эта целевая машина рассылает multicast-сообщение, включающее её IP-адрес.
- SSDP - Сервисы анонсируют своё присутствие отправкой сообщения на multicast-адрес 239.255.255.250. Клиентское устройство, желающие узнать о появлении сервиса, использует специальный запрос, ответ на который присылается отправителю запроса на его собственный unicast-адрес.
Схема сети:
TV -> LAN 172.17.5.17/28 -> VPN 172.16.255.2 -> WAN <- VPN 172.16.255.1 <- 172.16.5.25/29 LAN <- DLNA Server
Без использования VLAN:
/interface/bridge/filter/
- Out mDNS
add chain=forward out-interface=l2tp-ether1 \
dst-mac-address=01:00:5E:00:00:FB/FF:FF:FF:FF:FF:FF mac-protocol=ip src-port=5353 \
dst-address=224.0.0.251/32 dst-port=5353 ip-protocol=udp action=accept comment="Out mDNS"
- Out SSDP
add chain=forward out-interface=l2tp-ether1 \
dst-mac-address=01:00:5E:7F:FF:FA/FF:FF:FF:FF:FF:FF mac-protocol=ip \
dst-address=239.255.255.250/32 dst-port=1900 ip-protocol=udp action=accept comment="Out SSDP"
- Drop
add chain=forward out-interface=l2tp-ether1 action=drop
add chain=output out-interface=l2tp-ether1 action=drop
С использованием VLAN:
/interface/bridge/filter/
- Out mDNS
add chain=forward out-interface=l2tp-ether1 \
dst-mac-address=01:00:5E:00:00:FB/FF:FF:FF:FF:FF:FF mac-protocol=vlan comment="Out mDNS"
- Out SSDP
add chain=forward out-interface=l2tp-ether1 \
dst-mac-address=01:00:5E:7F:FF:FA/FF:FF:FF:FF:FF:FF mac-protocol=vlan comment="Out SSDP"
- Drop
add chain=forward out-interface=l2tp-ether1 action=drop
add chain=output out-interface=l2tp-ether1 action=drop