AirPlay Through pfsense Bridge

Network Packet Capture for AirPlayHowdy all, geek-mode enabled.

So I’ve been fighting somewhat to get my AirPlay enabled device (Apple TV) to function perfectly. I use pfsense to run my router and in so doing I’ve got a Wireless and Wired network that are bridged together. I found with the AppleTV that only devices on the same physical media could stream to it, though all devices could “see” it.

After submitting a feature request to Apple over this, I decided I wanted it solved for me anyway and I felt close to the solution. Since I had no logs to go by, I decided to bust out Wireshark to sniff all the involved network traffic. Suffice to say, I was rather entertained to find that when using AirPlay the payloads are flying around in IPv6, not IPv4. Just look at the caption in this post. All those teal packets is iTunes streaming audio to my AppleTV via AirPlay. It’s UDP over IPv6. Neato.

Thankfully, the fix after the IPv6 discovery was trivial, I merely had to permit IPv6 routing in pfsense, which I fully expected not to be in their GUI. Now, I may be a tad sad to not be currently ripping in to pf.conf, but I’m instead now learning all about how PulseAudio (via Linux) will play with AirPlay. How the universe is opening up.

Anyway, I figured I’d post this to help any other people who may be running in this annoyance with their AirTunes device on their network. If your router doesn’t have a GUI that lets you permit IPv6 traffic, you may be SOL. This is an example of why I like something with some meat to it, like pfsense, to manage my routing.. Cheers!