I don’t want to have my new Sonos One in my private LAN. Because Quest should also able to play music over the Sonos. So I place the Sonos in my IoT LAN.
To make Sonos work across diffrent networks you need to do the following taks on your router.
I use a simple Debian Linux system as my Router. With this I am very flexible in my setup. Here I will show the steps I did to make my Sonos working across VLANs.
Sonos use multicast for their discovery. To make this discovery working over VLANs you need to install a IGMP(Internet Group Management Protocol) proxy on your router. I use pimd for that I is a simple deamon with very easy setup.
By default pimd is enabled on all non localhost interfaces. So you need to only disable it on the interfaces you don’t need it. Like in may case.
phyint enp1s0 disable phyint ppp0 disable phyint docker0 disable
Their I nothing more to do. Just restart the clients will find your sonos device.
I added the following firewalls rules to my router to allow access between Sonos and my clients.
SRC CLIENTS - DST-BROADCAST (18.104.22.168/4) IGMP UDP1900 SRC CLIENT- DST SONOS Network Brodcast (x.x.x.255 for an /24) UDP6969 SRC SONOS - DST CLIENT: TCP-3401 UDP-1901 UDP30000-60000 TCP30000-60000 SRC CLIENT - DST SONOS: UDP319-320 TCP30000-60000 TCP7000 TCP1443 TCP1400 TCP1900 UDP30000-60000
For the basic sonos function you don’t need Zeroconf. But also want to use airplay2 with the Sonos One from my iPhone. The iPhone find the airplay speaker over Bonjour/Zeroconf, because of that we need to enable zeroconf on our router to use them as reflector.
On Debian you can simply use the avahi daemon to act as zeroconf relflector. You just need to change change enable the reflector function in avahi.
Don’t forget to enable the avahi service. So I will start after a reboot automatically.
I have a mac filter list on my IoT wifi. You can find the mac address of your Sonos on the buttom. The MAC is part of the serial number: The follwing serialnumber will result in the MAC AA:BB:CC:DD:EE:FF.