Part II: Apple iPads, Apple TVs, Bonjour & AirPlay Across Subnets Using Open-Source Software

Basic Information

The virtual Bonjour Gateway server in this howto will be aptly named "Avahi." Named of course after the open-source service daemon we will be using to re-broadcast Bonjour (mDNS) traffic across subnets.

As explained in my previous blog post, the mDSN protocol is not a routed protocol so this virtual server must be directly connected to each of the VLANS (subnets) that Bonjour traffic needs to be forwarded from or onto.

In this howto, we will set up a simple, L3 routed demonstration network with a total of five VLANs/subnets. The VLANs and subnets will be defined as follows:

VLAN     Subnet         Subnet Description
  5    Servers Subnet
 10   AppleTV 1 (Wired)
 20   AppleTV 2 (Wired)
100  Student Wireless
101  Adults Wireless

The demonstration network will also have the following devices defined and they will be interconnected as shown in Figure 1 below.

  • One core router or L3 switch - We will use a Dell 6624
  • One L2 switch - We will use a Dell 5548P
  • One (physical) VMware ESXi host server with a minimum of four ethernet interfaces
  • One (virtual) Linux server connected to several VLANS and running the Avahi service
  • Three other (virtual) example servers for network completeness
  • One wireless access point
  • One wireless Student laptop
  • One wireless Adult tablet
  • Two AppleTVs, each one on a different (wired) subnet


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

CentOS 6

I wanted to show my thanks for this post by giving you my steps in setting up centos 6. Feel free to add/delete/modify whatever you want.

Comparison to Gentoo: Initial installation of the OS is MUCH easier. Setting up the vlans involves 3 files per vlan. So I suppose it's a tossup as far as time. My vlan11 is servers, 10 is workstations, 50 is wifi. For now I'm just joining workstations to wifi

Get the centos installer (I used current which is 6.5)
##make a vm with dvd1 mounted at startup
##choose minimal install (this is different than using the minimal iso as that doesn't even have cron
##reboot and login as root
##Ensure that the module is loaded by entering the following command:
lsmod | grep 8021q
#If the module is not loaded, load it with the following command:
modprobe 8021q
vi /etc/sysconfig/network-scripts/ifcfg-eth0
##press i for insert mode. esc to exit insert mode.
##make it like this
:x to save and exit
vi /etc/sysconfig/network-scripts/ifcfg-vlan11

##repeat for vlan10, vlan50
##then you have to add a route and rule or cenos tries to send traffic from one vlan out the wrong vlan
##this is what I followed:
vi /etc/iproute2/rt_tables
#add the following lines
11 vlan11
50 vlan50
10 vlan10

#then add /etc/sysconfig/network-scripts/route-vlan11 with:
default table vlan11 via
#then add /etc/sysconfig/network-scripts/rule-vlan11 with:
from table vlan11
#repeat for other vlans
#so with 1 network adapter and 3 vlans I have 10 files. lame
#maybe someone can figure out a cleaner way to do this, but my way works!

##continue on to my normal centos setup notes:
#Allow root ssh so you can get out of the stupid vmconsole
vi /etc/ssh/sshd_config
#uncomment the
PermitRootLogin yes

#iptables and SElinux are on. You may need to turn these off.
service iptables stop
vi /etc/sysconfig/selinux

//more good stuff before moving on to app installation///
//get the epel repo up
cd ~
rpm -ivh epel-release-6-8.noarch.rpm
#get git for scripts, zip and unzip are handy too
sudo yum install git zip unzip

/////////VMWARE Tools install////////////////
su root
yum install gcc kernel-devel perl make openssh-clients wget
//Mount the VMWare Tools ISO in the gui
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
cp /mnt/cdrom/VMwareTools*.gz /tmp
cd /tmp
tar -C /tmp -zxvf VMwareTools*.gz
cd vmware-tools-distrib
//accept the defaults
//then run the config thing
umount /mnt/cdrom

/////////avahi install///////
#basically I followed your simple steps, only thing was I got a dbus error when starting until I figured out I had to start the messagebus service:

yum install avahi

service messagebus start
service avahi-daemon start
chkconfig --add messagebus
chkconfig --add avahi-daemon

Thanks for the feedback

I approved your post because you obviously put some thought into it and I am sure it will help a CentOS user from the future. :)

I would argue though, that leaving "PermitRootLogins = yes" is a no-no, and would recommend that you instead create a user while logged in via the VMware console, and then ssh in as that user. I would also recommend allowing ssh logins via public key only.

Also, I rarely actually have to install Gentoo these days. I keep a "Gentoo64bitTemplate" (mostly) up to date on each of our clients' VMware systems, so deploying a new Gentoo Linux server is a couple clicks, and then a name-changing script away.

And one helpful hint: To su to root and inherit all of root's environment just do:

$ su -

Or if you feel that must enter an account name:

$ su - root

also works.



Post new comment

  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <b> <i> <u> <strong> <cite> <code> <pre> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

More information about formatting options

This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Enter the code without spaces and pay attention to upper/lower case.