Vous êtes sur la page 1sur 11

TP SUR LA VOIX SUR IP SIP ASTERISK Ce TP propose une installation et un test dun serveur et de clients afin de mettre en oeuvre

le protocole SIP. Lobjectif est danalyser les comportements des logiciels, et de comprendre le protocole SIP en lui mme travers plusieurs exemples. Le sujet de ce TP est un guide pour la mise en uvre minimale du service SIP, mais il est demand aux tudiants de se poser des questions sur le fonctionnement de SIP, et de profiter de cette mise en uvre pour tester et observer des comportements du protocole (en plus de ce qui est demand dans ce document). Par ailleurs, la configuration des logiciels clients nest pas explique, il est laiss ltudiant le soin de rechercher comment les configurer pour senregistrer avec le serveur et mettre des appels. Ce TP se fait sous le systme dexploitation LINUX (natif ou par une image virtuelle). Le schma du TP est le suivant : nous allons install un serveur VoIP (nomm Asterisk), crer des comptes utilisateurs pour des clients, et dfinir un plan de numrotation qui permettent dappeler ces clients. Dun autre ct, nous allons installer des clients VoIP qui utiliseront ce serveur pour mettre des appels et tre appels. Les tches raliser sont les suivantes : 1. Crer les comptes client sur le serveur 2. Configurer le logiciel client 3. Enregistrer le client 4. Raliser un appel sur un numro de test 5. Crer et enregistrer un deuxime client 6. Raliser des appels entre les deux clients, en changeant les options des diffrents comptes, et en changeant la configuration du rseau 7. Mettre en place des services de la TOIP

RAPPELS ET PRISE EN MAIN DU TP I Environnement du TP Afin de mettre en oeuvre un service de VoIP, et danalyser les comportements serveur et client les logiciels suivants seront utiliss : 1. zoiper (client SIP et IAX) 2. Twinkle (client SIP pour linux) 3. Ekiga (client SIP, H323, pour linux) 4. xlite (client SIP, H323) 5. Asterisk (serveur VoIP serveur SIP) : Asterisk est un serveur VoIP / IP PBX trs riche, qui permet de mettre en oeuvre de nombreuses fonctionnalits. Entre autres, Asterisk permet dinstaller les quelques services suivants : Serveur SIP (registrar, proxy) Serveur H323 (gatekeeper) Passerelle IP RTC Messages de rpondeur par email Music On Hold Transcodage Dans le cadre de ce TP, nous allons mettre en place certaines de ces fonctionnalits Wireshark : Le logiciel Wireshark permet de visualiser les trames changes sur le rseau, et il est capable danalyser et dinterprter ces dernires. Lancez le logiciel avec lutilisateur root, et lancez la capture sur linterface rseau utilise. En fin de capture, il est possible de demander Wireshark danalyser les transactions SIP, en allant dans le menu analyse / SIP transactions

Tutorial Asterisk

Manipulation
Asterisk est dj install sur lordinateur. Lensemble des fichiers de configuration se trouve dans /etc/asterisk. Il y a notamment les fichiers extensions.conf et sip.conf qui sont les fichiers principaux pour configurer un service SIP. Le fichier sip.conf regroupe la configuration du protocole SIP sur Asterisk, savoir les proxy / provider / clients. Le fichier extensions.conf est le fichier principal du serveur Asterisk, celui qui indique le plan dappel du serveur (voir plus loin pour plus dinformations sur la configuration de ces fichiers). Prendre soin de faire une copie des fichiers initiaux (les renommer <nom_fichier>.old par exemple), et copier ensuite les fichiers sip.conf et extensions.conf du bureau vers le rpertoire /etc/asterisk pour pouvoir diter ces fichiers. Le logiciel lit exclusivement les fichiers dans le rpertoire /etc/asterisk.

Manipulation dAsterisk
Pour lancer Asterisk, il faut taper la commande suivante dans un terminal avec les droit administrateur : asterisk Il est galement possible de se connecter la console Asterisk afin dinterroger le serveur, et de voir tous les messages de fonctionnement (si jamais vous quittez le terminal). Pour se connecter une instance dAsterisk en cours, dans un terminal, il faut taper la commande : asterisk rvvvvvvvvvvvvvvvvvvvv Pour sortir de la console, il suffit de faire un exit (attention, cette commande ne tue pas le processus asterisk, mais quitte uniquement la console). Pour tuer une instance dasterisk, le plus simple est de tuer le processus (kill -9 <numro_de_processus>).

