Vous êtes sur la page 1sur 10

TP3 : Voix sur IP

Asterisk est un projet démarré en 1999 par Mark Spencer. Son objectif était alors de fournir à
Linux un commutateur téléphonique complet et totalement libre.
Aujourd’hui Asterisk est un PABX (Private Automatic Branch eXchange) d’une rare
puissance et souplesse, capable de gérer la téléphonie analogique, mais surtout, et c’est ce qui
nous intéresse, la voix sur IP.
La VoIP sur Asterisk passe entre autre par la prise en charge d’un protocole standard, ouvert
et très largement utilisé, le SIP (Session Initiation Protocol).
SIP qui est un protocole très proche d’HTTP qui n’est pas limité à la seule voix mais qui
prend aussi en charge la vidéo et la messagerie instantanée.
D’un point de vue fonctionnalité, Asterisk permet tout ce que l’on peut attendre d’un PABX
moderne:
 La gestion des postes téléphonique sur IP locaux. Il peut s’agir de téléphones
physiques mais aussi logiciels (ou SoftPhone) comme Zoiper, Ekiga ou X-lite.
 Boîtes voales, transfert d’appel, mise en attente etc…
Le TP est divisé en deux parties principales :

Partie 1 : Mise en œuvre d’un serveur VOIP


Le but du TP dans cette partie est d’établir une communication entre deux utilisateurs à
travers le protocole SIP ainsi que configurer les boites vocales de ces utilisateurs.
Nous allons voir dans cette partie comment installer Asterisk et le configurer pour passer un
premier appel entre deux utilisateurs.

Configuration de l’adresse du serveur Asterisk


On accède au fichier suivant en mode root

Etc/network/interfaces

Après nous saisissons l’adresse IP du serveur et le masque

Auto eth0
Iface eth0 inet static
Address 192.168.2.202
Netmask 255.255.255.0

Et en fin on redémarre le service réseau

Service networking restart

1
Installation d’ Asterisk
Il y a deux façons d’installer Asterisk sur une distribution à base de Debian, la première via le
gestionnaire de paquet de Debian, la seconde en compilant directement la dernière
version d’Asterisk.
Nous allons dans ce TP installer Asterisk en compilant ses sources pour pouvoir disposer de la
dernière version d’Asterisk.

Préparation à l’installation
On commence par mettre à jour notre distribution et installer les dépendances nécessaires à la
compilation d’Asterisk.

apt-get update && apt-get upgrade


apt-get install build-essential libxml2-dev libncurses5-dev linux-headers-`uname -r` libsqlite3-
dev libssl-dev
Puis on créer un dossier ou nous allons placer les sources d’Asterisk dans /usr/src
mkdir /usr/src/asterisk
cd /usr/src/asterisk

Installation
On télécharge la dernière version d’Asterisk et on l’installe.

wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-10.7.0.tar.gz
tar xvzf asterisk-10.7.0.tar.gz
cd asterik-asterisk-10.7.0
./configure
make menuselect
La commande make menuselect va faire apparaître un écran qui va vous permettre de
personnaliser votre installation d’Asterisk.

2
Nous allons en profiter pour installer les sons français pour Asterisk au format µ-law.
Dans Core Sound Package nous allons cocher la case CORE-SOUNDS-FR-ULAW avec la
touche Espace puis appuyez sur Echap pour retourner à l’écran précédent.
Puis dans Music On Hold File Packages cochez MOH-OPSOUND-ULAW (Dechochez
celui en WAV), appuyez sur Echap et enfin allez dans dans Extras Sound Packages et
cochez EXTRA-SOUNDS-FR-ULAW.
Enfin appuyez sur Echap et une fois à l’écran principal refaites Echap et appuyez sur S pour
sauvegarder les changements.
Enfin tapez les commandes suivantes pour terminer l’installation:
make
make install
make samples
make config
Pendant le make install assurez-vous que votre serveur soit connecté à internet parce que
celui-ci va télécharger les package de langue FR que nous avons sélectionnés.

3
Après toutes ces commandes vous pouvez lancer Asterisk à l’aide de la commande suivante:
/etc/init.d/asterisk start
Vous pouvez vérifier le bon fonctionnement de votre serveur Asterisk avec la commande
suivante qui sert à afficher la console d’Asterisk
asterisk -cvvvvvvvvvvr
Si vous avez les lignes suivantes qui s’affichent:
Asterisk 10.7.0, Copyright (C) 1999 - 2012 Digium, Inc. and others.
Created by Mark Spencer
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.
===================================================================
======
== Parsing '/etc/asterisk/asterisk.conf': == Found
== Parsing '/etc/asterisk/extconfig.conf': == Found
Connected to Asterisk 10.7.0 currently running on Asterisk
.......................
C’est que votre serveur Asterisk est démarré et fonctionnel.

