Vous êtes sur la page 1sur 36

TP Asterisk Janvier 2011

Cahier de TP Asterisk
Module 2

Source :

http://www.asterisk.org

http://www.voip-info.org/

http://www.asteriskguru.com

http://www.frameip.com

VoIP et ToIP Asterisk ; Sbastien DEON ; ENI Editions

Accellent ; La qualit de service en voix sur IP

Loc Thomas
TP Asterisk Janvier 2011

Prsentation du projet raliser :

Une socit possde diffrents site et dsire migrer son systme tlphonique vers une solution Open
source. La solution retenue est une solution Asterisk.

Lobjectif principal est de rendre les tlcommunications inter site gratuite.

Chaque agence devra tre en mesure de communiquer avec une agence dun autre site sans avoir passer
par le rseau tlphonique public. Diffrentes fonctionnalits tlphoniques devront tre mises en uvre
sur chaque agence.

Les fonctionnalits tlphoniques mettre en uvre sont :

 Les comptes tlphoniques utiliseront le protocole SIP

 Une boite vocale pour chaque utilisateur.

 Certain utilisateurs devront avoir la possibilit de rcuprer leur message vocaux par mail.

 Chaque utilisateur devra pourvoir :

 Intercepter des appels

 Transfrer des appels

 Parquer des appels dans une file dattente

 Chaque agence devra possder un numro permettant de joindre nimporte quel poste de la hotline.

 Deux salles de confrences tlphoniques devront tre configures sur chaque site.

 Chaque site devra tre interconnects aux autres sites du groupe soit en utilisant le protocole SIP
soit en utilisant le protocole IAX.

 Chaque site devra tre interconnect au provider VoIP par le biais du protocole SIP.

 Chaque agence devra possder un standard interactif qui dirigera les appels en fonction des
besoins.

Loc Thomas
TP Asterisk Janvier 2011

Schma de linstallation :
Site de Rennes, plan de numrotation en 2xxx
Site de Lorient, plan de numrotation en 5xxx

Softphone
Softphone
IPBX : 172.16.1.20
IPBX : 172.16.1.50

Trunk Voip Trunk Voip


Softphone
CISCO IP PHONE

IP
790 5 SERIES

IP Softphone
CI SCO IP PH ONE
7905 SERIES

phone 1

4
G HI
2
ABC

5
JK L
3
DE F

6
MN O phone
4
1 2 3
ABC D EF
7 8 9
PQ RS TU V W X YZ
4 5 6
7 GHI JK L M NO
4

0 #
P R
SQ

* 7 8 9
P QR S TU V W XY Z

7
*

P
Q
R
S

* 0 #

Site de Brest, plan de numrotation en 3xxx


Site de Dinan, plan de numrotation en 4xxx
Softphone
IPBX : 172.16.1.30
Softphone Internet
IPBX : 172.16.1.40

Trunk VoIP
IP Softphone
CIS CO IP P HONE
7905 SERI ES

phone 4
1

4
GHI
2
AB C

5
JK L
6
3
D EF

MN O

7 8 9
P Q RS TU V W XY Z

Trunk Voip
7

0 #
*

Softphone
P Q
R
S

CIS CO IP P HONE

IP
7905 S ERIES

Trunk Voip
*

phone 1

4
2
ABC

5
JK L
3
DE F

6
GHI MN O
4

7 8 9
P QR S T UV W X YZ

P Q
R
S

* 0 #

Site de Quimper, plan de numrotation en 7xxx

Site de Nantes, plan de numrotation en 6xxx IPBX : 172.16.1.70

Softphone
Softphone
IPBX : 172.16.1.60

IP Softphone
C IS CO IP P H O N E
7 9 0 5 SER I ES

phone 1 2
AB C
3
D EF

Provider
4 5 6
GHI JK L MN O
4

7 8 9
P Q RS TU V W XY Z

P Q
R
S

* 0 #

VoIP
Softphone
CIS CO IP P HONE

IP
7905 S ERIES

Rseau Tlphonique Public


phone
IPBX : 172.16.1.90
1 2 3
ABC DE F

4 5 6
GHI JK L MN O
4

7 8 9
P QR S T UV W X YZ

P Q
R
S

* 0 #

C ISCO IP PHO NE
7 9 05 SERI ES

Interconnexion rseau
1 2 3
A BC D EF

4 5 6
G HI JK L M NO
4

7 8 9
P QR S T UV W XY Z

0 #
*
P
Q
R
S

tlphonique public

Loc Thomas

- 3-
TP Asterisk Janvier 2011

TP1 : Prparation serveur Asterisk dune agence

Voici le schma de la maquette mettre en uvre :

CISCO IP P HONE
7905 S ERIES

1 2 3
AB C DE F

4 5 6
GHI JK L M NO
4

7 8 9
P QR S TU V WX Y Z

P
Q R
S

* 0 #

Vous devez relier votre commutateur POE une prise murale du secteur.

Adressage de linstallation:
Serveur Asetrisk : Tlphone IP 1 : 172.16.1.x/24
Adresse IP : 172.16.1.x (x voir animateur)
Masque de sous rseau : 255.255.0.0 Station 2 : DHCP
Passerelle : 172.16.1.10
DNS1 : 172.16.1.1
DNS 2 : 10.9.0.2
Station 1 : DHCP

I. Installation du serveur.

1.1 Installation de la distribution Debian 5.0 Lenny

a) Lancez linstallation partir du DVD

Critres dinstallations

 Langue France
 Pays : France
 Clavier : fr-Latin-9
 Nom de la station : Asterisk_X ou X est votre nom de site.
 Rseau : choisissez linterface rseau que vous dsirez et notez le nom de celle-ci.
 Configuration rseau :
- Adresse IP : 172.16.1.X (voir schma pour adresse)
- Masque : 255.255.0.0
- Passerelle : 172.16.1.10
- DNS1 : 172.16.1.1
- DNS2 :10.9.0.2
 Domaine : sen.fr
 Partitionnement : Utiliser lintgralit du disque dur et raliser linstallation du systme dans une
seul partition.
 Mot de passe root : password
 Compte crer :
 Login : stagiaire
 Mot de passe : password
 Utiliser un miroir sur le rseau : non
 Participer ltude statistique : non

Loc Thomas
TP Asterisk Janvier 2011

 Installation : Installez que le systme standard (et linterface graphique si vous prfrez plus de
convivialit)
 Installer Grub sur le secteur damorage.

1.2 Modification des sources apt.

Afin de pouvoir tlcharger et installer facilement tous les packages ncessaire linstallation des
diffrents composant dasterisk, vous devez modifier le fichier sources.list.
Ce fichier contient les adresses de tous les dpts que vous utilisez pour installer des programmes sur
votre ordinateur. Par dfaut, seule la section main des dpts principaux est active.

a) Editez le fichier laide de la commande suivante,


 nano /etc/apt/sources.list
b) Ajoutez la ligne suivante dans le fichier sources.list

deb http://ftp.fr.debian.org/debian/ lenny main

deb-src http://ftp.fr.debian.org/debian/ lenny main

Pour sortir du fichier et enregistrer les modifications tapez Ctrl+X puis validez par Oui.

c) Afin deffectuer la mise jours des dpts tapez la commande suivante,


 aptitude update

1.3 Installation du service ssh

Le service ssh vous permettra de configurer distance, par le biais dun mulateur (putty), votre serveur.

 aptitude install openssh-server

1.4 Installation des modules et des dpendances spcifiques Asterisk

Installez les dpendances ncessaires qui vous permettront de compiler et dinstaller Asterisk ainsi que
dajouter certains modules dont nous aurons besoins par la suite:

Tapez la commande suivante :

aptitude install linux-headers-$(uname -r) bison openssl libssl-dev libeditline0 libeditline-dev


libedit-dev gcc make g++ mc php5-cli libxml2-dev libspandsp-dev

1.5 Tlchargement de diffrentes sources ncessaires linstallation

 Crer un dossier nomm asterisk dans le dossier /usr/src laide de la commande suivante :

mkdir /usr/src/asterisk

 Dplacez-vous dans le dossier laide de la commande suivante :

cd /usr/src/asterisk

 Lancez le tlchargement des sources en tapant les commandes suivantes :

wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.6.2.13.tar.gz

wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-addons-1.6.2.1.tar.gz

wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-
2.4.0+2.4.0.tar.gz

 La source asterisk va vous permettre dinstaller le module asterisk sur votre serveur
 La source asterisk-addons contient des addons pour le support mysql
Loc Thomas
TP Asterisk Janvier 2011

 Le module dadhi remplace le module zaptel utilis sur les anciennes versions dasterisk. Ce module
permet entre autres de grer le timer pour les confrences dans une architecture full ip.

1.6 Installation du module Dahdi.

 Vrifiez que vous tes bien dans le dossier /usr/src/asterisk.

 Dcompresser le module Dahdi laide de la commande suivante.

tar zxvf dahdi-linux-complete-2.4.0+2.4.0.tar.gz

 Dplacer vous dans le rpertoire afin de le compiler laide de la commande suivante :