La console Asterisk
La console Asterisk permet dinterroger le dmon Asterisk, de regarder la liste des utilisateurs, les modules en place, de les redmarrer et davoir dventuels messages derreurs. Une fois entr dans la console (asterisk r), voici quelques commandes utiles : help : liste lensemble des commandes disponibles dialplan reload : recharge le fichier extensions.conf ncessaire aprs une modification dans le fichier sip reload : recharge le fichier sip.conf ncessaire aprs une modification dans le fichier sip show peers : liste lensemble des clients SIP configurs sur Asterisk avec certain paramtre, comme ladresse IP, et indique combien de clients sont connects sip show users : liste lensemble des clients SIP avec leur mot de passe sip show user <username> : dcrit les paramtres de lutilisateur SIP <username> sip set debug : permet de passer le protocole SIP en mode debug, o vous verrez tous les messages et tats du protocoles SIP dans la console dialplan debug : permet de passer le plan de numrotation en mode debug, pour voir les

oprations effectus par Asterisk en temps rel Note : Lorsque vous jouerez avec les diffrentes configurations possibles, il nest pas forcment ncessaire de redmarrer le serveur Asterisk. Seul un module peut tre redmarr (en tapant le nom du module et reload)

Sip.conf
Le fichier /etc/asterisk/sip.conf regroupe lensemble des options configurables pour installer desservices SIP. Cette section donne une aide pour la configuration de ce fichier. Le fichier sip.conf commence avec une section [general] qui donne la configuration par dfaut pour tout utilisateur et provider. Tout lment de cette section sera crase par des dfinitions spcifiques dfinies plus loin dans le fichier. Ces extensions (appels canaux SIP) sont dfinies entre crochet. Voici quelques paramtres possibles pour la section [general] : Domain (example.com) : configure le nom de domaine sur lequel travaille Asterisk. Bindaddr / bindport (adresse IP x.x.x.x ou 0.0.0.0 pour toutes les adresses du serveur / numero de port par dfaut : 5060) : les adresses IP et numros de port sur lesquels le serveur Asterisk doit tourner Srvlookup (yes, no) : indique Asterisk de faire des requtes DNS, notamment pour utiliser des adresses logiques contenant des noms de domaines Support NAT : plusieurs paramtres peuvent tre configurs si le serveur Asterisk est derrire un NAT : o Externip (=x.x.x.x) : adresse publique du botier NAT o Localnet (=x.x.x.x/n.n.n.n => adresse IP/netmask) : rseau local sur lequel se trouve gnralement les clients (par exemple : 192.168.0.0/255.255.255.0) o Nat (= yes | no) : influence la dclaration des utilisateurs SIP (peers, users) pour indiquer que ces utilisateurs sont eux-mmes derrire un boitier NAT par rapport lAsterisk

Les canaux SIP suivants sont possibles : User : authentifie les appels entrants (peut seulement appeler) Peer : authentifie les appels sortants (peut seulement tre appel) Friend : authentifie les appels entrants et sortants (peut appeler et tre appel) Voici quelques paramtres disponibles pour configurer les canaux SIP (user, peer, friend) : Type (= <type du client SIP>) : indique le type du client, cest--dire friend, user ou peer Context (<nom_contexte>) : indique le contexte dans le plan de numrotation (extensions.conf) dans lequel les instructions pour cette extension seront excutes. Plusieurs extensions peuvent avoir le mme contexte

Callerid (<nom <numro>> - exemple : =John Smith <555>) : Nom complet de lutilisateur, qui sera utilis en dernier recours si rien dautre nest disponible pour affichier un nom dutilisateur lors dun appel Fromuser (<from_ID>) : Dfinit lutilisateur mettre dans le champ from la place du caller ID (comportement trange observ sur lAsterisk ne pas utiliser) Username (<username[@realm]>) : Nom dutilisateur utilis pour lauthentification. Le username doit tre le mme que le nom de lexension entre [] secret : mot de passe utilis pour lauthentification Host (= dynamic | x.x.x.x) : indique ladresse IP dune extension. Si la valeur de host vaut dynamic, le client est autoris se connecter par nimporte quelle adresse. Mailbox (= <number>@<context>) : Numro de mailbox avec le contexte associ directmedia (yes, no, nonat, update) : indique si Asterisk doit tre au coeur de tous les changes entre deux clients, cest--dire si les flux RTP doivent obligatoirement passer par Asterisk, ou sils peuvent directement tre changs entre les clients. Allow / disallow (= all | gsm | alaw | ulaw | g729 | g726 | g723.1 | ilbc | speex) : Permet ou interdit lutilisation de codecs. Les rgles dfinies dans un canal SIP sajoutent aux rgles dfinies dans la section [general]. Afin de r-initialiser ces rgles pour un certain canal, il faudra commencer par disallow=all Dtmfmode (= inband | rfc2833 | INFO) : dfini comment les tonalits DTMF sont transmises (dans la bande, i.e., dans le flux audio, ou hors bande comme de la signalisation) Nat (= yes | no | never): indique si un NAT se trouve entre le client et Asterisk. Dans le cas o nat=yes, Asterisk ignorera le champs Contact Information et utilisera ladresse du paquet Exemple : [general] context=default port=5060 bindaddr=0.0.0.0 srvlookup=yes [ali] type=friend nat=no ; Telephone without NAT host=dynamic ; the devices can be registered with different IPs each time

