Voice over IP (VoIP) H. Badis badis@u-pem.fr L'objectif de ce TP est de prendre en main la configuration d'un PABX (Private Automatic Branch exchange) grâce à l outil Asterisk (http://www.asterisk.org/). Ce dernier permet fournir à Linux un commutateur téléphonique complet et totalement libre. Vous devrez rendre un compte rendu de TP qui sera noté. La date limite est 2 semaines après le TP. La topologie de notre réseau VoIP est la suivante : I. Installation et configuration du serveur Asterisk I.1 Installation d Asterisk Tout d'abord, il faut avoir une distribution à jour : sudo apt-get update sudo apt-get upgrade Maintenant, on passe à l'installation des dépendances : sudo apt-get install build-essential libxml2-dev libncurses5-dev linux-headers-`uname -r` libsqlite3-dev libssl-dev uuid-dev
cd /usr/src/ wget http://www.digip.org/jansson/releases/jansson-2.4.tar.gz tar -zxf jansson-2.4.tar.gz cd jansson-2.4/./configure --prefix=/usr/ && make clean && make && make install On télécharge la dernière version d Asterisk et on l installe : mkdir /usr/src/asterisk cd /usr/src/asterisk wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz tar -xvzf asterisk-13-current.tar.gz cd asterisk-13.0.1 # <--- Modifiez cette ligne en fonction de la version d'asterisk contrib/scripts/install_prereq install./configure make make install make samples make config Enfin, on lance le service Asterisk avec la commande suivante : /etc/init.d/asterisk start On lance la console Asterisk avec la commande suivante : asterisk -cvr Une invite de commande doit apparaître à la fin si tout se déroule correctement : Asterisk 13.0.1, Copyright (C) 1999-2014, Digium, Inc. and others. Created by Mark Spencer <markster@digium.com> Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public License version 2 and other licenses; you are welcome to redistribute it under certain conditions. Type 'core show license' for details. ========================================================================= Connected to Asterisk 13.0.1 currently running on pc-badis (pid = 18464) Pc-badis*CLI> On peut alors rapidement voir l'ensemble des commandes disponibles via l'interface CLI (Command Line Interface). *CLI>help I.2 Configuration d Asterisk 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 qui déclare les téléphones. Pour déclarer les deux téléphones logiciels linphone, il faut ajouter les lignes suivantes à la suite: [general] defaultexpirey=1800 dtmfmode=auto qualify=yes [badis] type=friend username=badis qualify=no secret=toto host=dynamic context=salle_tp language=fr callerid="badis"<555> mailbox=badis@nomdomaine ; remplacez le «nomdomaine» par l @ IP du serveur Asterisk [lohier] type=friend username=lohier qualify=no secret=toto host=dynamic context=salle_tp language=fr callerid="lohier"<556> mailbox=lohier@nomdomaine ; remplacez le «nomdomaine» par l @ IP du serveur Asterisk Pour recharger le module SIP afin de relire la configuration modifiée il suffit de taper la commande :
*CLI> sip reload 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 : [general] [salle_tp] exten => 555,1,Dial(SIP/badis,10,tr) ; 555 appel badis en priorité (1) avec un timeout de dix secondes pour raccrocher exten => 556,1,Dial(SIP/lohier,10,tr) Rechargez de nouveau la configuration comme vous l'avez fait précédemment. Voilà, le serveur Asterisk est maintenant prêt à enregistrer les deux clients Ekiga qui disposent respectivement des numéros de ligne 555 et 556. II. Installation et configuration des téléphones logiciels linphone II.1 Paramétrage d ALSA Pour utiliser le téléphone logiciel linphone, 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). Il faut paramétrer convenablement les volumes du casque et du micro via la commande : sudo 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. De la touche [ESC] pour quitter. La configuration de alsamixer doit correspondre aux deux figures suivantes :
Attention! «MM» dans Alsamixer signifie Mute donc désactivé. Pour tester le micro (après activation de L et R sur l'option Capture), on doit enregistrer un flux Audio et essayer de l écouter après : arecord f cd 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. II.2 Installation et configuration des clients linphone Maintenant que l'on est assuré du bon fonctionnement du micro-casque, on peut installer le téléphone logiciel linphone sur les machines clientes. Pour cela : Sudo apt-get install linphone Lancer le client linphone par la commande : gksu linphone
Configurer les comptes «badis» et «lohier» à travers l'interface graphique. Si la registration est OK, l identité SIP apparaît en vert. 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...»). Une fois les deux clients correctement configurés, il est possible d'effectuer un appel interne du premier poste client linphone vers le second et vice-versa. Pour cela, il faut respectivement composer le 556 sur le premier poste ou le 555 sur le second. Linphone Pour le rapport 1. Qu est-ce qu un proxy SIP? 2. Quel est l intérêt de la période d enregistrement? 3. Quels sont les Codecs audio implémentés par le client linphone? 4. Quels sont les Codecs vidéo implémentés par le client linphone? 5. Expliquez la ligne suivante GSM 8000 Activé 13,500000 Asterisk 6. A quoi servent les deux fichiers : /etc/asterisk/sip.conf et /etc/asterisk/extension.conf? 7. Expliquez les lignes qui correspondent au client «badis» dans le ficher /etc/asterisk/sip.conf 8. Comment procède-t-on pour restreindre les codecs utilisés via le serveur Asterisk? 9. Peut-on remplacer les deux lignes que vous avez rajouté dans le fichier /etc/asterisk/extension.conf par la ligne suivante : exten => _5XX,1,Dial(SIP/${EXTEN},10,tr) 10. Quelle est la commande sous Asterisk qui permet d afficher les clients sip? commentez le résultat. 11. Afficher les canaux sip avant un appel et pendant un appel. Commentez le résultat. 12. Quels sont les messages échangés avec le serveur Asterisk lors d une inscription (registration)? 13. Quelle est la durée de vie d un enregistrement indiquée dans le message REGISTER envoyé par le client? 14. Déterminer en utilisant Wireshark le diagramme d échanges entre les deux clients linphone et le serveur As terisk lors de l établissement d une communication, la communication (parole), et la terminaison d une communication. 15. Quelles sont les requêtes liées au protocole SIP? 16. La requête «invite» a pour but l'initiation de session de toute nature (audio, vidéo, tchat, fax, IPTV, etc.). Via Wireshark, déterminez la nature de la session demandée par l appelant ainsi que les codecs proposés. 17. Déterminez les codecs acceptés par l appelé.
18. Si «badis» veut appeler «lohier» sans passer par le serveur Asterisk, quelle serait la technique utilisée. III. Configuration de la boite vocale et le voicemail Pour qu'une boite vocale se déclenche lorsque l'utilisateur ne répond pas, éditez le fichier /etc/asterisk/voicemail.conf Puis ajoutez les deux lignes suivantes: [general] ;serveremail=maison-voicemail@test.com ;attach=yes maxsilence=10 silencethreshold=128 maxlogins=3 sendvoicemail=yes [salle_tp] 555 => 123,badis,badis@localhost,, attach=no review=yes 556 => 123,lohier,lohier@localhost,, attach=no review=yes attach=no : cette option permet de ne pas envoyer le message en pièce jointe du mail. review=yes : cette option permet à la personne qui laisse un message de relire ou de réenregistrer son message. Vous pouvez également modifier le texte du mail, qui vous avertit de l'arrivée d'un message vocale, afin de le mettre en français. Pour cela modifiez les paramètres emailsubject et emailbody dans le fichier voicemail.conf Modifier le DialPlan Pour ajouter et choisir le numéro qui servira à appeler l'utilisateur dans le DialPlan, ouvrez le fichier /etc/asterisk/extensions.conf Puis ajoutez les lignes suivantes dans le contexte que vous avez défini pour les utilisateurs : [general] [salle_tp] exten => 555,2,Voicemail(555@salle_TP) exten => 556,2,Voicemail(556@salle_TP)
exten => 700,1,VoicemailMain(${CALLERID(num)}@salle_TP) ; le num de la messagerie principale Ainsi le téléphone badis pourra être appelé en composant le 555, au bout de 10 secondes, l'appel passe sur la boite vocale. Pour que lohier puisse consulter sa messagerie, il pourra appeler le numéro 700 et il compose son login à 556 et mot de passe à 556. Redemarrez Asterisk et entrez par la suite les lignes suivantes afin de redémarrer chaque service qui a subi des modifications : sip reload module reload app_voicemail.so dialplan reload Pour le rapport 19. Expliquer les lignes qu on vient de rajouter dans le fichier /etc/asterisk/extensions.conf 20. Expliquer par un schéma le fonctionnement global de la messagerie qu on vient de réaliser IV. Recevoir un mail et le message vocal en pièce jointe Asterisk permet que lorsque qu un utilisateur laisse un message sur la boîte vocale d un autre utilisateur, celui-ci reçoit un mail avec en pièce jointe le message audio. Effectuez la configuration nécessaire sur le serveur asterisk pour l envoi de mail principalement sur le fichier /etc/asterisk/voicemail.conf. Logiquement, pour que le serveur Asterisk puisse envoyer des E-mails vous devez installer et configurez un serveur SMTP (Postfix par exemple). 21. Montrer les configurations et les résultats. V. Interconnexion de deux serveurs asterisk On souhaite connecter deux serveurs asterisk entre eux pour faire dialoguer les clients du serveur A avec ceux du serveur B et vice versa. 22. Montrer les configurations et les résultats.