cd dahdi-linux-complete-2.4.0+2.4.0
 Compiler le code laide des commandes suivantes

make all
make install

Aprs la commande make install vous devez obtenir ce rsultat :

###################################################
###
### DAHDI tools installed successfully.
### If you have not done so before, install init scripts with:
###
### make config
###
###################################################

 Installer les scripts dinitialisation laide de la commande suivante : make config

Le module dadhi est aussi utiliser pour configurer les cartes permettant de rattacher lIPBX au rseau
tlphonique public (par le biais de ligne RTC ou Bri ou Pri). Dans notre mise en situation nous travaillons
sur un rseau full IP. Nous navons donc pas besoin de carte. Il est donc judicieux de modifier le
fichier /etc/dahdi/modules . Commentez toutes lignes de ce fichier en mettant un # devant chaque
ligne.

 Lancez le module dadhi-dummy laide de la commande suivante :

modprobe dahdi_dummy

 Redmarrez le serveur laide de la commande reboot .

1.7 Installation dAsterisk

 Dplacez-vous dans le dossier /usr/src/asterisk/asterisk-1.6.2.13 .

 Compiler les sources laide de la commande suivante : ./configure

Vous devez obtenir laffichage ci-dessous :

configure: Package configured for:


configure: OS type : linux-gnu
configure: Host CPU : i686
configure: build-cpu:vendor:os: i686 : pc : linux-gnu :
configure: host-cpu:vendor:os: i686 : pc : linux-gnu :

Loc Thomas
TP Asterisk Janvier 2011

 Tapez la commande make

Vous devez obtenir laffichage ci-dessous :

Asterisk Build Complete ---------+


+ Asterisk has successfully been built, and +
+ can be installed by running: +
+ +
+ make install +
+-------------------------------------------+

 Tapez la commande make install

Vous devez obtenir laffichage ci-dessous :


+---- Asterisk Installation Complete -------+
+ +
+ YOU MUST READ THE SECURITY DOCUMENT +
+ +
+ Asterisk has successfully been installed. +
+ If you would like to install the sample +
+ configuration files (overwriting any +
+ existing config files), run: +
+ +
+ make samples +
+ +
+----------------- or ---------------------+
+ +
+ You can go ahead and install the asterisk +
+ program documentation now or later run: +
+ +
+ make progdocs +
+ +
+ **Note** This requires that you have +
+ doxygen installed on your local system +
+-------------------------------------------

 Tapez la commande make samples , cette commande va permettre de crer les fichiers
dexemples

 Il ne vous reste plus qua dfinir asterisk en tant que service sur votre serveur par le biais de la
commande suivante : make config

1.8 Installation des addons

 Dplacez-vous dans le dossier /usr/src/asterisk/ asterisk-addons-1.6.2.1 .

 Tapez les commandes suivantes :

 ./configure
 make
 make install
 make samples

 Redmarrez le serveur laide de la commande reboot .

Loc Thomas
TP Asterisk Janvier 2011

TP 2 Configuration de base du serveur Asterisk

I. Vrification des fichiers dasterisk

1.1 Visualiser les rpertoires utiliss par asterisk.


Avant de vous attaquer la configuration dasterisk il est important de savoir quels sont les rpertoires
utiliss par Asterisk. Ouvrez le fichier /etc/asterisk/asterisk.conf. Ces fichiers vous indiquent les
principaux rpertoires utiliss par le service.
nano /etc/asterisk/asterisk.conf

 /etc/asterisk contient les fichiers de configuration.


 /usr/lib/asterisk/modules contient les modules utiliss par Asterisk (codec, applications
tierces).
 /usr/share/asterisk/agi-bin contient les scripts.
 /var/lib/asterisk/firmware contient les drivers pour les cartes compatibles Asterisk (par exemple
Digium).
 /var/lib/asterisk/images contient des images dAsterisk
 /var/lib/asterisk/keys contient les cls publiques et prives (RSA).
 /var/lib/asterisk/mohmp3 contient les musiques dattente au format MP3
/usr/share/asterisk/sounds contient les annonces vocales.
 /var/log/asterisk contient les logs du processus Asterisk.

1.2 Redmarrer manuellement le service asterisk.


/etc/init.d/asterisk restart
1.3 Visualiser les fichiers de configurations

a) Visualisez le contenu du rpertoire asterisk se trouvant sous /etc.


ls /etc/asterisk

Les fichiers de configurations dasterisk sont remplis dexemple, il est donc tre important de les
sauvegardez si vous veniez raliser de mauvaise manipulations.

b) Sauvegardez les fichiers sip.conf, extensions.conf, voicemail.conf, meetme.conf et musiconhold.conf


en vous tapant les commandes suivantes :
cp extensions.conf extensions.conf.bkp
cp sip.conf sip.conf.bkp
cp voicemail.conf voicemail.conf.bkp
cp meetme.conf meetme.conf.bkp

1.4 La console asterisk.

a) Lancez la console avec la commande suivante :


Loc Thomas
TP Asterisk Janvier 2011

asterisk rvvvvv

(l'argument -vvvvv est pour le mode extra verbeux, ainsi on obtient plus de dtails sur la russite ou non
des divers vnments)

La console dadministration dAsterisk permet de voir en temps rel les actions ralises par le serveur.
Cela permet entre autre de dbugger certains problmes mais aussi de redmarrer proprement le service.

Pour connaitre les commandes disponibles sous la console vous pouvez tapez help.

Pour sortir de la console tapez la commande exit

La console vous permettra chaque fois que vous aurez modifiez les fichiers de configuration de rechargez
les nouvelles configurations.

Exemple :
 si vous avez modifi le fichier sip.conf dans la console il vous suffira de tapez la commande sip
reload.
 si vous avez modifi le fichier extensions.conf dans la console il vous suffira de tapez la commande
dialplan reload, cette commande rechargera le plan de routage des appels
 Pour recharger totalement le service Asterisk tapez la commande reload

II. Conception du plan de numrotation.

Le plan de numrotation est le cur logique du routage des appels du systme Asterisk : Il indique ce quil
faut faire chaque fois quil y a un appel entrant, sortant ou interne. Dfini dans le fichier
/etc/asterisk/extensions.conf, il fait appel au fichier /etc/asterisk/sip.conf qui contient la liste des
terminaux SIP du systme ou au fichier /etc/asterisk/iax.conf pour les tlphones ou les trunks IAX. A
noter quune extension fait gnralement allusion un numro de tlphone.

2.1 cration des comptes SIP du systme dasterisk

Le fichier sip.conf contient plusieurs sections : une section [general] et autant de sections quil y a de
clients SIP. La section [general] contient les paramtres valables pour tous les clients SIP.

a) Videz le fichier sip.conf en tapant la commande suivante

echo " " > /etc/asterisk/sip.conf

b) Creation du context [general].

Editez votre fichier avec les lignes suivantes. (Vous ntes pas oblig dcrire les commentaires).

[general]
context=default ; context par dfaut pour les utilisateurs
bindport=5060 ; port UDP du protocole SIP
bindaddr=0.0.0.0 ; adresse IP de linterface sur lequel le serveur va couter le
; trafic 0.0.0.0 pour toutes les interfaces
language=fr ; messages vocaux en franais
srvlookup=yes ; permet de faire des appels vas sur des noms DNS
disallow=all ; Codes non autoris pour une communications
allow=alaw ; codecs autoris par ordre de prfrences
allow=ulaw
Loc Thomas
TP Asterisk Janvier 2011

allow=gsm

c) Crations des contextes utilisateurs

En vous basant sur lexemple ci-dessous crez les utilisateurs suivants :


(X est votre numro de banc)

 Jean, numro de tlphone x010 avec comme mot de passe x010


 Paul, numro de tlphone x020 avec comme mot de passe x020
 Lucie, numro de tlphone x030 avec comme mot de passe x030
 Luc, numro de tlphone x040 avec comme mot de passe x040
 Tous les utilisateurs feront partie du contexte [default]

Exemple de contexte utilisateur pour un numro de tlphone 1010:

[1010]
language = fr
type = friend
username = 1010
callerid = "jean" <1010>
secret = 1010
host = dynamic
qualify =yes
nat = no

Il nest pas ncessaire de dfinir les codecs utiliser pour les utilisateurs puisquils sont dj dfinis dans
le contexte [general].

d) Une fois la configuration des utilisateurs cres ouvrez la console asterisk et tapez la commande
sip reload .

Si des erreurs dditions sont prsentes la console vous les renverra.

III. Mise en place du routage des appels.

Le fichier de configuration "extensions.conf" contient le plan de numrotation d'Asterisk. Il dcrit


comment des appels entrants et sortants sont pris en compte et conduits (ou routs). Le fichier
"extensions.conf" est organis en sections (contexte) qui peuvent contenir des paramtres ou
dfinitions statiques, ou des parties excutables du plan de numrotation, on parle alors de contextes.
Chaque contexte contient une ou plusieurs extensions ou instructions.

La syntaxe dune extension est la suivante :

 exten => numro de lappel, numro de priorit, application()

 numro de lappel : cest lextension ;


 numro de priorit : une extension peut inclure plusieurs tapes donc il faut donner des
priorits ;
 application () : cest la fonction qui est dclench lorsque lextension est appele.

3.1 videz le fichier extensions.conf laide de la commande suivante,

echo " " >/etc/asterisk/extensions.conf

Loc Thomas
TP Asterisk Janvier 2011

3.2 Editez dans le fichier extensions.conf les lignes suivantes

[general]
autofallthrough= yes ; raccrochage automatique aprs lappel
static= yes ; en binome avec l'option suivante
writeprotect = no ; modification possible depuis la CLI

[default]
Exten => 1010,1, Answer() ; Rpond un canal qui sonne
exten => 1010,2, Dial(Sip/1010) ; lorsquun appel est reu pour le poste 1010 il faut le rediriger vers le compte SIP/1010, si on
; ne peut pas joindre 101 au bout de 10s on raccroche par le biais de lapplication Hangup
exten => 1010,3,Hangup()

Nhsitez pas consulter le support de formation pour visualiser les applications les plus
courantes utiliser pour effectuer le routage des appels !!

a) Ralisez le routage des appels pour tous utilisateurs.

b) Une fois la configuration des utilisateurs cres ouvrez la console asterisk et tapez la commande
dialplan reload .

c) Configurez les trois clients VoIP pour quils senregistrer auprs du serveur et tester les
communications (softphone et tlphone IP).

 x010 sophtfone1
 x020  softphone2
 x030  Tlphone IP

3.3 Vrification du fonctionnement

a) Lancez la console asterisk

b) Tapez la commande sip show peers , la console doit vous renvoyer les adresses IP des clients
VOIP, si tous les clients sont reconnus par lIPBX.

c) Si vous tapez la commande sip show user 101 , la console vous renvois les paramtres du compte
101.

d) Lancez une communication entre deux clients voip (ne raccrochez pas), et tapez la commande
show sip channels , la commande vous renvois les clients qui sont en communications.

Loc Thomas
TP Asterisk Janvier 2011

Exercice 1 :

On souhaite raliser mettre en service une Hotline dans chaque agence. Lorsque lon appellera le
numro de tlphone x600 cela devra permettre de faire sonner tous les tlphones de ce service
tour de rle. Le la premire personne qui dcrochera rcuprera lappel.

Crez trois comptes sip pour le service technicien en fonction des indications ci-dessous :

Nom des comptes :


 Compte N 1 X110
 Compte N2  X111
 Compte N3  X112

Context  compta

Crez le plan de routage en fonction des donnes ci dessous :

Le contexte sappellera technicien


Le numro de tlphone x600 doit permettre de faire sonner tour de rle chaque tlphone du service
technicien jusqua ce quelquun dcroche. Chaque tlphone doit sonner 20 secondes.

Le contexte technicien doit tre accessible pour tous les utilisateurs de lagence.

Loc Thomas
TP Asterisk Janvier 2011

TP2 : Optimisation des fichiers de configuration

I. Optimisation du fichier sip.conf

La cration de beaucoup dutilisateurs sip peut vite devenir fastidieuse. Imaginez que vous ayez 50
comptes pratiquement similaires crer que chaque compte ncessite 8 paramtres. Une des
manires dviter davoir tous crer est de crer un template et ensuite dutiliser celui-ci pour
crer les autres comptes.
Exemple :
Voici un extrait de fichier sip.conf creez de manire classique .
[3010]
type=friend
username=3010
callerid="jean" <3010>
secret=3010
host=dynamic
qualify=yes
nat=no

[3020]
type=friend
username=3020
callerid="paul" <3020>
secret=3020
host=dynamic
qualify=yes
nat=no

Une des solutions afin doptimiser la cration dutilisateurs est dutiliser un modle et de faire en sorte que
compte se base sur le modle cre.

Exemple :
Crer un modle comme ci-dessous, puis crer les mme compte SIP comme ci-dessus, mais cette fois utilisant le modle
de la construction:

[modle](!) ; <== typecompte est le nom du modle Le point dexclamation signifie que cest un modle.
type=friend
context=default
host=dynamic
disallow=all
allow=ulaw
dtmfmode=rfc2833
context=default

[3010]( modle) <== nom du modle utiliser entre parenthses. Tous les paramtres du modle seront pris en compte
username=3010
callerid="jean" <3010>
secret=3010

[3020]( modle)
username=3020
callerid="paul" <3020>
secret=3020

Exercice 1 :

Optimiser votre fichier sip.conf afin quil soit moins indigeste lire.

Loc Thomas
TP Asterisk Janvier 2011

II. Optimisation du fichier extension.conf

2.1 Utilisation des variables globales

Un contexte [globals] peut tre en dbut de plan aprs le contexte [general] dans la fichier
extensions.conf, il permet de dfinir des variables globales pour le routage des appels. Les variables
dclares sont utilisables via la syntaxe ${variable} ou ${ENV(variable)}. Elles sont dfinies pour
toutes les extensions dans tous les contextes.

La syntaxe pour dfinir une variable est la suivante :

Nom_de_variable => Valeur_de_variable

Exemple :

[globals]
jean=SIP/x010
MusiqueAttente => /fichier_sons/son_welcome.wav

En dfinissant une variable globale pour le numro x010, le routage dappel sur ce numro va donc
ressembler ceci.

[default]
Exten => x010,1, Answer()
exten => x010,2,Dial($[jean],10)
exten => x010,3,Hangup

2.2Les priorits dans le fichier extensions.conf

Pour information, Asterisk n'a pas besoin d'ordre spcifique pour fonctionner si on utilise les chiffres dans
les priorits. Ainsi, l'exemple 1 fonctionnera de la mme manire que lexemple 2.

Exemple1 :
[default]
exten => x010,1, Answer()
exten => x010,2,Dial($[jean],10)
exten => x010,3,VoiceMail(x010)
exten => x010,4,Hangup

Exemple 2 :
[default]
exten => x010,2,Dial($[jean],10)
exten => x010,1, Answer()
exten => x010,3,VoiceMail(x010)
exten => x010,4,Hangup

Par contre, asterisk ne supporteras pas des sauts dans votre numrotation de priorits.... ainsi l'exemple
suivant enfin restera bloqu la priorit 2 :

[default]
exten => x010,2,Dial($[jean],10)
exten => x010,1, Answer()
exten => x010,4,VoiceMail(x010)
exten => x010,5,Hangup

La modification d'une extension peut tre pnible puisqu'il faut gnralement r-ordonner les priorits des
applications mise en jeu. Asterisk fourni les priorits n et s qui signifient:

 s (same) mme priorit que la prcdente

 n (next) prochaine priorit disponible

Loc Thomas
TP Asterisk Janvier 2011

Ainsi lexemple 1 deviendra :

[default]
exten => x010,1, Answer()
exten => x010,n,Dial($[jean],10)
exten => x010,n,VoiceMail(x010)
exten => x010,n,Hangup

Vous avez vu lessentiel pour constituer rapidement un plan de numrotation fonctionnel. Mais dans le cas
dune structure plus importante il faut apporter des amliorations nouvelles comme lutilisation de
variables ou de macros qui permettent de simplifier le dialplan.
Imaginez un plan de numrotation qui contient quelques dizaine dutilisateurs. Chaque utilisateur possde
3 lignes pour le routage. Cela sera fastidieux mettre en uvre. Afin de vous faciliter la tche vous
pouvez utiliser des macros.
Une macro doit tre mise entre crochet et son nom doit obligatoirement commencer par macro-
Il est bien sr possible de passer des paramtres une macro fonction, les paramtres sont
alors accessibles dans le corps de la macro fonction selon la syntaxe ${ARGn} pour le nme paramtre.
Lappel de la macro se fait laide de lapplication Macro(nom de la macro,argument 1, ,
argument n).

Les macros fonctions disposent de variables spcifiques qui sont :

 ${MACRO_CONTEXT} : contexte de lextension do la macro a t appele,


 ${MACRO_EXTEN} : extension do la macro a t appele,
 ${MACRO_PRIORITY} : priorit dans lextension do la macro a t appele.

Exemple de macro de routage dappels :

[globals]
jean=SIP/x010
paul=SIP/x020
[macro-Appel]
exten => s, 1,Answer()
exten => s, n,Dial (${ARG1},10,r)
exten => s, n, Hangup()

