Retrouvez cet article dans : Linux Pratique 38
Le monde des Logiciels libres dispose de différentes solutions VoIP axées sur des protocoles standards (H323, SIP...). Cet article montre comment réaliser une architecture simple de VoIP à l'aide d'un serveur Asterisk et de clients Ekiga.
Mise en situation
L'objet de cet article est d'initier le lecteur à la mise en œuvre d'une petite architecture VoIP basée sur des Logiciels libres. Cette architecture est typiquement celle que l'on pourrait trouver dans une petite entreprise ou éventuellement chez un particulier (Fig. 1). Elle s'articule autour d'un petit réseau local, avec un serveur de téléphonie Asterisk et plusieurs postes clients Ekiga.

Côté serveur, le logiciel Asterisk dispose de nombreuses fonctionnalités dignes des meilleures solutions VoIP commerciales. De plus, il supporte pratiquement tous les protocoles VoIP standards (H323, SIP, MGCP...). Côté client, le logiciel de téléphonie Ekiga (successeur de GnomeMeeting) propose une interface graphique conviviale et instinctive. Il supporte les protocoles H323 et SIP.
Les installations sont uniquement décrites dans le cas de distribution GNU/Linux Debian Testing. Les versions des logiciels utilisés sont Asterisk 1.2.10 et Ekiga 2.0.2. L'architecture VoIP proposée utilise exclusivement le protocole VoIP de signalisation SIP (Session Initiation Protocol) et les codecs audio G.711 loi µ. Les problématiques réseaux de qualité de service ne sont pas abordées.
Installation et configuration du serveur Asterisk
La première opération consiste à installer le logiciel Asterisk sur la machine serveur Debian :
apt-get install asterisk
Pour vérifier le bon fonctionnement du serveur Asterisk, il est maintenant possible de l'exécuter en mode verbeux (option -v) avec une interface ligne de commande associée (option -c) :
asterisk -vvvvc
Une invite de commande doit apparaître à la fin si tout se déroule correctement :
Asterisk Ready. *CLI>
On peut alors rapidement voir l'ensemble des commandes disponibles via l'interface CLI (Command Line Interface).
Asterisk Ready. *CLI>help
La configuration du serveur est réalisée à travers plusieurs fichiers textes qui se situent dans le répertoire /etc/asterisk. Parmi eux, le fichier sip.conf permet la déclaration des téléphones. Pour déclarer les deux téléphones logiciels Ekiga, il faut également ajouter les lignes suivantes à la suite :
[ekiga1] ; nom du téléphone
type=friend ; type de téléphone
host=dynamic ; enregistrement dynamique de
l'adresse IP du téléphone
username=ekiga1 ; nom d'utilisateur associé
secret=toto ; mot de passe
[ekiga2] ; nom du téléphone
type=friend ; type de téléphone
host=dynamic ; enregistrement dynamique de
l'adresse IP du téléphone
username=ekiga2 ; nom d'utilisateur associé
secret=toto ; mot de passe
Il suffit maintenant d'attribuer un numéro de téléphone à chacun des deux téléphones que nous venons de déclarer. Le fichier extensions.conf permet d'associer à chaque numéro de téléphone une suite de commandes. Pour ce faire, il suffit d'ajouter les deux lignes suivantes à la fin de ce fichier (plus exactement à la fin du contexte [default]) :
exten => 555,1,Dial(SIP/ekiga1) ; 555 appelle le téléphone ekiga1 exten => 556,1,Dial(SIP/ekiga2) ; 556 appelle le téléphone ekiga2
Voilà le serveur Asterisk est maintenant prêt à enregistrer les deux clients Ekiga qui disposent respectivement des numéros de ligne 555 et 556.
Installation et configuration des téléphones logiciels Ekiga
Paramétrage d’ALSA
Pour utiliser le téléphone logiciel Ekiga, il est préférable de se procurer un micro-casque. Il faut également s'assurer que le son du micro et celui du casque fonctionnent correctement avec le greffon ALSA (Advanced Linux Sound Architecture).
Avant tout, il faut installer le système de base ALSA et ses utilitaires :
apt-get install alsa-base apt-get install alsa-utils
Il est alors possible de lancer la détection de la carte son et l'installation du driver ALSA correspondant, via la commande alsaconf. Puis, de paramétrer convenablement les volumes du casque et du micro via la commande alsamixer.
Le logiciel Alsamixer s'utilise à l'aide des flèches haut/bas pour régler un niveau sonore, des flèches gauche/droite pour se déplacer sur les différentes sources, de la touche [M] pour activer/désactiver une source et de la touche [ESC] pour quitter. Pour un premier essai, le micro et le casque seront activés (Attention ! " MM " dans Alsamixer signifie Mute donc désactivé) et mis au maximum.
Pour commencer, on peut tester le casque avec un fichier .wav quelconque :
aplay fichier.wav
Ensuite, lorsque le test du casque est positif, on peut tester le micro :
arecord > test.wav aplay test.wav
Il faut généralement relancer plusieurs fois Alsamixer pour affiner empiriquement les niveaux sonores du micro et du casque jusqu'à avoir une qualité audio correcte.
Installation et configuration des clients Ekiga
Maintenant que l'on est assuré du bon fonctionnement du micro-casque, on peut installer le téléphone logiciel Ekiga sur la première des machines clientes Debian. Pour cela, il suffit de télécharger le paquet Debian ekiga et les autres paquets dont il dépend sur le site http://www.ekiga.org. Les fichiers seront tous sauvegardés dans un répertoire Ekiga/ :
cd Ekiga dpkg --install *.deb
Note : Pour la version de développement ekiga-snapshot contenue dans le paquet Debian ekiga-cvs, on peut ajouter le lien deb http://snapshots.voxgratia.org/debian/ testing main au fichier /etc/apt/sources.list.
Le reste de la configuration d’Ekiga se fait simplement à travers l'interface graphique. La configuration décrite est réalisée sans l'assistant de première configuration. Quittez cette fenêtre en cliquant sur Annuler. La fenêtre principale d'Ekiga doit apparaître (Fig. 2).