Extensions.conf
Comme nous lavons dj dit, Asterisk propose une multitude de protocoles. Il lui faut alors un moyen de connatre les actions mener lors dun appel, pour rediriger les appels vers le bon protocole et / ou le bon destinataire. Le fichier /etc/asterisk/extensions.conf indique Asterisk comment router / commuter les appels, cest le plan de numrotation. Extensions.conf indique les actions entreprendre lorsque des INVITE vers un numro ou un utilisateur arrivent sur Asterisk. Ce fichier est compos en trois zones : la zone gnrale o se trouve les paramtres gnraux pour toute larchitecture, la zone globale o on insre des variables globales qui seront utilises dans la troisime zone qui est constitue de plusieurs sous-zones appeles contextes . Section gnrale Ici sont dfinis les paramtres gnraux du serveur : autofallthrough= yes ; raccrochage automatique aprs lappel (par dfaut, le champ est yes) static= yes ; en binme avec l'option suivante writeprotect = no ; modification possible depuis la CLI Section globale Dans cette section, on dclare des variables pour, par exemple, des numros de tlphone ou des variables faisant appel des fichiers son pour le parcage ou autre. <Nom_variable> => <valeur ou chemin du fichier> Section contexte Chaque contexte dfinit une portion du plan dappel, les contextes permettent de diviser de manire prcise la gestion des appels. On peut crer par exemple un contexte pour filtrer les appels entrants et un autre pour filtrer les appels sortants. Les filtres qui seront mis en place seront fonction des rgles que vous voulez mettre en place : autoriser certains appels seulement, utiliser une certaine ligne tlphonique pour un certain type de numro (portable fixe international) selon les tarifs des oprateurs. Le contexte en lui-mme est dfini par une srie de rgles par numro (ou ensemble de numro). Pour un mme numro, on pourra dfinir une srie dinstructions squentielles, identifies par un numro de squence. Exemple : [default] Exten => 118,1,Dial(Sip/ali) Exten => 119,1,Dial(Sip/DirFin)

Syntaxe : [] : dfinition des contextes (ex : general) exten => <numro>, #, Action <numro> : donne le numro de tlphone ou le nom de client qui appelle, et donc qui doit tre redirig vers le bon destinataire # : numro de laction, utilis pour le squencement daction. On commence par 1, et si dautres actions doivent suivre, on incrmente de ce numro Action : reprsente la tche raliser par Asterisk. Les actions suivantes sont possibles : Answer() Wait() Voicemail() Hangup() Dial(SIP/<canal>) Goto(<context>, <numro>, #) Notez que les fichiers dorigine de la configuration du serveur (qui sont nomms sip.conf.old et extensions.conf.old sont dans /etc/asterisk et donnent beaucoup dexemples de configuration.

TRAVAIL FAIRE
1- Configuration PC et rseau Le travail se fera dans un environnement compos comme suit : Un serveur o est installer le systme Asterisk Une machine (PC ou linux) o seront installer deux softphones Une machine (PC ou linux) o seront installer deux softphones

En rsum nous disposons de 3 machines et de 4 softphones pour paramtrer les comptes. Il est conseill d'utiliser les machines virtuelles 2- Les comptes crer Nous allons traiter le cas d'une entreprise dont l'organisation interne est compose ainsi : Le Directeur Gnrale ---------> numro 402 la secretaire ---------> numro 403 la responsable Compta ---------> numro 404 l'assistant du responsable compta ---------> numro 405 le responsable Financier ---------> numro 406 l'assistant du responsable financier ---------> numro 407 la standardiste ---------> numro 408 le poste de l'agent de scutit ---------> numro 409 Exemple de compte (canal dans sip.conf) [403] type= friend host= dynamic dtmfmode= rfc2833 context= dirgen username= 403 callerid = <Secretaire <403> > secret= passer2 disallow = all allow = g729 allow = ulaw allow = alaw allow = gsm

3 Aprs avoir install et paramtr notre serveur, nous devons crer les comptes pour les utilisateurs, dans tous le tp le protocole SIP sera utilis. Editer le fichier sip.conf pour crer les comptes. Se connecter l'interfaces CLI d'asterisk et vrifier les comptes : sip show peers sip show users sip show peer 402