[default]
exten => x010,1,Macro (Dial($[jean],10)
exten => x20,1,Macro (Dial($[paul],10)

Exercice 2 :

Modifier votre fichier extensions.conf afin doptimiser le routage des appels et de le rendre plus
lisible.

2.3Les variables de canal

Pour optimiser le dialplan il est important dutiliser des variables de canal. Il existe des variables
spciales, qui sont prconfigures par le serveur Asterisk. Il est indispensable de respecter les
majuscules et les minuscules dans lcriture de ces variables.

 EXTEN : reprsente lidentifiant dextension courante.


 CALLERID(all) : reprsente le nom et le numro de lappelant.
 CALLERID(name) : reprsente seulement le nom de lappelant.
 CALLERID(num) : reprsente seulement le numro de lappelant.
 DIALEDTIME : reprsente la dure de lappel courant.
 DATETIME : reprsente la date courante (son usage est dprci).
 DIALSTATUS : reprsente ltat de lappel en cours.

Loc Thomas
TP Asterisk Janvier 2011

Explication du fonctionnement de la variable EXTEN:

La variable de canal " ${EXTEN} " correspond au numro que l'on souhaite joindre. voici un exemple
d'utilisation avec le programme SayDigits() pour savoir les chiffres taps:

exten=> _XXX , 1 , SayDigits ( ${EXTEN}) ;lire la valeur de XXX


exten=> _XXX , 1 , SayDigits ( ${EXTEN :1}) ;enlever 1ere valeur lire 2 dernier
exten=> _XXX , 1 , SayDigits ( ${EXTEN :-1}) ;lire le dernier

Loc Thomas
TP Asterisk Janvier 2011

TP3 : Configuration de chambre de confrence

Deux tapes suffisent pour mettre en place une confrence avec Asterisk : crer les salons de
confrence virtuelle (fichier meetme.conf) et y inviter des participants (fichier extensions.conf).
I. Crer des salons virtuels de confrences (fichier meetme.conf) :

Pour crer des salons de confrences, il suffit de configurer le fichier meetme.conf en ajoutant la
section [rooms] le code suivant :

conf => numero_de_conference, code_accs_simple, code_accs_administrateu

Le mot-cl Conf correspond une nouvelle salle de confrence virtuelle, dfinie au minimum par
lindication dun numro de salle (numero_de_conference). Il peut tre complt optionnellement
par un code daccs que lutilisateur devra fournir pour accder la salle virtuelle et
ventuellement dun code daccs permettant de reconnatre ladministrateur, auquel des droits
de gestion du salon virtuel sont attribus.
Par exemple :

conf => 770


permet de crer un salon ayant pour identifiant le numro 770. Nous pouvons le complter en
remplaant la ligne prcdente par :
conf => 770, 12345, 150379
Cela cre un salon didentifiant 770, auquel les utilisateurs peuvent accder en indiquant le code 12345
et dont ladministrateur didentifie par le code 150379.

Inviter des participants la confrence (application Meetme) :

Pour inviter des participants entrer dans la salle de confrence, il faut les aiguiller en utilisant le
plan de numrotation et lapplication Meetme. Pour rediriger une communication vers la
confrence prcdente, Il suffit dutiliser lappel Meetme (770) dans le fichier extensions.conf.

Par exemple, si lappelant compose le numro 770, lextension suivante linvite rejoindre la
confrence 770 :
exten => 770, 1, Meetme (770)

Il est possible dajouter en second argument de lapplication Meetme une ou plusieurs des options
rcapitules au tableau suivant (sil y en a plusieurs, les options sont indiques en se succdant sans
caractre de sparation).

Option Description
m Active le mode monitor : les participants peuvent couter, mais pas parler.
a entrer en tant qu'administrateur,
p Un participant peut quitter la confrence en pressant la touche dise.
c annonce le nombre de personnes prsentes lorsque l'on joint une confrence,
t Active le mode talk : les participants peuvent parler mais ne pas couter.
i annonce quand les personnes entrent ou quittent la confrence,
v Active le mode vido.
q Mode silencieux (quiet) : aucun son nest mis lorsque des utilisateurs entrent
dans la confrence ou en sortent.
s permet de prsenter le menu utilisateur ou administrateur si la touche * est
presse,
d Ajoute une confrence dynamiquement.
M Active une musique dattente lorsquil ny a quun seul participant la
confrence.
b Lance le script AGI spcifi dans la variable MEETME_AGI_BACKGROUND (celle-
ci doit avoir t initialise auparavant).

Loc Thomas
TP Asterisk Janvier 2011

Exercice : cration de chambre de confrence:

1. Crer une salle de confrence (x400) en accs libre et testez son fonctionnement.

2. Crer une salle de confrence (X401) avec accs scuris par mot de passe, vous attribuerez
un mot de passe invit (1234) et un mot de passe administrateur (5678).

3. Crer une salle de confrence (X402). Lors de laccs cette confrence il faut annoncer le
nombre dutilisateur et sil ny a quun seul utilisateur il faut jouer une musique dattente. Il
faut aussi annoncer lorsquun un utilisateur entre ou quitte la salle de confrence. Les
participants doivent quitter la salle de confrence en appuyant sur la touche dise. Testez son
fonctionnement

4. Crer un accs dynamique (X410) aux salles de confrence.

Loc Thomas
TP Asterisk Janvier 2011

TP4 : Configuration boites vocale et messagerie

La configuration se passe dans le fichier /etc/asterisk/voicemail.conf, la messagerie vocal peut


tre invoquer grce laction Voicemail, et peut tre consult grce laction
VoicemailMain, elle permet de laisser un message, de notifier larriv dun nouveau message par mail, de
consulter et de sauvegarder ses messages. Diffrentes options sont disponibles pour la configuration
globale du Voicemail.

I. Cration des boites vocales des utilisateurs.

Vous allez travers les diffrentes manipulations crez la boite vocale pour lutilisateur x010.

1.1 Videz le fichier voicemail.conf et ditez les lignes suivantes.

[general]
format= gsm |wav|wav49 ; format des message vocaux
attach= no ; attach lors de lenvoi par mail

[default]
x010=> x010,x010

1.2 Ouvrez le fichier extensions.conf et ditez la ligne suivante pour lutilisateur 101. Attention
il faut le mettre en priorit 3.

exten => x010,3,VoiceMail(x010) ; si 101 na pas dcroch lextensions N 3 enverra lmetteur de lappel sur la boite
vocale n x010

Vous venez de crer la boite vocal pour lutilisateur 101, testez la en appelant depuis un autre tlphone
(ne dcrochez pas). Laissez un message.
Vous devez maintenant en tant quutilisateur 101 consultez vos message vocaux. Il faut crez un routage
vers la messagerie vocale.

1.3 Ouvrez le fichier extensions.conf et ditez la ligne suivante en fin de fichier.

exten => 96,1,VoicemailMain()

Ici le numro qui permet de joindre la boite vocale est le 95. Linconvnient de cette ligne est que lorsque
que lon appel il peut tre fastidieux de devoir dfinir le numro de boite que lon dsire. En effet la
majeure partie du temps les utilisateurs consulte leur messagerie partir de leur propre tlphone.

1.4 Ouvrez le fichier extensions.conf et ditez la ligne suivante en fin de fichier.

exten => 95,1,VoicemailMain(${CALLERIDNUM})

La variable CALLERIDNUM dfint le numro de lappelant.

1.5 Crez les boites vocales des autres utilisateurs et testez leur fonctionnement.

1.6 Mettre en franais la langue de la boite vocale.

Comme vous lavez constat, par dfaut les voix de la boite vocale sont en anglais. Vous allez travers les
manipulations suivantes les passer en franais.

a) Les voix sont prsentent sur le CD-ROM. A laide de loutil Winscp ou de FileZilla copiez le fichier
dans le dossier /usr/share/asterisk/sounds

Loc Thomas
TP Asterisk Janvier 2011

Tapez la commande suivante pour les dcompresser,

tar xvzf asterisk-core-sounds-fr-gsm-current.tar

b) Relancez le service asterisk

c) Testez les voix de la boite vocale

1.7 Personnalisation des boites vocales

Vous pouvez donnez aux utilisateurs la possibilit de personnalis les boites vocales. Diffrentes options
sont disponibles. En effet le correspondant joindre peut soit tre absent soit tre en cours de
communications.

a) Personnalisation des messages de la boite vocale de lutilisateur x010

Accdez la boite vocale de lutilisateur x010 et accdez aux options lorsque lopratrice vous le propose.
Enregistrez un message pour spcifiez que x010 est non disponible et un message pour spcifiez que x010
est occup.

 Accdez aux options de la bote vocale, tapez 0


 Pour le message de non disponibilit tapez 1
 Pour le message qui spcifie que vous tes occup tapez 2

b) Modifications du fichier extensions.conf

exten => x010,1,Answer()


exten => x010,2,Dial($[jean],10)
exten =>x010,3,Voicemail(ux010@default) ; si Jean est indisponible lappelant entendra un message
dindisponibilit (u pour unvailable)
exten =>x010,4,Voicemail(bx010@default) ; si jean est occup par un autre appel, un saut lextensions 102 (n+101)
est efectu et lappelant entendra un message doccupation (b pour busy)
exten =>x010,5,Hangup

c) Raliser la mme opration pour les autres utilisateurs.

II. Envoi des messages vocaux par mail.

Il est possible sous asterisk de pouvoir envoyer directement les messages vocaux reus sur notre boite
mail.La premire tape consiste installer un service de messagerie sur lIPBX. Le service de messagerie
installer sera ici Postifx.

2.1 Tapez la commande suivante pour installer postfix

Aptitude install postfix

2.2 Editiez le fichier main.cf qui se trouve sous /etc/postfix. Modifiez la ligne suivante.

relayhost = 172.16.1.1

