alsmith / multicast-relay

Relay multicast and broadcast packets between interfaces.
GNU General Public License v3.0
304 stars 47 forks source link

Issues with mDNS and Airplay devices #67

Open yvernhurenat opened 2 years ago

yvernhurenat commented 2 years ago

Hi,

I'm currently trying to get some Airplay devices running over multiple subnets and Roon, but it doesn't work as expected. I use on one side: multicast-relay.py --interfaces eth0 --noSSDP --noSonosDiscovery --foreground --remote 192.168.1.1 --verbose

and on the other side: multicast-relay.py --interfaces br0 --noSSDP --noSonosDiscovery --foreground --listen 192.168.2.1 --verbose

The devices are successfully discovered but they won't play any music. It doesn't start to play at all. Some Airplay devices want a code to authenticate it as playback device, but this code doesn't show up as normally on the same subnet. Is there any additional relay I have to consider for Airplay/authentication/streaming?

yvernhurenat commented 2 years ago

Here a rough picture of the network setup: Airplay-Devices (A) -> Router (A) [192.168.1.0/24,10.1.0.2/32] <-Point-to-Point (on 10.1.0.*)-> Router (B) [192.168.2.0/24,10.1.0.1/32] -> Roon (B) The routes should be set correct, every device can ping and reach each other

alsmith commented 2 years ago

Hi !

It would appear that discovery is working just fine - can the devices on each subnet talk to each other as that is the next step after they know about each other: they will need to establish a connection to pass data, which would no longer involve the relay.

Hope this helps.

yvernhurenat commented 2 years ago

Could you (or maybe someone else) help me to identify the communication problem? Which ports are needed for AirPlay to work properly? The streaming via Roon's native Protocol (Port 9003) does work without problems.

alsmith commented 2 years ago

My approach would be to use tcpdump to figure out just what's happening on the wire. One should be able to see the discovery request/response and then one side ought to attempt to establish a connection to the other. Hard to guess exactly where it's failing but tcpdump would help establish where the problem might lie.

yvernhurenat commented 1 year ago

The problem seems to be in the pairing process of AirPlay. Although the mDNS packages are relayed the IP address used in the pairing is the one from the relay server: