Académique Documents
Professionnel Documents
Culture Documents
Cahier de TP Asterisk
Module 2
Source :
http://www.asterisk.org
http://www.voip-info.org/
http://www.asteriskguru.com
http://www.frameip.com
Loc Thomas
TP Asterisk Janvier 2011
Une socit possde diffrents site et dsire migrer son systme tlphonique vers une solution Open
source. La solution retenue est une solution Asterisk.
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.
Certain utilisateurs devront avoir la possibilit de rcuprer leur message vocaux par mail.
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
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 #
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 #
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
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
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.
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.
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.
Pour sortir du fichier et enregistrer les modifications tapez Ctrl+X puis validez par Oui.
Le service ssh vous permettra de configurer distance, par le biais dun mulateur (putty), votre serveur.
Installez les dpendances ncessaires qui vous permettront de compiler et dinstaller Asterisk ainsi que
dajouter certains modules dont nous aurons besoins par la suite:
Crer un dossier nomm asterisk dans le dossier /usr/src laide de la commande suivante :
mkdir /usr/src/asterisk
cd /usr/src/asterisk
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.
make all
make install
###################################################
###
### DAHDI tools installed successfully.
### If you have not done so before, install init scripts with:
###
### 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.
modprobe dahdi_dummy
Loc Thomas
TP Asterisk Janvier 2011
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
./configure
make
make install
make samples
Loc Thomas
TP Asterisk Janvier 2011
Les fichiers de configurations dasterisk sont remplis dexemple, il est donc tre important de les
sauvegardez si vous veniez raliser de mauvaise manipulations.
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.
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
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.
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.
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
[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 .
Loc Thomas
TP Asterisk Janvier 2011
[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 !!
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
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 :
Context compta
Le contexte technicien doit tre accessible pour tous les utilisateurs de lagence.
Loc Thomas
TP Asterisk Janvier 2011
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
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.
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
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:
Loc Thomas
TP Asterisk Janvier 2011
[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).
[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.
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.
Loc Thomas
TP Asterisk Janvier 2011
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:
Loc Thomas
TP Asterisk Janvier 2011
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 :
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 :
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
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
Loc Thomas
TP Asterisk Janvier 2011
Vous allez travers les diffrentes manipulations crez la boite vocale pour lutilisateur x010.
[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.
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.5 Crez les boites vocales des autres utilisateurs et testez leur fonctionnement.
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
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.
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.
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.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.
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}
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.
Loc Thomas
TP Asterisk Janvier 2011
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.
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.
Pour crer un trunk sip il faut crer des comptes spcifiques. Ces comptes permettront
lauthentification auprs des serveurs opposs pour ltablissement du trunk.
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
Ici nous ne mettrons pas en place de scurit particulire. Le mode dauthentification utilis sera plain
text .
Le paramtre context :
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 :
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.
Il faut maintenant spcifier sur chaque serveur quil doit senregistrer sur le serveur distant.
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.
Pour vrifier les liens en cours dutilisation tapez la commande sip show channels :
Une fois les tapes prcdente raliss vous ne pouvez normalement pas tablir dappel. Il faut
prsent configurer le diaplan (fichier extensions.conf).
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]
[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()
[default]
include => appelverslorient
[appelverslorient]
exten => _5XXX,1,NoOp()
exten => _5XXX,n,Dial(SIP/lorient/${EXTEN})
exten => _5XXX,n,Hangup()
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).
[fromlorient]
include => default
[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
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.
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.
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.
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
Exercice :
En vous basant sur les explications ci-dessus, raliser un trunk IAX avec un site de votre choix.
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.
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
Appuyez sur <ENTER> et tapez le nom de la cl que vous voulez crer lorient dans notre
exemple.
Enter key name :lorient
Pour copier la cl vous pouvez utiliser lutilitaire Winscp fournis sur le CD ou utiliser la
commande suivante.
Exemple partir de lIPBX de Lorient
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.
[rennes]
type=friend
auth=rsa
inkey=lorient
outkey=rennes
context=fromrennes
host=dynamic
trunk=yes
qualify=yes
Loc Thomas
TP Asterisk Janvier 2011
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.
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
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
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
Dans lexemple suivant, les appels ne seront possible que du lundi au mardi de 6h 20h, au mois de
mars 2011
[discriminationhoraire]
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
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 :
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
Loc Thomas
TP Asterisk Janvier 2011
[ferme]
exten => s,1,Answer ()
exten => s,n, Playback(mess_hor_ouv)
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.
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).
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 :
Loc Thomas
TP Asterisk Janvier 2011
[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