In my home setup, the Wireless LAN and the Wired LAN are on different subnets. The communication between the two is fully routed, so from the IP point of view, this works perfectly. Most protocols just use DNS and just work. There are, off course, some exceptions to this rule that needs special treatment. One example is, big surprise, Microsoft’s name resolution which works by using broadcasts. Since routers don’t forward broadcasts, you need a trick to get this to work across subnet boundaries: a WINS server.

Another example is Apple’s Bonjour protocol (aka Zeroconf aka Avahi aka Rendezvous). The technical details are a bit different (multicasted instead of broadcasted; based on DNS instead of proprietary protocols), but the result is the same: it doesn’t work across subnet boundaries. Obviously, this protocol is extended to work over a Wide Area Network (WAN), but for some reason, Apple decided that iTunes (and iChat) only supports local Bonjour. (It won’t surprise me if the RIAA has something to do with this.)

A bit of Googling found the solution:

Avahi: Ability to reflect mDNS traffic between multiple subnets

I used version 0.6.24, because I wanted this patch [link broken] included. It allows you to specify which interfaces avahi should work on. Since the same router also routes to the Internet, this is a very useful feature.

By default, Avahi does not “reflect” between subnets, but this can be changed is the avahi-daemon.conf file. Just restarting the daemon brings the magic to life!

Note to self: Please remember to add the corresponding rule in iptables. Otherwise you’ll end up debugging avahi-daemon with strace to find out why it doesn’t work.

One Comment

  1. bfreek says:

    man, thx so much for the hints you’re giving.
    have been looking for a workaround for this stupid senseless itunes sharing limitation for a while. could solve some other glitches, too.
    will try it out.