TP3 - Asterisk
TP3 - Asterisk
TP3 - Asterisk
Asterisk est un projet démarré en 1999 par Mark Spencer. Son objectif était alors de
fournir à Linux un commutateur téléphonique complet et totalement libre.
Aujourd’hui Asterisk est un PABX (Private Automatic Branch eXchange) d’une rare
puissance et souplesse, capable de gérer la téléphonie analogique, mais surtout, et
c’est ce qui nous intéresse, la voix sur IP.
La VoIP sur Asterisk passe entre autre par la prise en charge d’un protocole standard,
ouvert et très largement utilisé, le SIP (Session Initiation Protocol).
SIP qui est un protocole très proche d’HTTP qui n’est pas limité à la seule voix mais qui
prend aussi en charge la vidéo et la messagerie instantanée.
D’un point de vue fonctionnalité, Asterisk permet tout ce que l’on peut attendre d’un
PABX moderne:
La gestion des postes téléphonique sur IP locaux. Il peut s’agir de téléphones physiques
mais aussi logiciels (ou SoftPhone) comme Ekiga ou X-lite.
Installation d’ Asterisk
Nous allons dans ce tutoriel installer Asterisk en compilant ses sources pour
pouvoir disposer de la dernèrere version d’Asterisk.
Préparation à l’installation
On commence par mettre à jour notre distribution et installer les dépendances
nécessaires à la compilation d’Asterisk.
Sudo su
apt install net-tools
apt-get update
apt-get upgrade
apt-get install build-essential libxml2-dev libncurses5-dev linux-headers-`uname -r`
libsqlite3-dev libssl-dev
apt-get install libedit-dev libedit2
apt-get install uuid-dev
apt-get install libjansson-dev
Puis on créer un dossier ou nous allons placer les sources d’Asterisk dans /usr/src
mkdir /usr/src/asterisk
cd /usr/src/asterisk
1
Installation
On télécharge la dernière version d’Asterisk et on l’installe
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz
tar xvzf asterisk-16-current.tar.gz
cd asterisk-16.0.0
./configure
make menuselect
La commande make menuselect va faire apparaître un écran qui va vous permettre de
personnaliser votre installation d’Asterisk.
Nous allons en profiter pour installer les sons français pour Asterisk au format µ-law.
2
Enfin appuyez sur Echap et une fois à l’écran principal refaites Echap et appuyez sur S
pour sauvegarder les changements.
make
make install
make samples
make config
Attention ! Pendant le make install assurez-vous que votre serveur soit connecté
à internet parce que celui ci va télécharger les package de langue FR que nous
avons selectionnés.
Après toutes ces commandes vous pouvez lancer Asterisk à l’aide de la commande
suivante:
/etc/init.d/asterisk start
Vous pouvez vérifier le bon fonctionnement de votre serveur Asterisk avec la commande
suivante qui sert à afficher la console d’Asterisk
Asterisk 10.7.0, Copyright (C) 1999 - 2018 Digium, Inc. and others.
Created by Mark Spencer
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Connected to Asterisk 16.0.0 currently running on TLC-VirtualBox (pid=789)
.......................
C’est que votre serveur Asterisk est démarré et fonctionnel !
Recherchez la ligne
3
;language=en
Et remplacez la par
language=fr
Pensez à enlever le « ; » devant la ligne !
A chaques fois que vous modifiez un fichier de conf il faut recharger ce fichier de
configuration dans Asterisk.
[general]
hasvoicemail = yes
hassip = yes
hasiax = yes
callwaiting = yes
threewaycalling = yes
callwaitingcallerid = yes
transfer = yes
canpark = yes
cancallforward = yes
callreturn = yes
callgroup = 1
pickupgroup = 1
nat = yes
[6001]
type=friend
host=dynamic
dtmfmode=rfc2833
disallow=all
allow=ulaw
fullname = John DOE
username = jdoe
secret=secret
context = work
[6002]
type=friend
host=dynamic
dtmfmode=rfc2833
disallow=all
allow=ulaw
fullname = Albert DUPONT
username = adupont
4
secret=secret
context = work
Je vais expliquer ce que veut dire chaque ligne lors de la création d’un utlisateur:
[6002] –> Numéro SIP
type=friend –> type d’objet SIP, friend = utilisateur
host=dynamic –> Vous pouvez vous connecter a ce compte SIP a partir de n’importe
quelle adresse IP
dtmfmode=rfc2833 –> type de rfc utilisé
disallow=all –> Désactivation de tous les codecs
allow=ulaw –> Activation du codec µlaw
fullname = Albert DUPONT –> Prénom et NOM de l’utilisateur (ce qui sera afficher sur
le téléphone lors d’un appel)
username = adupont –> Nom d’utilisateur
secret=secret –> Mot de passe du compte SIP
context = work –> Contexte (on verra ça dans le fichier extensions.conf)
Une fois le fichier users.conf enregistré allez dans la console Asterisk, tapez reload en
enfin tapez la commande sip show users.
les deux comptes utilisateurs que nous venons de creer devrait y apparaitre.
Reprenons le fichier users.conf avec les mêmes utilisateurs de créer mais cette fois-ci
avec un template:
general]
hasvoicemail = yes
hassip = yes
hasiax = yes
callwaiting = yes
threewaycalling = yes
callwaitingcallerid = yes
transfer = yes
canpark = yes
cancallforward = yes
callreturn = yes
callgroup = 1
pickupgroup = 1
nat = yes
[template](!)
type=friend
host=dynamic
dtmfmode=rfc2833
disallow=all
allow=ulaw
context = work
5
[6001](template)
fullname = John DOE
username = jdoe
secret=secret
[6002](template)
fullname = Albert DUPONT
username = adupont
secret=secret
Dans ce nouveau fichier de configuration nous avons créer un template appelé template
et ce template est appelé pour la création des deux utilisateurs.
Ce qui réduit la création d’un utilisateur à quatre lignes au lieu de dix.
Nos utilisateurs sont créer, mais ils n’ont pas encore la possibilité de s’appeller.
Configuration du Dialplan
Le Dialplan ou plan d’appel est le fichier de configuration d’Asterisk qui permet de
configurer en gros:
« Que de passe-t’il si j’appelle tel numéros? »
Nous allons donc configurer Asterisk de tel sorte que l’utilisateur 6001 puisse appeler le
numéros 6002.
[general]
static=yes
writeprotect=no
clearglobalvars=no
[globals]
CONSOLE=Console/dsp ; Console interface for demo
IAXINFO=guest ; IAXtel username/password
TRUNK=DAHDI/G2 ; Trunk interface
TRUNKMSD=1 ; MSD digits to strip (usually 1 or 0)
[work]
exten => _6XXX,1,Dial(SIP/${EXTEN},20)
exten => _6XXX,2,Hangup()
Dans ces trois dernières lignes nous allons voir deux choses, les contextes et
les extensions.
[work] est le contexte c’est une sorte de conteneur dans lequel les utilisateurs faisant
partis de ce contexte pourrons communiquer entre eux.
Lors de la création de nos deux utilisateurs nous avons spécifié le contexte work.
6
exten => : déclare l’extension (on peut aussi simplement dire numéros)
_6XXX : Prend les extensions (ou numéros) de 6000 a 6999 le « _ » permet d’utiliser
des regex
1 : Ordre de l’extension
Dial : application qui va être utilisé
SIP: Protocol qui va être utilisé
${EXTEN} : variable de l’extension composé, si on appelle le 6001 la variable ${EXTEN}
prendra comme valeur 6001
20: temps d’attente avant de passer a l’étape suivante.
Maintenant, vous pouvez enregistrer votre fichier extensions.conf et faire un reload dans
la console d’Asterisk.
Vous pouvez configurer un compte SIP à partir de n’importe quel client SIP.
Un que vous allez configurer avec le compte de John DOE et l’autre avec le compte
d’Albert DUPONT.
Voici par exemple la configuration d’un compe sous X-LITE 5 sous Windows 8.
7
X-LITE 5 sous Windows 8
Et sous CSipSimple
8
CSipSmple sous Android
Une fois les deux client configurés il vous suffit d’appeler par exemple à partir du
compte de John DOE (6001) le numéro 6002.