Pour simplifier, nous allons forcer le choix du codec audio à G.711 loi µ : allez dans le menu Édition -> Préférences, puis Codecs audio. Ensuite, il suffit de décocher toutes les cases sauf PCMU.
Maintenant, il suffit d'enregistrer le téléphone sur le serveur Asterisk : allez dans le menu Édition -> Comptes, puis cliquez sur le bouton Ajouter. Complétez les différents champs (Fig. 3) ; pour le champ Registrar indiquez l'adresse IP de votre serveur Asterisk. Puis, confirmez avec le bouton Valider.
Ensuite, dans la fenêtre des comptes, cochez la case de la colonne A. L'état " Inscrit " doit
apparaître dans la colonne État (À condition que le logiciel Asterisk soit démarré sur le serveur) (Fig. 4, page précédente).
Maintenant, le premier client Ekiga est configuré correctement, il est possible d'appeler un numéro d'accueil sur le serveur Asterisk en composant le 3. Un message de bienvenue est alors annoncé (" Welcome to the Asterisk Open Source PBX... ").
Pour la configuration du second client Ekiga, la procédure est identique en remplaçant simplement le compte " ekiga1 " par " ekiga2 ". Une fois les deux clients correctement configurés, il est possible d'effectuer un appel interne du premier poste client Ekiga vers le second et vice-versa. Pour cela, il faut respectivement composer le 556 sur le premier poste ou le 555 sur le second.
Enregistrement chez un fournisseur SIP
L'architecture mise en place jusqu'à présent ne permet que d'effectuer des appels internes entre postes clients Ekiga. Pour pouvoir accéder au réseau téléphonique commuté, qui est toujours le standard de fait, une solution élégante est l'utilisation d'un fournisseur SIP. Ce dernier constitue une passerelle entre la téléphonie IP (plus exactement SIP) et le réseau de l'opérateur historique. La plupart des fournisseurs SIP fonctionnent suivant le principe du crédit temps : vous créditez un compte chez le fournisseur qui est débité en fonction des communications. Les tarifs de la minute dépendent de la destination de l'appel.
Tous les fournisseurs SIP permettent les appels sortants vers le Réseau Téléphonique Commuté. Mais seulement certains proposent l'attribution d'un numéro pour les appels entrants. Le fournisseur d'accès internet Free propose un service de téléphonie SIP appelé " freephonie.net " pour les appels sortants et entrants. La configuration donnée pour ce fournisseur SIP peut facilement s'adapter à d'autres (voir les liens donnés plus bas).

Sur la page d'accueil de votre fournisseur d'accès Free, dans l'encadré " Gestion de mes services de téléphonie ", sélectionnez " Gestion de mon compte SIP ".
Il s'agit ensuite de configurer le service SIP en saisissant un mot de passe, en sélectionnant " Rediriger les appels entrants vers le SIP ", et en cochant " Activer le service " (Fig. 5). Il suffit ensuite de cliquer sur ENVOYER. A ce moment, le téléphone de la Freebox est désactivé et tous les appels transitent à travers la passerelle SIP.
Il faut alors paramétrer le serveur Asterisk pour qu'il s'enregistre auprès de son fournisseur SIP. Cela se fait en ajoutant la ligne suivante dans le fichier /etc/asterisk/sip.conf à la fin du contexte [general] juste avant le contexte [authentication] :
register => 0807060504:MotDePasse@freephonie.net
Puis, il faut déclarer le faisceau correspondant au fournisseur. Pour cela, il faut ajouter les lignes suivantes à la fin du fichier sip.conf :
[fournisseursip] type=friend ; type de lien correspondant insecure=very ; indispensable host=freephonie.net ; le fournisseur SIP username=0807060504     ; le nom d'utilisateur chez   le fournisseur SIP secret=MotDePasse ; le mot de passe chez   le fournisseur SIP fromuser=087060504 fromdomain=freephonie.net context=fournisseursip-entrant ; le contexte ou diriger les appels entrants
Enfin, il reste à affecter un préfixe qui permet de sélectionner le faisceau du fournisseur SIP. On peut, par exemple, définir le préfixe 0. Ainsi, tous les numéros débutant par 0 sont envoyés vers le réseau téléphonique commuté. Cette règle est à définir en ajoutant la ligne suivante à la fin du fichier extensions.conf :
exten=>_0.,1,Dial(SIP/${EXTEN:1}@fournisseursip)
Pour tester, il suffit de composer le 0, suivi d'un numéro de téléphone quelconque.
Dans l'autre sens, si vous appelez votre numéro freephonie depuis le réseau commuté, vous entendez le message d'accueil d'Asterisk. On peut diriger les appels entrants sur les deux postes clients Ekiga en ajoutant les lignes suivantes à la fin du fichier extensions.conf :
[fournisseursip-entrant] exten => s,1,Dial(SIP/ekiga1&SIP/ekiga2)
Liens :
- Asterisk : http://www.asterisk.org
- Ekiga : http://www.ekiga.org
- Quelques fournisseurs SIP : http://www.sipdiscount.com, http://www.voipbuster.com, http://www.freecall.com