sip show user 402 NB : notez bien les rsultats de ces diffrentes commandes.

4- Une fois les comptes crs nous allons paramtrer notre plan de numrotation : Les numros internes vont dbuter par 400 Le directeur aura pour numro 402 la secrtaire 403 ainsi de suite en respectant la correspondance faite lors de la cration des comptes

Contraintes du plan de numrotation : 1. Crer un context appel-internes pour grer les appels entre les utilisateurs 2. Le DG doit tre isol du context appel-internes de tel sorte que seule la secrtaire pourra directement joindre le directeur. Mais le directeur doit pouvoir appeler tous les comptes (numros) 3. dialplan reload permet asterisk de prendre en compte les modifications sur le fichier extensions.conf 4. sip reload (pour le fichier sip.conf) 5- Test micro l'application Echo permet de tester les paramtres audio crez un context test-audio de tel sorte que si l'on appel le numro 1313 le serveur rpte ce que vous dites. Syntax : exten => 1313,1,Playback(demo-echotest) exten => 1313,2,Echo exten => 1313,1,Playback(demo-echodone) exten => 1313,4,Hangup

6- Mettre la langue de notre serveur en franais Si les fichiers audio sont en anglais: crer un rpertoire fr dans /var/lib/asterisk/sounds/ et dans le rpertoire fr copier les fichiers audio en franais Procdure pour mettre la langue par dfaut franais ouvrir le fichier /etc/asterisk/asterisk.conf rechercher le paramtre langue mettre la langue par dfaut du systme en franais (fr) arrter et redmarrer le serveur core restart now

7- Enregistrement de notre propre fichier audio [record] exten => 101,1,Answer() exten => 101,n,SET(CHANNEL(language)=fr) exten => 101,n,Playback(vm-intro) exten => 101,n,Record(/home/toip_lprt/IVR/accueil.wav) exten => 101,n,Wait(2) exten => 101,n,Playback(/home/toip_lprt/IVR/accueil) exten => 101,n,Wait(2) exten => 101,n,Hangup L'application Record permet d'enregistrer un message (fichier) audio. L'application prend en paramtre le chemin complet du fichier crer. Le nom du fichier audio doit dfini avec extension du fichier audio (wav, mp3, gsm, .) Sur l'interface CLI de asterisk la commande : core show application Record vous donne la syntaxe de la application Record

8- Cration d'un auto-attendant : Rpondeur automatique (IVR = Interactive Voice Response) En tlphonie, un Serveur vocal Interactif, ou IVR, est une technologie de tlphonie qui permet un ordinateur de dtecter les tonalits vocales et tactiles au moyen d'un appel tlphonique normal. Le systme IVR peut rpondre en utilisant un fichier audio pr-enregistr ou gnr dynamiquement . Les systmes d'IVR peuvent tre utiliss pour contrler presque toutes les fonctions o l'interface peut tre dcompos en une srie de choix de menu simples. Le systme d'IVR Une fois construits gnralement peut bien s'adapter pour traiter des volumes d'appels importants. " [background] exten => 1312,1,answer() exten => 1312,n,Set(CHANNEL(LANGUAGE)=fr) exten => 1312,n,Background(vm-enter-num-to-call) exten => 1312,n,Waitexten() exten => 1,1,Playback(digits/1) exten => 1,2,Goto(background,312,1) exten => 2,1,Playback(digits/2) exten => 2,2,Goto(background,312,1) exten => i,1,Playback(pbx-invalid) exten => i,2,Goto(background,312,1) exten => t,1,Playback(vm-goodbye) exten => t,2,Hangup()

9- Context appel-internes A raliser !!! 10- appel-entrants Dans ce context nous devons grer les appels entrants. Notre entreprise dispose d'une ligne pour recevoir des appels provenant de lextrieur ce sont les appels entrants. Les appels entrants sont grs par le standardiste. Exercice : avec les applications Record, Background, Waitexten, Wait mettre en place un IVR qui aura pour rle de rediriger les appels vers les numro correspond en interne ou vers le standardiste : Notre IVR devra : 1. jouer un fichier audio qui sera le menu 2. attendre 2 seconde 3. si lappelant appuie sur 1 passer l'appel la secrtaire 4. si lappelant appuie sur 2 passer l'appel au service compta 5. si lappelant appuie sur 3 passer l'appel au service finance 6. si l'appelant appuie sur 4 le standardiste rpond 7. si l'appelant appuie sur 0 retourn au dbut du menu Au niveau du service compta et finance nous avons deux postes dans chaque service, nous pouvons donc ajouter une extensions qui va permettre de faire sonner les deux postes dans chaque service. Le signe & permet de faire sonner plusieurs postes en mme temps : la syntax sera Dial(SIP/403 & SIP/404).