172.16.1.1 est le serveur de messagerie de la section, cest un serveur Microsoft exchange 2003.

2.3 Editez le fichier voicemail.conf et modifiez les paramtres suivants :

section [GLOBAL]
format= gsm |wav|wav49
attach=yes ; envoi le message vocal par mail.
Maxmessage=180 ; Taille maximum du message en secondes
Minmessage=3 ; taille minimum du message
Review=yes ; permettre lmetteur de rentendre ou de renregistrer son message avant de la

Loc Thomas
TP Asterisk Janvier 2011

; sauvegarder
emailsubject=Nouveau message vocal provenant de ${VM_CIDNAME}

emailbody=\n\tBonjour ${VM_NAME},\n\n\t Tu as un message de la part de ${VM_CIDNAME} d'une du$ de


${VM_DUR} datant du ${VM_DATE}

Dans la section [Default]


x010=> x010,x010,x010@sen.fr ; ici le troisime champ dfinis ladresse mail pour envoyer le ;
message vocal.

2.4 Ralisez les tests permettant de valider le bon fonctionnement des messages vocaux.

2.5 Vous pouvez accder la boite mail des clients par loutil web mail dexchange (OWA) ou
vous pouvez installer et configurer Outlook 2003.

LURL est http://172.16.1.1/exchange


Compte : sen\ user
Mot de passe : idem mot de passe compte tel

2.6 Ralisez la mme opration pour les autres utilisateurs.

Loc Thomas
TP Asterisk Janvier 2011

TP6 : Interconnexion des agences avec le protocole SIP

I. Prsentation des trunk SIP

Pour interconnecter les diffrents sites entre eux vous allez dans un premier temps mettre en place
un trunk SIP entre deux IPBX. Un trunk SIP est une connexion SIP faite entre 2 serveurs SIP pour faire
passer des appels entre les tlphones lis ces serveurs.

Prenons lexemple entre lIPBX de Lorient et ce lui de RENNES :

CISCO IP PHO NE
7 9 05 SE RIES

CISCO I P PH ONE
7 90 5 SERIE S

1 2 3
ABC D EF

4 5 6
G HI J KL M NO
4

7 8 9
P QR S TU V W XYZ

7
1 2 3
0 # AB C D EF
SQ
R
P

*
4 5 6
GH I JK L M NO
4
*

7 8 9
P QR S TU V W XYZ

0 #
*
P
Q
R
S

Le plan de numrotation du site de rennes est en 2000 alors que le plan de numrotation de Lorient est en
5000. Dans cet exemple, lorsquun utilisateur de Rennes souhaite communiquer avec un utilisateur du
site de Lorient il faut que lipbx redirige les appels vers le site Lorient et plus prcisment vers lIPBX qui
gre cette structure. C'est--dire que depuis le site de rennes tous les appels commenant par 5 et qui
sont cods sur 4 chiffres doivent tre envoys sur le trunk sortant.

II. Configuration du trunk

Pour crer un trunk sip il faut crer des comptes spcifiques. Ces comptes permettront
lauthentification auprs des serveurs opposs pour ltablissement du trunk.

2.1 Configuration des comptes sip pour lenregistrement :

Les paramtres configurer :


Le paramtre type :

Avec les comptes SIP ou IAX il existe trois sortes d'utilisateurs :

 peer : Pour dsigner un utilisateur qui pourra s'authentifier que vers un autre serveur
 user : Pour dsign un utilisateur qui pourra tre authentifi que depuis un autre serveur ou
tlphone compatible IAX
 friend :Un utilisateur qui pourra tre authentifi vers ou depuis un autre serveur

Dans notre cas nous allons crer un utilisateur de type "friend" se qui nous permettra de configurer
qu'un seul utilisateur par serveur
En gnral les comptes de type "user" ou "peer" ne sont utilis que pour les liens mono directionnels

Le paramtre host :

Le paramtre host dsigne l'adresse IP ou le nom de domaine de l'utilisateur distant, ce qui permet de
s'authentifier vers le serveur oppos.

Nous pouvons aussi mettre host=dynamic dans le cas ou on ne connais pas l'adresse du serveur distant,
mais dans ce cas l'utilisateur distant devra s'authentifier vers notre serveur.

En cas d'utilisation d'un nom de domaine mis a jour dynamiquement comme dyndns.org il faudra modifier
le fichier dnsmgr.conf pour qu'Asterisk vrifie les entres DNS du serveur distant intervalles rguliers.

Le type dauthentification :

Lorsque nous utilisons une cl partage de type RSA il faut affecter les paramtres suivants :
 auth=rsa
 inkey=cls publiques distantes
 outkey=cl priv locale
Loc Thomas
TP Asterisk Janvier 2011

Lorsque nous utilisons un mot de passe de type MD5 :


 username= nom d'utilisateur
 md5secret= mot de passe crypter en MD5

Lorsque nous utilisons un mot de passe de type "plain text" :


 username= nom d'utilisateur
 secret= mot de passe non crypt

Ici nous ne mettrons pas en place de scurit particulire. Le mode dauthentification utilis sera plain
text .

Le paramtre context :

context= Dfini le contexte dans lequel les appels distants arrivent

Le paramtre trunk :

trunk= Le paramtre trunk dfini si nous voulons crer un "trunk" avec le serveur distant

Un "trunk" est une faon de limiter la bande passante utilise par le protocole vers un serveur distant.Si
vous avez 10 communications simultanes vers le mme serveur avec le protocole Ulaw, le total de bande
passante ne sera pas 10 X 64Kb/s. En effet, le trunk va permettre de regrouper les paquets tcp pour
consommer moins de bande passante

Le paramtre qualify :

Le paramtre qualify=yes ou qualify=<milisecondes> permet de savoir si le serveur distant est toujours


joignable.

Par dfaut Asterisk envoie des requtes ping toutes les 2000ms pour savoir si le serveur distant rpond. Ce
paramtre permet aussi certaines applications de gestion d'Asterisk de savoir si le lien est connect ou
mort.

2.2 Cration des comptes sip dauthentification

Configuration du compte sip dauthentification sur lIPBX de Lorient :


[rennes]
type=friend
secret=welcome
context=fromrennes
host=dynamic
trunk=yes
qualify=yes

Configuration du compte sip dauthentification sur lIPBX de Rennes :


[lorient]
type=friend
secret=welcome
context=fromlorient
host=dynamic
trunk=yes
qualify=yes

2.3Enregistrement des trunk SIP

Il faut maintenant spcifier sur chaque serveur quil doit senregistrer sur le serveur distant.

Sur lIPBX de Lorient :

Dans le context [general] il faut spcifier la ligne suivante :

register => lorient:welcome@172.16.1.30/rennes


Loc Thomas
TP Asterisk Janvier 2011

Sur lIPBX de Rennes :

Dans le context [general] il faut spcifier la ligne suivante :

register => rennes:welcome@172.16.1.50/lorient

2.4Vrification des enregistrements

Les exemples ci-dessous sont effectus partir du serveur de Lorient :

Sous la console asterisk tapez la commande sip show peers pour vrifier que le lien truk est bien
mont.

La dernire ligne nous montre que lon est bien connect avec sur le serveur de rennes avec le compte
lorient.

Tapez la commande sip show registry pour vrifier que lauthentification sur le trunk est bien
ralise.

2.5Affichage des informations dun lien trunk SIP en cours dutilisation

Pour vrifier les liens en cours dutilisation tapez la commande sip show channels :

Description des champs:

 Channel: identification du channel


 Peer: adresse IP de l'utilisateur IAX
 UsernameID: nom d'utilisateur IAX
 Seq:(Tx/Rx): nombres de paquets envoys
 Format: codec utilis

III. Configuration du fichier routage des appels

Une fois les tapes prcdente raliss vous ne pouvez normalement pas tablir dappel. Il faut
prsent configurer le diaplan (fichier extensions.conf).

3.1 Routage des appels sortants

Configuration du fichier extensions.conf du serveur de Lorient :

Pour pouvoir mettre un appel il faut spcifier le routage des appels. Dans votre contexte de routage
dappel principal rajouter les informations ci-dessous :

Loc Thomas
TP Asterisk Janvier 2011

[default]

include => appelversrennes

[appelversrennes]
exten => _2XXX,1,NoOp() ; Noop (): cette opration ne fait rien. En fait, il peut tre
; utilis comme l'cho de l'interface ligne de commande (CLI).
exten => _2XXX,n,Dial(SIP/rennes/${EXTEN}) ; Ici lorsque le numro joindre commence par 2 et est
; compos de 4 chiffres on envoi la requte sur le
; trunk vers rennes
exten => _2XXX,n,Hangup()

Configuration du fichier extensions.conf du serveur de Rennes :

[default]
include => appelverslorient

[appelverslorient]
exten => _5XXX,1,NoOp()
exten => _5XXX,n,Dial(SIP/lorient/${EXTEN})
exten => _5XXX,n,Hangup()

3.2Routages des appels entrants

