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á
).
- 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…