Configuration d’Asterisk et création des comptes utilisateurs

Configuration d’Asterisk
Pour configurer notre serveur Asterisk, nous allons modifier les fichiers suivants:
 Le fichier sip.conf : pour la configuration générale d’Asterisk.
 Le fichier extensions.conf : pour la configuration du Dialplan.

Ces fichiers se trouvent dans le dossier /etc/asterisk


Ouvrir deux sessions en utilisant MobaXterm, Terminator,….

4
Nous allons commencer par éditer le fichier sip.conf qui va nous permettre pour l’instant de
mettre les sons par défauts en Français.

Recherchez la ligne
;language=en

Et remplacez la par
language=fr

A chaque fois que vous modifiez un fichier de configuration il faut recharger ce fichier de
configuration dans Asterisk.

Dans la console d’Asterisk il vous suffit de taper la commande : reload ; cette commande
permet de recharger les fichiers de configurations d’Asterik sans redémarrer le serveur.

Création des utilisateurs


La création des utilisateurs se fait donc dans le fichier sip.conf
[general]
port=5060
context=default ; Default context for incoming calls
bindaddr=192.168.2.200
context=default
;allowguest=no ; Allow or reject guest calls (default is yes)
; If your Asterisk is connected to the Internet
[1000]
type=friend
context=default
5
username=1000
secret=1000
host=dynamic

[1001]
type=friend
context=default
username=1001
secret=1001
host=dynamic

Configuration du Dialplan
[default]
exten => 1000,1,Dial(SIP/1000)
exten => 1001,1,Dial(SIP/1001)
;exten => 297,n, Hangup

1. Installer Zoiper : https://www.zoiper.com/en/voip-softphone/download/zoiper3


2. Expliquer chaque mot clé ajouté dans le fichier extensions.conf.
3. Etablir une communication entre deux utilisateurs SIP.
4. Quel est le protocole de communication utilisé en effectuant une communication entre
les deux utilisateurs.
5. Expliquer les différentes étapes utilisées pour la signalisation.

Configuration de Voicemail
1. Au début il faut vérifier que le fichier /etc/asterisk/voicemail.conf contient les lignes
suivantes :

[general]
format=wav49|gsm|wav ; Formats for writing Voicemail
serveremail=asterisk ; Who the e-mail notification should appear to come from
attach=yes ; Should the email contain the voicemail as an attachment
skipms=3000 ; How many milliseconds to skip forward/back when rew/ff in message
playback
maxsilence=10 ; How many seconds of silence before we end the recording
silencethreshold=128 ; Silence threshold
maxlogins=3 ; Max number of failed login attempts
pagerdateformat=%A, %B %d, %Y at %r ; Default for pager use
sendvoicemail=yes ; Allow the user to compose and send a voicemail
maxsecs=120

; Corps du mail

emaildateformat=%A, %d %B %Y a %H:%M:%S
emailsubject=[asterisk] Nouveau message dans la boite ${VM_MAILBOX}
emailbody=Bonjour ${VM_NAME},nntLe numero ${VM_CALLERID} a tente de vous
joindre sans succes le ${VM_DATE}.nCette personne vous a laisse un message de
${VM_DUR} secondes. Vous pouvez le consulter en appelant votre boite vocale.nntBonne
journee !nntttt–Asterixn

6
pagerfromstring=[Asteriks]
pagersubject=Nouveau message vocal
pagerbody=Nouveau message de ${VM_DUR} secondes dans la boite ${VM_MAILBOX}
laisse le ${VM_DATE} par ${VM_CALLERID}.

[zonemessages]

eastern=America/New_York|’vm-received’ Q ‘digits/at’ IMp


central=America/Chicago|’vm-received’ Q ‘digits/at’ IMp
central24=America/Chicago|’vm-received’ q ‘digits/at’ H N ‘hours’
military=Zulu|’vm-received’ q ‘digits/at’ H N ‘hours’ ‘phonetic/z_p’
european=Europe/Copenhagen|’vm-received’ a d b ‘digits/at’ HM

Et tout au bout rajoutez:

[VoiceMail]
1000 => 1000,1000,@email
1001 => 1001,1001,@email

[VoiceMail] : Contexte dans lequel se trouvent nos utilisateurs


1000 : Numéro de l’utilisateur
1000 : Mot de passe pour accéder à la boite vocale
1000 : Nom de l’utilisateur
@email: Les adresses mail mises au bout sont les adresses du propriétaire de la boite.

2. Ajouter les extensions dans sip.conf

