Utiliser le Raspberry Pi pour annoncer via Bonjour

Si vous utilisez un Mac, vous connaissez sûrement Bonjour (alias Rendez-vous), une technologie très pratique qui permet à des appareils de s’annoncer sur un réseau. Et même si vous ne connaissez pas Bonjour, vous l’utilisez sûrement : AirPlay, le partage iTunes, le partage utilisé dans certains NAS, énormément de technologies Apple utilisent Bonjour. Et nous allons ici utiliser le Raspberry Pi pour se faciliter la vie avec Bonjour.

L’idée est simple : Safari intègre Bonjour dans ses signets et peut afficher la liste des appareils qui s’annoncent via Bonjour. Chez moi, j’ai l’imprimante, la caméra, le tuner TV réseau et un NAS (qui au passage annonce un erreur 404, merci LaCie). Mais d’autres appareils ne s’annoncent pas, comme par exemple le boîtier VoIP, et c’est souvent la galère d’essayer de se souvenir de son adresse IP et éventuellement du port de connexion. On va donc utiliser le Raspberry Pi comme relais pour les appareils qui ne sont pas compatibles avec Bonjour.

Première chose, brancher le Raspberry Pi eu réseau et installer Avahi, un logiciel open source qui implémente Bonjour sous Linux.

sudo apt-get install avahi-daemon libavahi-client-dev
sudo update-rc.d avahi-daemon defaults

Ensuite, on va éditer un fichier qui va faire la correspondance entre les adresses IP des appareils à annoncer et un nom Bonjour. Il suffit d’ajouter l’adresse IP et de donner un nom suivi de .local.

sudo nano /etc/avahi/hosts

Dans mon cas, j’en ai ajouté quatre :

192.168.1.1 routeur.local
192.168.1.5 femtocell.local
192.168.1.7 voip.local
192.168.1.13 cloudbox.local

Je vous conseille d’utiliser un scanner de réseau genre Fing pour avoir la liste des appareils du réseau.

Maintenant, on va créer un service Avahi pour chaque appareil. Il faut créer un fichier .service par service. Ici webadmin, mais vous pouvez mettre n’importe quel nom.

sudo nano /etc/avahi/services/webadmin.service

name est le nom du périphérique.
port est à modifier en fonction de l’appareil, généralement c’est le port 80 pour une interface web.
txt-record permet d’indiquer éventuellement un chemin dans l’URL.
host-name est le nom utilisé dans le fichier hosts.
Il faut bien évidemment adapter le fichier à votre cas.

<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name>WEB Admin</name>
<service>
<type>_http._tcp</type>
<port>80</port>
<txt-record>path=/admin/</txt-record>
<host-name>webadmin.local</host-name>
</service>
</service-group>

Une fois que c’est fait, le mieux est de redémarrer le Raspberry Pi et d’ensuite aller vérifier dans les signets de Safari si tous les appareils sont visibles.

Capture d’écran 2013-02-17 à 15.51.31

L’avantage de la solution, c’est que tous les appareils équipés d’un navigateur compatibles Bonjour vont voir les périphériques. Le seul défaut, c’est que c’est l’adresse IP du périphérique qui est utilisée, et elle est stockée en dur : si elle change pour une raison ou pour une autre, ça ne fonctionne donc plus.