Les appels entrants arrivent sur votre serveur avec le nom de contexte dfinis sur le compte sip qui
vous permet de vous authentifier. Par exemple si vos appelez depuis Lorient un poste du site de
rennes lappel va tre dirig vers le context dfinis sur lutilisateur (rappelez vous sur votre compte
sip vous avez dfinis fromlorient).

Pour les appels entrant il faut donc que vous autorisiez le context [fromlorient] communiquer avec
le context de votre routage par dfaut (ici default).

 Il faut donc rajouter les lignes suivantes sur le serveur de Rennes :

[fromlorient]
include => default

 Et rajouter les lignes suivantes sur le serveur de Lorient :

[fromrennes]
include => default

Exercice

A partir des informations prcdentes, faites en sorte (en partenariat avec les autres stagiaires)
que tous les sites peuvent emmtre et recevoir des appels depuis tous les autres sites.

Loc Thomas
TP Asterisk Janvier 2011

TP 7 Interconnexion des agences avec le protocole IAX.

I. Comparaison entre SIP et IAX.

Linterconnexion de sites dIPBX distant peut tre ralise de plusieurs faons soit par le biais du
protocole SIP comme vous venez de le raliser, soit par le biais du protocole IAX.

La problmatique de lutilisation du protocole SIP pour linterconnexion des sites distant qui utilise des
IPBX a base dasterisk est dconseille. Expliquons le principe de fonctionnement du protocole SIP et du
protocole IAX.

Cas dutilisation dappels vocaux en interne :

La liaison entre le serveur Asterisk et les postes VoIP locaux doit tre directe, c'est--dire ne passer
par aucun systme de NAT. Il est cependant recommand de ne pas la placer sur le mme rseau IP que
les postes, et d'appliquer un filtrage entre le serveur Asterisk et les postes locaux.

Pour que les tlphones IP puissent joindre Asterisk : cela se fait juste par routage uniquement, avec
quelques ports ouvrir.

 Protocole IAX : il faut laisser passer les paquets destination de 4569/udp vers le serveur Asterisk
 Protocole SIP : le serveur doit pouvoir recevoir tout paquet 5060/udp ainsi que tout paquet RTP,
c'est--dire tout paquet UDP dont le port de destination se situe entre 61000 et 62000 (limites
indiques dans le fichier /etc/asterisk/rtp.conf, que vous pouvez adapter si besoin) ;

Pour que Asterisk puisse joindre les tlphone IP : toujours juste par routage, sans NAT.

 Protocole IAX : il faut laisser passer les paquets provenant de 4569/udp depuis le serveur Asterisk.
 Protocole SIP : le serveur doit pouvoir envoyer aux postes VoIP des paquets provenant de son port
5060/udp, ainsi que tout paquet RTP, c'est--dire tout paquet UDP dont le port source se situe
entre 61000 et 62000.
Interconnexion de sites en passant par Internet :

Les filtrages sont identiques ceux indiqus ci-dessus. Il faut grer les deux protocoles IAX et SIP, dans
les deux sens (pour appeler et pour tre appel) :
 mettre et recevoir des appels IAX : il suffit d'ouvrir 4569/udp, dans les deux sens ;
 mettre et recevoir des appels SIP : il faut que le serveur Asterisk puisse
 envoyer des paquets vers Internet sur 5060/udp ;
 recevoir des paquets 5060/udp ;
 envoyer des paquets RTP, c'est--dire tout paquet UDP dont port source UDP est compris entre
61000 et 62000 (voir /etc/asterisk/rtp.conf) ;
 recevoir tous les paquets RTP, c'est--dire UDP vers ses ports 61000 62000/udp.

SIP n'est pas un protocole qui transfert la voix. C'est juste un Protocole d'Initiation de Session (Session
Initiation Protocol) qui permet entre autre deux machines de se mettre d'accord sur les flux qu'elles vont
utiliser pour s'changer des informations. Il ne suffit donc pas de laisser passer SIP pour que la
communication passe : il faut aussi laisser passer les flux qui vont tre ngocis pour transporter les
donnes. Ces flux sont en gnral des flux UDP, utilisant un protocole nomm RTP.
On a alors deux solutions, la simple-pas-trs-regardante-mais-efficace et la jolie-mais-pas-garantie--
100%.
Solution simple et efficace : forcer une plage de ports UDP spcifique pour le procole RTP
On demande au serveur Asterisk de ngocier les ports UDP dans une certaine plage, par exemple entre
61000/udp et 62000/udp. C'est le protocole RTP (Real Time Protocol) qui va grer les flux, c'est lui que SIP
va piloter par ngociation. La configuration de la plage de ports se fait donc dans /etc/asterisk/rtp.conf.
Au niveau du filtrage, on peut alors autoriser en entre tous les paquets UDP pour cette plage, et en sortie
(s'il y a un filtrage en sortie) tous les paquets mis par Asterisk depuis cette plage.
Loc Thomas
TP Asterisk Janvier 2011

Solution un peu plus lgante mais moins garantie (ncessite un firewall avec noyau).
On peut mettre en place le suivi de connexion ddi SIP sur le pare-feu. Le module nf_conntrack_sip va
analyser les paquets SIP (5060/udp et tcp) qui transitent sur la machine et il ouvrira de faon dynamique
les flux UDP en fonction des ngociations en cours. Cependant, l'tude de divers client SIP montre que
tout le monde ne respecte pas forcment le format de ngociation et il n'est pas impossible que cette
solution ne fonctionne pas avec certains clients. Nanmoins c'est une solution tester, mme si en terme
de scurit elle n'est pas vraiment beaucoup plus efficace que la solution simple ci-dessus.

Pour conclure : Il suffit de retenir que pour interconnecter diffrents sites distant il est ncessaire
douvrir plusieurs ports sur le pare feu ce qui amoindri la scurit du rseau local alors quen
utilisant le protocole IAX il suffit douvrir le port 4569 en utilisant le protocole UDP. Cette solution
est la plus efficace.

II. Configuration pour linterconnexion de site distant en utilisant le protocole IAX.

Dsactiver dans le fichier sip.conf les comptes qui taient ncessaire pour linterconnexion via le
protocole sip ainsi que les lignes qui permettaient lenregistrement (mettez un ; devant chaque ligne
pour les passer en commentaires).
Pour configurez linterconnexion dIPBX Asterisk par le biais du protocole Asterisk il faut modifier le
fichier IAX.conf.
Vous allez travers les manipulations suivantes interconnecter deux serveurs par le biais du
protocole IAX. Mettez vous daccord avec un autre stagiaire pour effectuer les manipulations
suivantes.
2.1Configuration les fichiers iax.conf et extensions.conf pour raliser le trunk IAX.

La configuration du fichier iax.conf est trs similaire celui du fichier sip.conf.


Exemple de configuration dun trunk IAX :

CISCO IP PHO NE
7 9 05 SE RIES

CISCO I P PH ONE
7 90 5 SERIE S

1 2 3
ABC D EF

4 5 6
G HI J KL M NO
4

7 8 9
P QR S TU V W XYZ

7
1 2 3
0 # AB C D EF
SQ
R
P

*
4 5 6
GH I JK L M NO
4
*

7 8 9
P QR S TU V W XYZ

0 #
*
P
Q
R
S

Mise en uvre du trunk sur les deux serveurs :

Configuration du fichier iax.conf du site de rennes :


[general]
bindport=4569 ; bindport and bindaddr may be specified
bindaddr=0.0.0.0 ; NOTE: bindport must be specified BEFORE
bandwidth=low
disallow=lpc10
jitterbuffer=no
forcejitterbuffer=no
allow=ulaw
autokill=yes
register => rennes:welcome@172.16.1.50 ; ligne permettant lenregistrement
[lorient]
type=friend
auth=plaintxt
secret=welcome
context=fromlorient
host=dynamic
trunk=yes
qualify=yes
Loc Thomas
TP Asterisk Janvier 2011

Configuration du fichier IAX.conf du site de Lorient :


[general]
bindport=4569 ; bindport and bindaddr may be specified
bindaddr=0.0.0.0 ; NOTE: bindport must be specified BEFORE
bandwidth=low
disallow=lpc10
jitterbuffer=no
forcejitterbuffer=no
allow=ulaw
autokill=yes
register => lorient:welcome@172.16.1.20
[rennes]
type=friend
auth=plaintxt
secret=welcome
context=fromrennes
host=dynamic
trunk=yes
qualify=yes

Configuration des appels sortant du site de Lorient :


Fichier extensions.conf :
[appelversrennes]
exten => _2XXX,1,NoOp()
exten => _2XXX,n,Dial(IAX2/rennes/${EXTEN})
exten => _2XXX,n,Hangup()

Configuration des appels sortant du site de Rennes :


Fichier extensions.conf :
[appelverslorient]
exten => _5XXX,1,NoOp()
exten => _5XXX,n,Dial(IAX2/lorient/${EXTEN})
exten => _5XXX,n,Hangup()

2.2Vrification du trunk IAX.


Comme pour le trunk sip il existe en mode CLI sous asterisk des commandes de vrification et de
dbuggage du trunk IAX.

a) Vrification de l'tat des liens IAX : commande iax2 show peers


