AirPlay a podobné služby mezi VLANami

Nedávno se řešil nefunkční AirPrint v situaci, kdy je iPhone na síti v jedné VLANě a tiskárna v jiné VLANě. To nefunguje, obě zařízení musí být ve stejném adresním rozsahu, což je v praxi víceméně nepoužitelné.

Stejně se chová AirPlay, DLNA, ChromeCast a další podobné služby.

Způsobů, jak to řešit, je několik, všechny spočívají ve forwardování multicast (mDNS) paketů mezi sítěmi.

avahi-daemon

Zkusil jsem to rozjet přes avahi-daemon. Vyžaduje to nějaký linuxový počítač na síti, stačí krabička typu Raspberry Pi.

Síťová rozhraní

Na krabičce musí být nadefinovaná všechna síťová rozhraní, mezi kterými je potřeba “se vidět” - tj. obvykle VLANy s multimédii (TV, bedničky), VLANa s tiskárnami a uživatelské VLANy, odkud chceme streamovat a tisknout.

Soubor /etc/network/interfaces musí obsahovat sekvenci s definicí sítových VLANových rozhraní typu

...
auto eth0.220
    iface eth0.220 inet static
    address 10.123.220.2
    netmask 255.255.255.0

auto eth0.221
    iface eth0.221 inet static
    address 10.123.221.2
    netmask 255.255.255.0
...

Po definici rozhraní je potřeba restartovat síť, ideálně to celé rebootnout.

Následně nainstalujeme avahi:

apt install avahi-daemon avahi-utils

V souboru /etc/avahi/avahi-daemon.conf potom nastavíme:

enable-reflector=yes

a vyjmenujeme síťová rozhraní, mezi kterými chceme zajistit viditelnost:

allow-interfaces=eth0.102, eth0.220, eth0.223, eth0.201

Pak už stačí restartovat avahi pomocí

service avahi-daemon restart

a ověřit, že se něco děje pomocí avahi-browse -all:

avahi-browse -all


+ eth0.102 IPv4 Samsung 7 Series (50)                         _airplay._tcp        local
+ eth0.102 IPv4 coffee shop                                   _airplay._tcp        local
+ eth0.201 IPv4 Samsung 7 Series (50)                         _airplay._tcp        local
+ eth0.201 IPv4 coffee shop                                   _airplay._tcp        local
+ eth0.220 IPv4 coffee shop                                   _airplay._tcp        local
+ eth0.220 IPv4 Samsung 7 Series (50)                         _airplay._tcp        local
.
.
.

Několik poznámek na závěr:

  • Není potřeba řešit žádné “nové” nastavovávní přístupů mezi VLANami - přeposílání paketů řeší ten linux, proto tam musí mít všechny ty síťové rozhraní.
  • Nezapomeňte si ty “nové” VLANy na krabičce povolit na portu switche - ať hodinu nezkoumáte, proč to nefunguje (jako já :slightly_smiling_face:).
  • Asi by to šlo řešit i na routeru, ale není to úplně jednoduché a vzdal jsem to - RouteOS 7 už by to měl umět…
  • Existuje ještě mdns-repater, který je možná ještě jednodušší, ale není jako balíček, tak jsem to zatím nezkoušel.
  • Bohužel to zviditelňuje i Windows počítače - zatím jsem to neřešil, asi by to šlo řešit na routeru (je to TCP port 5353 - kdyby to chtěl někdo vyzkoušet) - každopádně by to mělo fungovat tak, že ten Windows počítač je vidět, ale pokud není povolený přistup do jeho VLANy, tak se tam nepůjde dostat.
  • Mám to ověřené jenom na AirPlay - televize Samsung a LG + bedničky BOSE.
  • Nemám tu (asi) žádnou AirPlay tiskárnu (ani to nepotřebuju), ale předpokládám, že to pojede. Když tak se přemůžu a zkusím to zapnout na tiskárně, co tady mám.
  • Nemám tu ani žádný Chromecast - mělo by to jet, ale není to odzkoušené. Bylo by to zajímavé, to “castování” záložky prohlížeče z macOS je hrozná bída…

Bude to chtít postupně testovat a dopilovávat…

To vypadá velmi nadějně. Podle mého názoru se tím stává prakticky zbytečné Dokumentace | Více VLAN na na jednom síťovém ETH portu.

Jen mě napadá se zeptat, jestli by to celé v budoucnu šlo zaintegrovat do Shipard node serveru, který řídí konfiguraci sítě, resp. asi nebude žádoucí přidávat VLANy do Shipard node serveru, tak jestli si myslíš, že by to šlo rozjet v kontejneru na HW takového serveru, kde běží Shipard node?

No já jsem to normálně rozjel na krabičce, co řídí síť. Je to práce na 10 minut, stačí tam přidat pár VLAN a nastavit to avahi.

Nemyslím, že by to bylo něco, co ohrožuje bezpečnost, pořád je to všechno o tom, že z těch multimediálních VLAN se stejně nic nikam nemůže dostat.

Ten kontejner je IMHO zbytečný - stejně na ten port (switche i počítače) ty VLANy musíš dát, jinak to nepojede. To už by bylo lepší tam dát druhý malý počítač - ale to ti vezme další port na switchi a na malé síti je to asi zbytečné…