Implementing an avahi reflector to advertise iPrint printers

  • 7015851
  • 30-Oct-2014
  • 31-Oct-2014

Environment

iPrint Appliance
Avahi

Situation

When attempting to print from an App which searches for printers using AirPrint, the message "No AirPrint Printers Found" is returned.

iOS Apps which use AirPrint are:
  • Camera
  • Notes
  • Mail
  • Safari
  • Chrome
  • Dropbox
Note 1: Not all apps are listed.
Note 2: The following iOS Apps are known to work with the Novell iPrint App:
  • Adobe Reader
  • Attachments in Mail app (except for photos)
This error message cited above appears even though the AirPrint option is enabled for one or more printers through the iPrint Appliance Management Console.

One solution to this problem is to setup what is known as an Avahi reflector. Avahi is the technology that allows iPrint to advertise the iPrint printers via multi-cast DNS, or zeroconf DNS. Since this doesn't traverse routers by default, a solution is required to relay these messages. This can be done at the router level, but is generally not recommended.

TID #7012895 lists other options for accomplishing iPrint advertisement.

Resolution

The Avahi daemon has the ability to act as a 'reflector'. While in reflector mode, the Avahi daemon will re-transmit / re-multicast both queries and responses via multiple interfaces. This means you could use any linux based machine to 'bridge' these two multi-cast DNS networks. The advantage of using a reflector over simply forwarding these frames between networks is you could target specifically the wireless network and the network where iPrint resides and only reflect between those two. If this was performed at the routers, each frame would have to be passed through each individual network until it finally made its way to where the iPrint appliance is located.

To enable Avahi reflection:

1. Configure a machine with two interfaces (or configure both VLANs to a single NIC if you are using VLAN)
2. Ensure Avahi is installed ( rpm -qa |grep avahi)
3. Enable reflection
  • vi /etc/avahi/avahi-daemon.conf
  • uncomment the 'allow-interfaces' line and list the interfaces you intend to use    
    • allow-interfaces=eth1,eth2
  • uncomment 'enable-reflector' and change the value to yes
    • enable-reflector=yes
4. Restart avahi (rcavahi-daemon restart)

Please ensure no firewall is blocking requests if the reflection doesn't appear to be working.