[general]
port=5060
context=default ; Default context for incoming calls
bindaddr=192.168.2.200
context=default
;allowguest=no ; Allow or reject guest calls (default is yes)
; If your Asterisk is connected to the Internet
;register => trunk_A_vers_B:azerty@192.168.2.202
[1000]
type=friend
context=default
username=1000
secret=1000
host=dynamic
mailbox=1000@VoiceMail

[1001]
type=friend
context=default

7
username=1001
secret=1001
host=dynamic
mailbox=1001@VoiceMail

3. Sur cette étape il faut configurer le fichier extensions.conf


Pour chaque utilisateur il faut ajouter la ligne avec son numéro de boite vocale.

[default]
exten => 1000,1,Dial(SIP/1000)
exten => 1000,2,VoiceMail(1000@VoiceMail)
exten => 1000,3,Hangup()

exten => 1001,1,Dial(SIP/1001)


exten => 1001,2,VoiceMail(1001@VoiceMail)

;exten => 2000,1, Log(NOTICE, Dialing out from ${CALLERID(all)} to VoiceMail (2000))
:exten => 2000,n, VoiceMailMain(${CALLERID(num)}@default,s)
exten => 2000,1, VoiceMailMain(${CALLERID(num)}@VoiceMail)
;exten => 297,1, Log(NOTICE, Dialing out from ${CALLERID(all)} to VoiceMail (297))
;exten => 297,n, VoiceMailMain(${CALLERID(num)}@default,s)
;exten => 297,n, Hangup

La ligne avec l’option VoiceMail permet d’envoyer les appels vers la boîte vocale quand vous
n’êtes pas joignable.

Partie 2 : Trunk sous Asterisk


L’objectif principal de la VOIP est la réduction des coûts. Pour arriver à ce résultat il faut
mettre en place un trunk SIP. Un trunk SIP est une liaison entre deux serveurs VOIP. Une
autre application de ce trunk SIP est la création d’un lien entre deux sites distants. Dans ce
cas, les coûts de communication entre sites se réduisent aux coûts d’abonnement d’Internet.

Activité

Le but du TP dans cette partie est de mettre en service deux serveurs Asterisk et de les faire
communiquer entre eux grâce à un lien trunk SIP. Ces deux serveurs seront des machines
virtuelles VMware Debian. Le logiciel VMware Player est téléchargeable gratuitement sur le
site officiel de http://www.vmware.com . La machine virtuelle Debian serveur minimal est
téléchargeable sur le site http://vmware.pouf.org/

8
Réalisation
Dans un premier temps, il faut configurer les deux serveurs en local avec deux plans de
numérotation distincts. En effet, il va falloir permettre aux serveurs de différencier les
téléphones de l’agence A de ceux de l’agence B. Dans notre cas, les numéros compris entre
1000 et 1999 seront dans l’agence A et les numéros compris entre 2000 et 2999 seront dans
l’agence B. Le plan de numérotation suivant sera suffisant pour faire tous les tests :

Serveur VOIP Agence A


Numéro de téléphone Nom d’utilisateur
1000 1000
1001 1001

Serveur VOIP Agence B


Numéro de téléphone Nom d’utilisateur
2000 2000
2001 2001

9
Sur le serveur de l’agence A :
- Modifiez le fichier sip.conf et ajouter les extensions de 1000 et 1001.
- Configurez les téléphones pour qu’ils s’enregistrent sur le serveur.
- Modifiez le fichier extensions.conf pour « router » les appels vers les téléphones.
- Vérifiez la configuration en passant des appels de 1000 vers 1001 et vice versa.

Faites de même sur le serveur de l’agence B en respectant le plan de numérotation.

Configuration de trunk SIP : serveur A vers serveur B

sip.conf sur Serveur A

Dans un premier temps, il faut ajouter un utilisateur dans le fichier sip.conf sur le serveur A.
Cet utilisateur est de la même forme que les autres utilisateurs.

Pour vérifier la bonne configuration, il faut afficher les utilisateurs enregistrés sur le serveur
avec les commandes suivantes :
sip show peers

sip.conf sur Serveur B

Une fois l’utilisateur créé sur le serveur A, il faut que le serveur B s’enregistre. Dans le fichier
sip.conf du serveur B il faut ajouter la ligne suivante.

[general]

register => trunk_A_vers_B:motdepasse@ip_de_serveur_A
[User]

Cette ligne permet au serveur B de s’enregistrer sur le serveur A à l’adresse @serveurA avec
le login trunk_A_vers_B et le mot de passe motdepasse.
Pour vérifier la bonne configuration, il faut afficher l’état de la ligne avec les commandes
suivantes :
sip show registry

1/Terminer cette configuration afin que l’utilisateur 1000 peut appeler l’utilisateur 2000.

10