Remarques : on utilise la commande iax2 car on est la deuxime version dIAX aujourdhui.
Commande : iax2 show peers
rennes*CLI> iax2 show peers
Name/Username Host Mask Port Status
lorient XXX.XXX.XX.XX (S) 255.255.255.255 4569 (T) OK (25 ms )
1 iax2 peers [1 online, 0 offline, 0 unmonitored]

Explication des champs:


Name/Username: affiche le nom de la connexion
Host: affiche l'adresse IP de l'utilisateur
(S): affiche si l'adresse IP de l'utilisateur est statique
(D): affiche si l'adresse IP de l'utilisateur est dynamique
Mask: affiche le masque de sous rseau
Port: affiche le port IAX utilis
(T): affiche si le lien est un "trunk"
Status:
affiche si le lien est OK avec les [ms] de lag
affiche UNREACHABLE si le status du lien est mort
affiche UNMONITORED si le status du lien n'est pas monitorer ou inconnu
Loc Thomas
TP Asterisk Janvier 2011

b) Affichage des informations d'un lien IAX en cours d'utilisation

Commande : iax2 show channels


Exemple:
asterisk*CLI> iax2 show channels
Channel Peer UsernameID (Lo/Rem)Seq (Tx/Rx) Lag Jitter JitBuf Format
IAX2/rennes-16385 XXX.XXX.XX.XX lorient 16385/16385 00007/00004 00000ms -0001ms 0000ms ulaw
1 active IAX channel

Explications des colonnes:


Channel: identification du channel
Peer: adresse IP de l'utilisateur IAX
UsernameID: nom d'utilisateur IAX
(Tx/Rx): nombres de paquets envoys
Lag: LAG du lien IAX
Jitter: Jigue
JitBuf:
Format: codec utilis
c) Affichage des statistiques d'un lien IAX en cours d'utilisation

Commande : iax2 show netstats

Exercice :

En vous basant sur les explications ci-dessus, raliser un trunk IAX avec un site de votre choix.

III. Scurisation du trunk IAX.

Il est indispensable de scuriser un trunk sip. C'est--dire de scuriser lauthentification de celui-ci. Pour
cela il existe diffrentes mthodes soit vous crypter votre mot de passe (technologie md5) ou (solution plus
judicieuse) vous utiliser des cls de type de RSA.

3.1 Cration des cls RSA.

Dans les explications ci-dessous nous nous baserons toujours sur notre exemple dinterconnexions de
sites mis en ouvre prcdemment.
Pour gnrer des cls de cryptage RSA, ASTERISK nous fourni un utilitaire: "astgenkey".
Les cls RSA doivent se trouver dans le rpertoire /var/lib/asterisk/keys .
L'utilitaire "astgenkey" gnre deux cls, une cl publique mettre sur le(s) poste(s) client(s) et une cl
prive garder sur le serveur.

Remarque : Il est important que la cl prive ne soit accessible que par Asterisk, car si quelqu'un arrive
prendre cette cl il pourra dcrypter la cl plus facilement.
 Pour gnrer une cl il suffit de se dplacer dans le rpertoire de stockage des cls d'Asterisk et de
lancer l'application "astgenkey"
cd /var/lib/asterisk/keys
 Lorsque nous lanons astgenkey nous mettons le paramtres '-n' car par dfaut "astgenkey"
demande une "passphrase" chaque dmarrage d'Asterisk. Avec le paramtres '-n' il enregistre la
cl sans "passphrase".
astgenkey n

This script generates an RSA private and public key pair


in PEM format for use by Asterisk. You will be asked to
enter a passcode for your key multiple times. Please
enter the same code each time. The resulting files will
Loc Thomas
TP Asterisk Janvier 2011

need to be moved to /var/lib/asterisk/keys if you want


to use them, and any private keys (.key files) will
need to be initialized at runtime either by running
Asterisk with the '-i' option, or with the 'init keys'
command once Asterisk is running.

Press ENTER to continue or ^C to cancel.

 Appuyez sur <ENTER> et tapez le nom de la cl que vous voulez crer lorient dans notre
exemple.
Enter key name :lorient

 Une fois les cls gnres il affiche le rsultat:

Generating SSL key lorient :


Generating RSA private key, 1024 bit long modulus
..................++++++
............................................++++++
e is 65537 (0x10001)
writing RSA key
Key creation successful.
Public key: lorient.pub
Private key: lorient.key

 La cl .pub est la cl publique et la cl .key et la cl prive.


Pour transfrer la cl publique sur notre serveur "client" il suffit juste de la copier dans le rpertoire
/var/lib/asterisk/keys

 Pour copier la cl vous pouvez utiliser lutilitaire Winscp fournis sur le CD ou utiliser la
commande suivante.
Exemple partir de lIPBX de Lorient

scp lorient.pub root@172.16.1.20:/var/lib/asterisk/keys/

Exercice :

Raliser la mise en ouvre du trunk IAX par le biais dune scurisation base de cl RSA.

Remarque: Etant donn vous allez crer une interconnexion bidirectionnelle, il faudra gnrer 2 paires de
cls de nom diffrent sur les deux serveurs. Ensuite il faudra copier la cl publique de chaque machine
sur le serveur oppos dans le rpertoire /var/lib/asterisk/keys. Attention il vous faudra aussi modifier les
paramtres dautentification sur les clients et aussi dans la ligne denregistrement. Voir exemple ci-
dessous.

Exemple fichier iax.conf de lIPBX de Lorient :

register => lorient:[clRSA]@172.16.1.20

[rennes]
type=friend
auth=rsa
inkey=lorient
outkey=rennes
context=fromrennes
host=dynamic
trunk=yes
qualify=yes

Loc Thomas
TP Asterisk Janvier 2011

TP 8 Interconnexion des agences avec le provider VOIP

Il existe de nombreux acteurs qui proposent leurs clients de communiquer en utilisant le protocole
de signalisation SIP. Cest le cas, par exemple des fournisseurs daccs franais Free et Neuf
Tlcom, Orange, mais aussi de la part de plusieurs socit de VoIPDiscount Ippi, Kiwak

Bien souvent, ces comptes sont associs des conditions tarifaires trs avantageuses,
notamment la gratuit des appels dans plusieurs dizaines de pays. Pourquoi ne pas faire profiter
Asterisk de ce compte ?

Lide ici serait alors de disposer dun compte SIP que nous procure lune de ses socits, et de
configurer Asterisk avec celui-ci. De cette manire tous les tlphones relis au serveur
Asterisk pourront bnficier des mmes conditions tarifaire de leur compte SIP.

Les avantages sont multiples :

 Tous les tlphones connects Asterisk peuvent tirer profit du compte SIP, mme sils ne
sont pas compatibles SIP, puisque Asterisk sert de passerelle.

 Les services activs sur Asterisk restent disponibles dans le cadre des communications
effectues via le compte SIP (journalisation des appels, enregistrement du carnet dadresses,
etc.).

 Les utilisateurs connects nont pas configurer leur logiciel avec le compte SIP (ils nont
mme pas besoin de le connatre).

 Si le fournisseur SIP propose un numro dappel entrant, il nest pas ncessaire davoir un
logiciel SIP spcifique qui soit actif, ni mme un tlphone de VoIP compatible SIP pour
recevoir les communications : Asterisk pourra tre conifgur pour recevoir tous les appels
entrants vers ce numro dappel et les rediriger vers nimporte quel tlphone.

Dans les manipulations suivantes on va considrer que lon possde un compte SIP pour chaque
agence.
Ces comptes SIP sont en ralit virtuels car la section comporte un provider voip qui permet de simuler
les appels vers le rseau extrieurs.

Exercice :

Raliser linterconnexion par le biais dun trunk SIP avec le provider VOIP. Testez laccs
celui-ci. Basez-vous sur les filtres dextensions ci dessous. Pour tablir un contexte dappel
entrant assez simple.

Remarque :

Les filtres dextension Il est possible de dfinir des identifiant dextension forms dun filtre, ou
pattern, qui reprsente une syntaxe gnrique didentifiant. Cela permet doffrir un service gnrique
des groupes dutilisateurs ou des services spcifiques. En particulier, cela permet de distinguer les
appels locaux des appels internationaux en fonction des prfixes de numrotation.

Tout filtre dextension est prcd dun caractre de soulignement (underscore). Les caractres
spciaux permettant de dfinir un filtre sont dfinis ci dessous

Filtre Description
chane_quelconque Impose la prsence de la chane chane_quelconque dans lidentifiant
dextension.
[caractres_quelconques] Remplace un caractre dans un identifiant dextension parmi lun de ceux
mentionns entre les crochets.
X Remplace un chiffre entre 0 et 9 dans un identifiant dextension.

Loc Thomas
TP Asterisk Janvier 2011

Z Remplace un chiffre entre 1 et 9 dans un identifiant dextension.


N Remplace un chiffre entre 2 et 9 dans un identifiant dextension.
. Remplace nimporte quel caractre ou srie de caractres. Cest donc un
caractre
joker qui ne devrait tre indiqu quavec un filtre suffisamment descriptif.

La position des caractres spciaux doit tre respecte pour correspondre lidentifiant dextension
filtr.

Lexemple suivant :

_0142XXXXXX

Sapplique nimporte quelle extension commenant par 0142 et ayant une longueur de 10 chiffres.

Lexemple suivant :

_0Z[12589]XXX

Sapplique une extension ayant pour premier caractre le chiffre 0, pour deuxime caractre
un chiffre entre 1 et 9, pour troisime caractre un chiffre parmi les valeurs 1, 2,5, 8 ou 9, puis, pour les
trois caractres suivants (les trois symboles X), une valeur quelconque entre 0 et 9 et enfin pour le
septime caractre (le symbole point) un ou plusieurs chiffres quelconques. Au total, le numro fait un
minimum de sept chiffres, le maximum ntant pas mentionn.

Le filtre _. (underscore suivi dun point) remplace nimporte quel caractre ou srie de caractres,
autrement dit il sapplique toutes les extensions. Ce filtre dextension ne devrait donc jamais tre
utilis, puisquil est toujours vrifi et sapplique sans restriction tous les appels.

Loc Thomas
TP Asterisk Janvier 2011

TP 9 : Les discriminations dappels

Les discriminations dappel sont rgulirement utilises en tlphonie dentreprises. En effet cela
permet de limiter les appels vers lextrieur pour certains utilisateurs. Vous avez vu, prcdemment,
que pour autoriser ou non certains utilisateurs appeler vers lextrieur ou vers dautres groupes
dutilisateur il est important de bien ngocier les contextes. Une fonction horaire peut aussi tre
implmente sur les contextes.

La discrimination horaire permet dautoriser les appels dans une plage de temps dfinie. On peut
dfinir cette plage de temps en fonction :

 du jour de la semaine
 de lheure
 du jour du mois
 du mois

La syntaxe est la suivante :

include => context|days|times|days of month|months of year

Dans lexemple suivant, les appels ne seront possible que du lundi au mardi de 6h 20h, au mois de
mars 2011

[discriminationhoraire]

include => local|Mon-Tue|6am-20pm|mar|2011

Exercice :

Configurer vos contexte pour faire en sorte que vos utilisateurs ne puisse mettre des appels
vers les sites distants de 8h00 17h00 et quils ne puissent appeler vers le rseau public que
de 6h00 22h00 quelque soit le jour et lanne.

Loc Thomas
TP Asterisk Janvier 2011

TP 10 : Ralisation dun IVR

I. Les IVR.

LIVR (Interactive Voice Responder ou Rpondeurs Vocaux Interactifs) est un systme personnalisable de
rponses automatiques proposant lappelant une liste de services.

Celle-ci permet, par interaction entre le clavier tlphonique et des bases de donnes, dobtenir des
informations ou de gnrer des actions.

Les IVR peuvent tre utiliss pour contrler presque toutes les fonctions o l'interface peut tre
dcompose en une srie de choix de menu simple. Le systmes d'IVR, une fois construit peut traiter des
volumes d'appels importants.

LIVR peut donc tre considr comme un outil servant diffuser de linformation et transmettre celle-ci
via un support dans lequel tout le monde a confiance et qui est familier : le tlphone. LIVR permet aussi
de raliser un standard automatique.

Le standard automatique permet un utilisateur dcouter un message lui indiquant les choix possibles.
Aprs, il lui suffit de presser une des touches pour effectuer laction voulue. Il est possible de combiner les
menus pour dvelopper une architecture plus complexe.

Exemple 1 :

exten => 210, 1, Goto(Menu,s,1) ; appel du standard automatique dans le


; Contexte menu

[Menu] ; standard automatique


exten => s, 1, Background(/user/shar/asterisk/sounds/menu ; le message audio menu.gsm
exten => s, 2, WaitExten(2) ; on attend 2 sec
exten => s, 3, Goto(Menu,s,1) ; on recommence le tout
exten => 1, 1,SayNumber(1)
exten => 1, 2, goto(default,101, 1) ; 1 Appel le numro 101 qui se trouve
; dans le context default
exten => 2, 1, SayNumber(2)
exten => 2, 2, Goto(default,203, 1) ; 2 appel le 203 dans le context default
exten => 9, 1, SayNumber(9)
exten => 9, 2, Hang up() ; 9 On raccroche

Dans lexemple suivant, quand lutilisateur compose le 210, il entend un message vocal qui linvite
taper 1, 2 ou 9 sur son clavier. Sil tape 1, lappel est envoy John. Sil tape 2, lappel est
envoy Fred. Sil tape 9, Asterisk raccroche. Si lutilisateur ne fait rien, le message est jou en
boucle.

Exemple 2 :

[globals]
standard=SIP/x010
mess_hor_ouv= /usr/share/asterisk/sounds/message_horaire_ouverture_fermeture

exten => 151,1,GotoIfTime(*,*,14,jan?ferme,s,1)


exten => 151,n,GotoIfTime(09:00-17:59|mon-fri|*|*?ouvert,s,1)
exten => 151,n,GotoIfTime(09:00-11:59|sat|*|*?ouvert,s,1)
exten => 151,n,Goto(ferme,s,1)
[ouvert]
exten => s,1,Answer()
exten => s,n,Dial($[standard])
exten => s,n,Hangup()

Loc Thomas
TP Asterisk Janvier 2011

[ferme]
exten => s,1,Answer ()
exten => s,n, Playback(mess_hor_ouv)

Lexemple ci-dessus prend en compte des notions

Lutilisation de lapplication horaire permet de mettre en uvre des IVR qui prennent en compte les
conditions horaires :

Explications de la premire ligne : pour les 14 premiers jours de janvier quelque soit lheure ou le jour de
la semaine, il faut passer la premire condition du context ferme .

Explications de la deuxime ligne : Du lundi au vendredi de 9h00 18h00 quelque soit le jour et le mois il
faut passer la premire ligne du context ouvert .

Explications de la troisime ligne : le samedi matin de 9h00 midi, quelque soit le mois, lappel est
redirig la premire ligne du context ouvert .

Explication de la quatrime ligne : Si les conditions prcdentes ne sont pas remplies il faut passer au
context ferme .

Remarque :
Les jours de la semaine sont nots : mon, tue, wed, thu, fri, sat, sun. Les mois sont nots : jan, feb, mar, apr,
may, jun, jul, aug, sep, oct, nov, dec.

III. Enregistrement des annonces sonores

Pour votre configurer votre IVR , vous devez d'abord enregistrer des messages dattentes ou dinformations.
Vous pouvez enregistrer vos fichiers sonores l'aide de lAsterisk . Pour cela il faut ajouter une extension
pour l'enregistrement dans le fichier extensions.conf fichier.

Dans lexemple ci dessous, vous pouvez composer le numro 100, aprs le bip, vous pouvez commencer
enregistrer votre message. Pour mettre fin l'enregistrement, appuyez sur #. Le message est enregistr
au format. GSM et est appel recording.gsm dans le rpertoire /var/lib/asterisk/sounds . Aprs avoir
appuy sur # Asterisk relis le message enregistr. (aprs 2 secondes).

Enregistrement des messages dattentes ou dinformations pour lIVR

exten => 100,1,Wait(2)


exten => 100,n,Record(/var/lib/asterisk/sounds/recording:gsm)
exten => 100,n,NoOp(${RECORDED_FILE})
exten => 100,n,Wait(2)
exten => 100,n,Playback(/var/lib/asterisk/sounds/recording)
exten => 100,n,NoOp(${PLAYBACKSTATUS})
exten => 100,n,Wait(1)
exten => 100,n,Hangup()

Remarque :

Si pour vos musique dattente vous souhaitez utilisez des formats mp3 il vous faut modifie le fichier
musiconhold.conf et installer un lecteur mp3 stype madplay ou mpg123.

Pour installer un des deux lecteurs tapez une des deux commandes suivantes :

apt-get install mpg123 ou apt-get install madplay

La configuration des musiques d'attente se fait dans le fichier


/etc/asterisk/musiconhold.conf , dans la section [default].

Loc Thomas
TP Asterisk Janvier 2011

Modification du fichier musiconhold.conf :

Modifiez le fichier comme ci-dessous :

[default]
mode=custom
directory=/var/lib/asterisk/mohmp3 ; dossier de stockage des fichier mp3 pour musiconhold
application=/usr/bin/madplay -Q -o raw:- --mono -R 8000 -a -12

Exercice :

Crer un IVR pour les appels entrant de votre agence en fonction des indications ci-dessous :

Les heures douvertures des bureaux sont : de 7h30 19h00 du lundi au vendredi. Si des appels
arrivent dans cette plage horaire alors les utilisateurs ont la possibilit de joindre le correspondant
quil souhaite en tapant sur une touche (exemple en appuyant sur la touche 1 on appel jean, en
appuyant sur la touche 2 on appel lucie)

Si des appels entant ne font pas parties de la plage horaire douverture il faut que les appelants
entendent un message les informant des heures douverture de lagence.

Loc Thomas

Vous aimerez peut-être aussi