SlideShare uma empresa Scribd logo
1 de 141
Baixar para ler offline
RÉPUBLIQUE DU SÉNÉGAL
Un peuple, Un but, Une foi
Ministère de l’Enseignement Supérieur, de la Recherche et de l’Innovation
École Centrale des logiciels Libres et de Télécommunications
Téléphonie sur IP & services
Présenté par : Prof :
Amadou Bory DIALLO Dr Samuel OUYA
Sommaire
Introduction..........................................................................................................................................4
Avantages de la ToIP.........................................................................................4
Les principaux atouts de la téléphonie sur IP.......................................................5
Le protocole SIP...................................................................................................................................5
Les entités de SIP........................................................................................................................6
Quelques requêtes SIP........................................................................................6
Les principales réponses SIP...............................................................................7
I. Asterisk..............................................................................................................................................7
Fonctionnalités d’Asterisk...................................................................................8
Quelques fichiers de configuration.......................................................................8
Installation d’Asterisk.........................................................................................9
Explication du rôle de quelques fichiers d’Asterisk.............................................13
Mise en place de services sous Asterisk.............................................................14
1. Activation de la langue française sur Asterisk......................................................................14
2. Création de comptes et tests des premiers appels audios......................................................15
3. Les appels Vidéos..................................................................................................................18
4. Prise en charge de la boite vocale.........................................................................................20
5. Personnalisation de sonnerie.................................................................................................22
5.1 Avec une classe de musique..........................................................................................22
5.2 Avec la fréquence d’une radio.......................................................................................23
6. Inclusion de contextes...........................................................................................................24
7. La conférence de base...........................................................................................................28
8. Mise en Place d’un centre d’appel........................................................................................28
9. Personnalisation de la sonnerie selon l’appelant...................................................................31
10. Messagerie instantanée avec Asterisk.................................................................................33
11. Asterisk & le PAP de Cisco.................................................................................................37
Architecture..........................................................................................................................38
Explication de l’architecture................................................................................................38
But de la configuration.........................................................................................................38
Mise en place........................................................................................................................38
Accès à l’interface du PAP...................................................................................................39
II. ToIP en environnement CISCO.....................................................................................................44
Le protocole SCCP............................................................................................44
Étapes d’enregistrement d’un client SCCP...............................................................................44
Configuration d’un CUCME ou CME..................................................................45
Configuration du CME comme contrôleur SCCP.....................................................................46
Configuration du CME comme contrôleur SIP.........................................................................53
III. Trunk entre un serveur Asterisk & un serveur CME....................................................................58
Configuration côté Asterisk...............................................................................59
Configuration du CME......................................................................................61
Trunk CME/SCCP & Asterisk.............................................................................64
Gestion de boîtes vocales..................................................................................66
IV. Asterisk comme contrôleur SCCP................................................................................................70
Mise en œuvre.................................................................................................70
V. Kamailio.........................................................................................................................................85
1. Installation de Kamailio..............................................................................85
2. Configuration du serveur SIP.......................................................................85
3. Création de la base de données de kamailio.................................................87
4. Création des utilisateurs..............................................................................89
Test d’appels..............................................................................................................................91
Test d’envoi de SMS.................................................................................................................91
Test appels vidéo.......................................................................................................................93
VI. Trunk CallManager Express & KAMAILIO...............................................................................94
Config côté CME..............................................................................................94
Configurations Coté Kamailio............................................................................98
Définition du dialplan sur le CME...................................................................100
Test 1 : Kamailio ===> CME..........................................................................100
Test 2 : CME ===> Kamailio..........................................................................102
VII. Les enregistrements SRV & NAPTR........................................................................................103
7.1 : Définition de NAPTR..............................................................................103
7.2 : Définition de SRV...................................................................................104
7.3 : Objectifs................................................................................................104
1. Mise en place du DNS.......................................................................................................105
Les enregistrements SRV........................................................................................................105
VIII. Trunk Kamailio & Asterisk......................................................................................................114
Config côté Asterisk........................................................................................114
Configuration côté kamailio.............................................................................115
IX. Freeswitch...................................................................................................................................118
1. Installation.................................................................................................119
2. Démarrage de Freeswitch............................................................................126
3. Les services de bases de Freeswitch.............................................................128
3.1. Configuration des téléphones SIP et tests d’appels..........................................................128
3.2 Création de comptes SIP sur Freeswitch...........................................................................130
3.3 Ajout d’un ensemble de comptes......................................................................................134
3.4 Gestion des conférences....................................................................................................136
Conclusion........................................................................................................................................141
Introduction
La voix sur IP (VoIP, Voice over IP) est une technologie
de communication vocale en pleine émergence. Elle fait
partie d'un tournant dans le monde de la communication.
En effet, la convergence du triple play (voix, données et
vidéo) fait partie des enjeux principaux des acteurs de la
télécommunication.
Aujourd'hui au lieu de disposer à la fois d'un réseau
informatique et d'un réseau téléphonique commuté (RTC), l'entreprise peut donc,
grâce à la VoIP, tout fusionner sur un même réseau.
Comme toute innovation technologique, la VoIP non seulement simplifie l'exploitation
des réseaux mais aussi économise de l'argent à ses clients.
Les entreprises dépensent énormément en communications téléphoniques, or le prix
des communications de la ToIP (Téléphonie sur IP) est dérisoire en comparaison. En
particulier, plus les interlocuteurs sont éloignés, plus la différence de prix est
intéressante. De plus, la téléphonie sur IP utilise jusqu'à dix fois moins de bande
passante que la téléphonie traditionnelle. Il semblerait que les entreprises après avoir
émis un certain nombre de doutes sur la qualité de services, soient désormais
convaincues de la plus grande maturité technologique des solutions VoIP proposées
sur le marché.
Le scénario vers lequel va s'orienter la téléphonie sur IP dépend beaucoup de
l'évolution du réseau lui-même. En effet, si internet garde sa configuration actuelle où
elle est essentiellement dimensionnée en fonction d'une qualité de service moyenne
pour la transmission des données, cependant cette nouvelle technologie constitue une
solution idéale pour le cas d'interconnexion de PBX d'entreprises. En effet, les
entreprises multi-sites cherchent à économiser des dépenses énormes dues aux
communications inter-sites. Il serait donc envisageable de profiter de cette nouvelle
technologie émergente afin d'assurer cette interconnexion.
Avantages de la ToIP
La téléphonie sur IP séduit les entreprises avant tout grâce aux réductions de
dépenses qu’elle permet : appels inter-sites gratuits, appels lointains à tarifs très bas,
pas de frais de câblage supplémentaires. Mais la téléphonie IP propose encore
d’autres avantages...
Elle permet la transmission des communications vocales via des réseaux au protocole
IP (en clair, par Internet dans la plupart des cas) et permet la convergence de tous
les postes informatiques d’une entreprise en un seul réseau unifié, bien. Mais quels
sont les avantages que procure la ToIP aux entreprises ?
Les principaux atouts de la téléphonie sur IP
➢ Coûts d’installation : Économie sur les frais de câblage si vous possédez déjà
un réseau Internet d’entreprise. La téléphonie IP utilise la même connectique.
En d’autres termes, pas d’achat de câbles et de frais de pose à assumer.
➢ Coûts de communication : La téléphonie IP demande peu de bande passante.
Les entreprises peuvent donc constituer un réseau privé pour relier plusieurs
sites distants entre eux. Les communications téléphoniques entre ces derniers
sont alors totalement gratuites.
➢ Simplicité de gestion : La téléphonie traditionnelle obligeait les équipes
techniques et informatiques à composer avec des lignes séparées : les données
informatiques d’un coté, données « voix » de l’autre. Grâce à la technologie
Voix sur IP, cette distinction disparaît puisqu’il s’agit d’unique et même
réseau. Les opérations de maintenance ou d’évolution sont donc simplifiées, ce
qui constitue une source de gains de productivité pour l’entreprise.
➢ Évolutivité : Dans une architecture VoIP, il est très facile d’ajouter des postes
supplémentaires ou d’agrandir le réseau, ce qui n’était pas le cas avec la
téléphonie non-IP.
Le protocole SIP
Session Initiation Protocol (SIP) est un protocole TCP/IP de couche application
normalisé et standardisé par l’IETF (RFC 3261). Il a été conçu pour établir, modifier
et terminer des sessions multimédia. Il prend en charge l’authentification et la
localisation de multiples participants. S’il se charge de la négociation des médias, il
laisse le soin à d’autres protocoles de transporter du texte, de la voix ou de la vidéo.
SIP fonctionne aussi bien avec IPv4 qu’avec IPv6. Il est supporté par TCP ou UDP sur
le port 5060 par défaut. La version sécurisée SIP-TLS utilise par défaut le port TCP
5061.
SIP ne fournit pas de services. Plus justement, il fournit des primitives qui peuvent
être utilisées pour mettre en œuvre différents services. Par exemple, SIP peut localiser
un utilisateur et livrer un objet opaque à l’endroit où il se trouve. Une seule
primitive est normalement utilisée pour fournir plusieurs services différents.
Le protocole SIP travail de concert avec d’autres protocoles VoIP afin de fournir le
nécessaire depuis la signalisation jusqu’au transport média en passant par la qualité
de service (QoS). Voici d’ailleurs un schéma qui explique clairement ce qui a été
avancé plus haut :
Les entités de SIP
 Le User Agent
 Le serveur proxy
 Le serveur d’enregistrement
 Le serveur de localisation
 Le B2BUA (Back to Back User Agent)
Quelques requêtes SIP
 INVITE : établit une session
 ACK : Confirme la requête INVITE
 BYE : Met fin à une session
 CANCEL : Annule l’établissement de la session
 REGISTER : Donne l’emplacement de l’utilisateur
 SUBSCRIBE : Souscrit à la notification du notifiant
 NOTIFY : Prévient l’abonné d’un nouvel événement
 UPDATE : Modifie l’état d’une session.
Les principales réponses SIP
 1XX : Réponses informatives
 2XX : Réponses réussies
 3XX : Réponses de renvoi
 4XX : Échec de requêtes
 5XX : Erreurs de serveur
 6XX : Échec général
Les grands fournisseurs de solutions de ToIP
 Asterisk
 Cisco (CUCM & CUCME)
 Freeswitch
 Kamailio
 Avaya,...
I. Asterisk
Asterisk est une solution de téléphonie sur IP, Open Source. Il s’agit donc d’une
solution gratuite, avec une communauté très active. Il a été développé par la société
Digium.
Asterisk est disponible sous Linux et Windows, même si la version Linux utilisée est
de loin la moins rependue. Il fait office d’IPBX, mais il est aussi capable de
s’interfacer avec un réseau de téléphonie analogique, à l’aide de cartes additionnelles.
Asterisk peut donc faire office d’IPBX et de PABX.
Un serveur Asterisk permet donc de faire de la VoIP ainsi que de la téléphonie
analogique. En plus d’être gratuit, Asterisk est donc aussi très complet et supporte de
très nombreux codecs audio, dont le G.711 (u-Law et a-Law), le G.729, Opus, ...
Fonctionnalités d’Asterisk
Voici une liste non exhaustive des fonctionnalités que nous offre Asterisk :
 Conférence
 Musique d’attente
 File d’attente
 Groupement d’appel
 Messagerie vocale
 Transfert d’appel
 Transcodage entre différents codecs
 Interface de développement de services (ARI
 Notification mail en cas de message (avec message audio en PJ)
 IVR (standard automatique avec choix au clavier)
 Synthèse vocale
 Chiffrement des appels
 Ne pas déranger
 Parking d’appel
 Failover
 Etc...
Quelques fichiers de configuration
 Messagerie vocale voicemail.conf
 Parking d’appel features.conf
 Transfert d’appels features.conf
 Conférence meetme.conf
 Centre d’appels queues.conf ; agents.conf
 Musique d’attente musiconhold.conf
Installation d’Asterisk
La méthode la plus respectueuse et la plus efficace d’installer Asterisk est : soit se
rendre sur son site officiel en cliquant ici et choisir la version souhaitée puis la
télécharger, soit le faire en ligne de commandes si nous connaissons déjà la version
dont nous avons besoins. Dans notre cas, c’est la version 16 qui nous intéresse. Voici
donc les actions à faire :
# wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz
Il atterrira dans le répertoire dans lequel vous y étiez lors de l’exécution de la
commande
 Désarchivez et décompressez dans un dossier de choix, personnellement je
préfère /usr/src
# tar -xzf asterisk-16-current.tar.gz -C /usr/src/
# cd /usr/src/asterisk-16.18.0
# contrib/scripts/install_prereq install
Pour la prise en compte du codec audio opus, et du codecs vidéo vp8 il faudra faire
ceci :
# apt install libopus-dev libvpx-dev -y
 si nous voulons gérer facilement le format mp3, il faudra exécuter le script
suivant :
# contrib/scripts/get_mp3_source.sh
Dans certains cas, lors de son installation, Asterisk vous dira qu’il lui manque des
prérequis, il faudra donc les installer avec :
# apt install libxml2-dev libxml2-utils libcurl4-openssl-dev libeditline-dev libsqlite3-
dev curl autoconf gcc g++ build-essential linux-headers-$(uname -r) libssl-dev openssl
libc-dev ncurses-dev -y
# ./bootstrap
# ./configure
NB : Il arrive qu’on nous génère des erreurs lors de l’exécution de cette commande.
La solution est de se rendre dans le répertoire /tmp puis exécuter la commande
suivante :
# wget https://raw.githubusercontent.com/asterisk/third-party/master/pjproject/2.10/
pjproject-2.10.tar.bz2
Et ensuite reprendre le ./configure qui devrait finir par un truc de ce genre :
Pour allons activer les modules qui nous intéressent en tapant la commande :
# make menuselect
 Activer le format MP3 pour supporter les sons MP3
 Activer le codec opus
 Nous avons prévu tout de même d’activer la langue française sur notre
Asterisk, donc nous allons activer les modules qui nous permettent de le faire
 Les autres modules restant
Nous allons sauvegarder et sortir pour faire les actions suivantes :
make pour compiler asterisk
make install pour installer les fonctionnalités choisies
make samples pour installer les fichiers de configurations
make config pour générer les scripts de démarrage de Asterisk
Explication du rôle de quelques fichiers d’Asterisk
Les fichiers dans /etc/asterisk Leurs signification
sip.conf Fichier dans lequel on crée des comptes.
Il contient des paramètres importants
comme : videosupport=yes qui permet
d’activer la prise en charge de la
visiophonie, nous avons aussi
language=en qu’il faudra mettre à fr pour
activer la langue française, et beaucoup
d’autres paramètres.
extensions.conf Fichier dans lequel on définit le plan de
numérotation, et les actions à faire selon
les évènements
voicemail.conf Fichier dans lequel on définit le contexte
de la boite vocale et les comptes
concernés par cette boîte vocale
confbridge.conf Fichier ans lequel on définit les
conférences audios et vidéos
musiconhold.conf Fichier dans lequel on crée les classes de
musique que nous pourrons utiliser
comme musique d’attente ou sonnerie
queues.conf Fichier dans lequel on crée des files
d’attente des centres d’appels.
agents.conf Fichier de création des agents répondant
aux appels dans les centres d’appels
features.conf Fichier ou on peut trouver des
combinaisons de touches a faire pour
utiliser certaines fonctionnalités d’asterisk
telles que : enregistrements d’appels,
fonction patron secrétaire, mise en attente
d’appels(parking)
modules.conf Fichier gérant les modules d’Asterisk
Note : Pour les versions 18 de Asterisk, il existe au moins deux types de canaux : le
SIP et le PJSIP qui ne peuvent pas être activés à la fois. Donc pour éviter un conflit
entre les deux canaux, il faudra éditer le fichier modules.conf et décharger le module
qui gère le canal qui ne vous intéresse pas.
Mise en place de services sous Asterisk
Asterisk étant un serveur SIP puissant qui se respecte, il exige donc de configurer les
services avant de les utiliser.
1. Activation de la langue française sur Asterisk
# nano /etc/asterisk/sip.conf
Nous le remplaçons par ceci :
Nous allons ensuite faire les actions suivantes
# adduser asterisk
# mkdir /var/lib/asterisk/sounds/fr
# cd /var/lib/asterisk/sounds/fr
# wget -O core.zip https://www.asterisksounds.org/fr-fr/download/asterisk-sounds-
core-fr-FR-sln16.zip
# wget -O extra.zip https://www.asterisksounds.org/fr-fr/download/asterisk-sounds-
extra-fr-FR-sln16.zip
# unzip core.zip
# unzip extra.zip
# chown -R asterisk.asterisk /var/lib/asterisk/sounds/fr
# find /var/lib/asterisk/sounds/fr -type d -exec chmod 0775 {} ;
A partir de maintenant, notre Asterisk parle français !
2. Création de comptes et tests des premiers appels audios
Tous les fichiers de configurations se trouvent dans le dossier /etc/asterisk
# vim /etc/asterisk/sip.conf
[bory]
defaultuser = bory
host = dynamic
type = friend
secret = passer
context = telephonie
[ibrahima]
defaultuser = ibrahima
host = dynamic
type = friend
secret = passer
context = telephonie
[aminata]
defaultuser = aminata
host = dynamic
type = friend
secret = passer
context = telephonie
Nous venons de créer trois comptes.
Nous allons maintenant définir leur plan de numérotation
# nano /etc/asterisk/extensions.conf
[telephonie]
exten => 1000,1,Dial(SIP/bory,40,tr)
exten => 1001,1,Dial(SIP/ibrahima,40,tr)
exten => 1002,1,Dial(SIP/aminata,40,tr)
Si c’est la première fois de lancer Asterisk, nous le ferons comme suit :
# asterisk
# asterisk -rvvvvvvvvvvvvvvvvvvvvvvvvv
Lorsque les trois utilisateurs s’enregistrent, voici la réaction du serveur :
Affichons la liste des comptes
Test d’appels
L’utilisateur aminata utilise microsip comme softphone
Quand on lance Microsip, nous allons procéder ainsi pour créer un compte
La capture ci-dessous montre l’utilisateur bory qui reçoit un appel de aminata
3. Les appels Vidéos
Dans sip.conf, nous allons activer le paramètre videosupport=yes
Puis ajouter le paramètre allow = h263,vp8 au niveau de chaque compte comme
suit :
[bory]
type = friend
host = dynamic
defaultuser = bory
secret = passer
context = telephonie
allow = h263,vp8
[ibrahima]
type = friend
host = dynamic
defaultuser = ibrahima
secret = passer
context = telephonie
allow = h263,vp8
Place au test
Test 1 : Avec le softphone Zoiper
Test 2 : Utilisation de blink
Blink est un logiciel de collaboration ultra polyvalent et très puissant.
4. Prise en charge de la boite vocale
Dans extensions.conf
Dans voicemail.conf
La syntaxe est la suivante :
[Le_contexte_de_la_boite_vocale]
numéro => mot_de_passe,Le_nom_utilisant_cette_boite_vocale
Nous allons maintenant définir un numéro qui permettra aux abonnés d’accéder à
leur boite vocale
Toujours dans extensions.conf
Place au test
Pour le test, l’utilisateur bory va appeler ibrahima qui ne va pas décrocher. Au bout
de 20 secondes, le système lui dira de laisser un message vocale ensuite d’appuyer
sur Diez (#) ou bien de raccrocher.
Bory va composer le 200 pour accéder à sa boite vocale : Il va entendre une voix lui
disant de saisir le numéro de sa boite vocale, une autre voix lui demandera de saisir
le mot de passe de sa boite vocale. Les captures ci-dessous sont très éloquentes pour
comprendre ce qui se passe.
La réaction du serveur
Il a écouté ses différents messages vocaux !
5. Personnalisation de sonnerie
5.1 Avec une classe de musique
Avec cette config, l’appelant écoutera une musique MP3 que l’admin a définie à
l’appelé.
 Il faut installer le prérequis mpg123
 Créer la classe de musique
# vim musiconhold.conf
[sonnerie]
mode=custom
directory=/var/lib/asterisk/groupe
application=/usr/bin/mpg123 -q -r 8000 -f 8192 -b 2048 --mono -s
 Créer le dossier devant contenir la musique et y mettre la musique en question
 Dans extensions.conf, mettre le nom de la classe définie à l’utilisateur concerné
Place au test
N’importe quel utilisateur essayant d’appeler le user bory écoutera une musique à la
place de la sonnerie. Voici d’ailleurs ce qui se passe dans la console du serveur :
Nous remarquons que la musique joue.
5.2 Avec la fréquence d’une radio
Dans cette partie, au lieu d’écouter une musique, l’appelant écoutera une radio.
Toujours dans le fichier musiconhold.conf
Dans extensions.conf
Ici nous avons ajouté cette classe au user ibrahima
Place au test
N’importe quel user essayant d’appeler ibrahima écoutera une Webradio
6. Inclusion de contextes
Il y a une règle qui dit que quand un utilisateur compose un numéro, le système
cherche ce numéro dans le contexte cet utilisateur. En claire, par défaut deux
utilisateurs se trouvant dans deux contextes différents ne peuvent pas communiquer.
Nous allons créer un compte utilisateur en le mettant dans un contexte différent de
celui déjà existant
# vim sip.conf
# vim extensions.conf
Nous avons fait des inclusions de contexte de part et d’autre afin de permettre aux
abonnés de communiquer avec des utilisateurs d’autres contextes en appelant ou en
étant appelé.
Place au test
L’utilisateur bory (1000) qui appelle le 100
de l’autre côté
Test dans le sens inverse
L’utilisateur dont le numéro est 100 tente d’appeler bory dont le numéro est 1000
ça sonne de l’autre côté
Nos utilisateurs de contextes différents arrivent à communiquer sans aucun
problème !
7. La conférence de base
Un seul numéro à composer pour être en communication avec tous ceux qui ont
composé ce numéro. C’est la philosophie de la conférence !
 Dans le confbridge.conf
[conference]
type=bridge
video_mode = sfu
 Dans extension.conf
exten => 777,1,Confbridge(conference)
Place au test
Pour le test, il suffit aux utilisateurs de composer le 777 pour accéder à la
conférence !
8. Mise en Place d’un centre d’appel
Un abonné souhaitant avoir des informations sur un quelconque service, n’a qu’à
composer un numéro qui aura pour effet de faire sonner le téléphone de plusieurs
agents qui pourront lui apporter d’amples informations sur son sujet. C’est un peu ça
le centre d’appels !
Dans le fichier queues.conf
# vim queues.conf
[centre]
musicclass=default
strategy=fewestcalls
joinempty=yes
member =>Local/1000@telephonie
member =>Local/1001@telephonie
Notions de stratégie
strategy=fewestcalls ===> L’agent ayant reçu le moins d’appels sera celui à qui le
prochain appel sera destiné !
strategy=ringall ===> Les téléphones de tous les agents vont sonner en temps à
l’arrivée d’un appel
Ensuite dans :
# vim extensions.conf
exten => 9999,1,Answer()
exten => 9999,2,Set(CHANNEL(musicclass)=sonnerie)
exten => 9999,3,Queue(centre)
Nous avons utilisé notre classe de musique qui s’appelle sonnerie pour accueillir les
clients !
Affichons la liste des agents qui font partie du centre
Place au test :
Lorsqu’un client compose le 9999, il est censé écouter une musique. Pendant ce
temps il y a le téléphone d’un agent qui sonne. Voici d’ailleurs la réaction du
serveur lorsque ce numéro est composé par l’abonné binta :
Lorsqu’un utilisateur compose le 9999 pour accéder au centre, l’appelle sera routé
grâce à la politique(fewestcalls) du paramètre strategy qui permet de rediriger
l’appelle vers l’agent qui a reçu le moins d’appels.
Gestion des agents du centre d’appels en ligne de commande
 Ajout d’un membre dans le centre d’appels
> queue add member SIP/bory to centre
Cette commande permet d’ajouter le téléphone de bory comme agent devant répondre
aux appels entrant dans la file d’attente qui s’appelle centre.
 Suppression d’un agent
> queue remove memeber SIP/bory centre
Nous venons de retirer le téléphone de bory de la la file d’attente centre.
9. Personnalisation de la sonnerie selon l’appelant
Nous allons personnaliser la sonnerie de bory selon l’appelant. Si c’est ibrahima qui
appelle, la sonnerie sera différente de celle que binta va écouter si c’est elle qui
appelle bory.
Pour cela, nous allons définir deux classes de musiques
# vim musiconhold.conf
[ibrahima]
mode=custom
directory=/var/lib/asterisk/groupe
application=/usr/bin/mpg123 -q -r 8000 -f 8192 -b 2048 --mono -s
[binta]
mode=custom
directory=/var/lib/asterisk/binta
application=/usr/bin/mpg123 -q -r 8000 -f 8192 -b 2048 --mono -s
Comme nous le constatons, les deux classes ont des dossiers de stockage de sons
différents !
 Ensuite ajouter la ligne suivante au niveau de chaque compte dans sip.conf
#vim sip.conf
callerid= "le nom"<le numéro>
Voici en claire ce qui se trouve dans sip.conf
[bory]
type=friend
host=dynamic
defaultuser=bory
secret=passer
context=telephonie
allow=h263,vp8
callerid="bory"<1000>
[ibrahima]
type=friend
host=dynamic
defaultuser=ibrahima
secret=passer
context=telephonie
allow=h263,vp8
callerid="ibrahima"<1001>
[binta]
type=friend
host=dynamic
defaultuser=binta
secret=passer
context=telephonie
allow=h263,vp8
callerid="binta"<1002>
 Dire maintenant au système de faire la différence entre les appelants.
# vim extensions.conf
exten => 1000,1,Dial(SIP/bory,20,trm(${CALLERID(name)}))
C’est la ligne qui fait toute la différence dans extensions.conf
Place au test :
Si c’est l’utilisateur ibrahima qui appelle Bory, voici la réaction du serveur :
Si c’est binta qui appelle, la réaction du serveur sera différente de la précédente
Et voilà, la personnalisation de sonnerie est faite avec succès !
10. Messagerie instantanée avec Asterisk
Asterisk propose même de la messagerie texte entre ses abonnés, comme chez les
opérateurs classique. Trop stylé !
# nano sip.conf
Donner les valeurs suivantes aux paramètres suivants en les dé-commentant bien-
sûr !
accept_outofcall_message=yes
outofcall_message_context=sms
auth_message_requests=yes
 Créer des utilisateurs si c’est pas encore fait :
Nous allons créer deux comptes dans sip.conf
[100]
username = 100
host = dynamic
context = ec2lt
secret = passer
type = friend
[101]
username = 101
host = dynamic
context = ec2lt
secret = passer
type = friend
 Inclure le contexte des utilisateurs dans les contextes [public] et [default]
# vim extensions.conf
 Nous allons définir le plan de numérotation. Ça c’est du classique !
[ec2lt]
exten => _X.,1,Dial(SIP/${EXTEN},25)
 Définition du contexte SMS.
Attention : Le contexte [sms] sera définit sous le contexte [ec2lt]
[sms]
; Contexte des sms
; Affichage des détails du msg à la console
exten => _.,1,NoOp(SMS receiving dialplan invoked)
exten => _.,n,NoOp(To ${MESSAGE(to)})
exten => _.,n,NoOp(From ${MESSAGE(from)})
exten => _.,n,NoOp(Body ${MESSAGE(body)})
;
; Construction des paramétres de MessageSend()
exten => _.,n,Set(ACTUALTO=${CUT(MESSAGE(to),@,1)})
exten => _.,n,Set(ACTUALFROM=${CUT(MESSAGE(from),<,2)})
exten => _.,n,Set(ACTUALFROM=${CUT(ACTUALFROM,@,1)})
exten => _.,n,Set(ACTUALFROM=${CUT(ACTUALFROM,:,2)})
;
; Envoie du message
exten => _.,n,MessageSend(${ACTUALTO},${ACTUALFROM} ${MESSAGE(from)})
exten => _.,n,NoOp(Status : ${MESSAGE_SEND_STATUS})
exten => _.,n,GotoIf($["${MESSAGE_SEND_STATUS}" != "SUCCESS"]?sendfailedmsg)
exten => _.,n,Hangup()
Place au test
L’utilisateur 101 va envoyer un texto au 100
Réaction du serveur
Le message s’affiche en claire sur le serveur, grâce au paramètre Body.
11. Asterisk & le PAP de Cisco
L'adaptateur Cisco PAP2 permet l'accès à un service de téléphonie sur IP (voice over
IP) offrant de nombreuses fonctions de haute qualité via votre connexion Internet
haut débit. ... Vous avez une réception téléphonique claire et des connexions fax
fiables, même lorsque vous utilisez Internet en même temps.
Il permet :
 D'appeler et de recevoir des appels par la ligne téléphonique classique ou
Gratuitement par Internet sans changer de téléphone
 Il a : 2 ports RJ11 pour téléphones traditionnels ou fax avec 2 n° de téléphone
indépendants
 1 port RJ-45 pour connexions Ethernet 10/100 Mbits
 Protocole SIP
 Compatibilité avec toutes les fonctions de votre téléphone
Il ressemble à ceci :
Architecture
L’architecture ci-dessous donne une vue globale de ce qui va être réalisé dans cette
partie
Explication de l’architecture
Un point d’accès permettant à des clients comme des smartphones de bénéficier des
services d’Asterisk est directement connecté au switch, sur lequel le serveur Asterisk
et le Cisco-PAP sont aussi connectés. Un téléphone analogique est aussi branché sur
le Cisco-PAP.
But de la configuration
Le but de cette partie est de permettre au clients SIP d’Asterisk de pouvoir passer des
appels vers les téléphones analogiques dont les comptes sont aussi stockés chez
Asterisk.
Mise en place
La première chose à faire est de créer un compte au PAP chez Asterisk. Nous savons
tous que cela se fait dans le fichier sip.conf
# vim /etc/asterisk/sip.conf
[110]
username=110
host = dynamic
context=ec2lt
secret=passer
type=friend
dans l’autre fichier :
# vim /etc/asterisk/extensions.conf
exten => _1XX,1,Dial(SIP/${EXTEN},40,tr)
Accès à l’interface du PAP
Pour accéder à l’interface du PAP, il faut non seulement le connecter au LAN, mais
aussi le connecter à un téléphone analogique sur lequel composer ****110# , une
voix vous dictera l’adresse IP chiffre par chiffre en anglais bien-sûr !
Le système vient de nous dire que l’adresse IP du PAP est 192.168.0.92. Testons cela
tout d’abord en ligne de commande
Pour accéder à son interface, il nous faut un navigateur
Cliquer sur Admin Login pour avoir une fenêtre de ce genre :
Puisque notre PAP est connecté au téléphone analogique par le port phone1, nous
allons donc configurer ce port en cliquant sur Line 1 et renseigner les informations
du compte que nous lui avons créé chez Asterisk
Après avoir renseigné les paramètres de connexion au compte que nous l’avons créé
chez Asterisk, il faudra donc sauvegarder la configuration en cliquant sur Save
Settings en bas pour avoir la fenêtre suivante :
Après ces configurations, nous pouvons même voir le statut de la Ligne
La ligne est en état Online. Ce qui veut dire que le téléphone analogique s’est bien
connecté au serveur Asterisk.
Place au test
D’abord sur la console d’Asterisk, vérifions si l’équipement s’est bien connecté
La dernière ligne montre qu’il s’est connecté avec succès !
Test d’appels
le 100 qui reçoit l’appel du téléphone analogique
Regardons ce qui se passe sur la console du serveur
Nous pouvons aussi passer un appel dans le sens inverse !
II. ToIP en environnement CISCO
CISCO en plus de sa large gamme de serveurs et de solutions informatiques qu’il
nous offre, il met à la disposition du monde des solutions de ToIP derniers cri. Parmi
lesquelles nous avons :
 Le Cisco Unified Communications Manager (CUCM) : Qui est un système de
communication basé sur IP intégrant la voix et la vidéo. Il fait partie d’un
ensemble de produits de la gamme VoIP de CISCO. Il est utilisé pour de très
grandes entreprises dont le nombre du personnel est assez important.
 Le Cisco Unified Communication Manager Express (CUCME) ou CME : Qui est
un système de communication basé aussi sur IP intégrant la voix et la vidéo,
tournant sur des routeurs avec des IOS adaptés. Le CallManager Express est fait
pour les PME.
Le protocole SCCP
Skinny Call Control Protocol (SCCP) est un protocole propriétaire Cisco évoluant au
niveau de la couche application du modèle OSI et utilisant le port 2000. Il est utilisé
pour la gestion des appels téléphoniques et de la signalisation. SCCP est supporté
nativement dans le CUCM, et est exclusivement utilisé entre un serveur SCCP et des
clients SCCP.
Étapes d’enregistrement d’un client SCCP
Lorsqu’on connecte un téléphone avec le protocole SCCP, il y a plusieurs étapes pour
que ce téléphone soit utilisable :
1. Le téléphone charge l’image enregistré en mémoire.
2. Avec le protocole CDP, le téléphone découvre quel VLAN utiliser (Voice VLAN).
3. Le téléphone envoie une requête DHCP pour connaître son adresse IP. Il reçoit
de plus de la part du serveur DHCP l’adresse du serveur TFTP.
4. Le téléphone envoie une requête au serveur TFTP pour récupérer sa
configuration au préalable créer par le CUCM lorsque l’on créer le téléphone.
5. Le téléphone vient s’enregistrer dans le CUCM.
Note 1 : C’est le CUCM qui gère la signalisation ainsi que le routage des appels.
Note 2 : Un CUCM et/ou CME est capable de piloter autant des téléphones SCCP que
des téléphones SIP selon les configurations encours.
Configuration d’un CUCME ou CME
Dans nos travaux pratiques, nous allons utiliser l’IOS 3745-ipvoice_ivs-mz.124-
15,T7.bin . Pour l’avoir, il faudra se rendre sur le site de CISCO en cliquant ici et
aussi GNS3 en utilisant le cloud pour permettre à notre routeur CUCME de
communiquer avec le réseau physique.
Voici un tableau comparatif des commandes CUCME SCCP et SIP
Configuration du CME comme contrôleur SCCP
 Configuration IP du routeur
Notre CME vient d’obtenir une adresse IP par DHCP qui est 192.168.6.72/16
 Nous allons ensuite activer le SCCP en précisant son port qui est 2000 et
définir 5 téléphones et 5 numéros.
 Création des numéros de téléphones 4000, 4001 et 4002
 Nous allons ensuite faire de sorte que notre CME attribue les numéros de
téléphones par ordre de connexion. Ça s’appelle l’auto-assignation des
numéros.
La configuration terminée, Nous allons utiliser des clients SCCP pour bénéficier des
services déployés sur notre CME.
Le choix du client SCCP est tombé sur ip communicator de CISCO qui est un client
natif du protocole SCCP. Dans notre cas, nous allons utiliser sa version logicielle
(softphone).
Pour le télécharger, il faudra juste cliquer ici . C’est un logiciel exclusivement dédié
au système Windows. Mais il est possible de le faire tourner aussi sous Linux grâce à
la couche de virtualisation wine, en faisant ceci :
# sudo apt install wine-development
Pour l’installer, il suffit d’exécuter la commande suivante en tant que simple
utilisateur en précisant le chemin absolu du logiciel téléchargé :
# wine Documents/CiscoIPCommunicatorSetup.exe
Dans mon cas, il est dans Documents. Après cette commande, suivre les instructions
pour l’installer correctement, Il créera même un raccourci sur le Bureau sur lequel
cliquer pour le lancer.
Mais dans l’exemple suivant, nous l’avons installé sur Windows.
Nous allons lancer notre softphone
Après lancement, nous aurons une fenêtre de ce genre :
Nous allons ensuite donner l’adresse IP du CME dans Menu > Préférences > Réseau
Comme le montre la figure ci-dessous :
Voici notre softphone qui s’est enregistré avec succès :
Les traces d’enregistrement du softphone sur le CME
Nous pouvons même afficher les détails de la configuration SCCP comme suit :
Les liaisons TFTP du service de téléphonie
On peut procéder de la même manière pour faire enregistrer un autre softphone et
tester les appels.
Configuration du CME comme contrôleur SIP
En plus de gérer facilement le protocole SCCP pour la signalisation, Le CallManager
Express de Cisco supporte aussi le protocole standard SIP.
Mise en place
 Activer le protocole SIP
 Définir le CME comme serveur d’enregistrement
 Créer le numéro 5000 à un utilisateur. Binta dans notre cas.
 Création du second numéro : 5001 qui sera attribué à l’utilisateur bory
 Création de téléphone pour chaque numéro
Le premier téléphone qui correspondra au numéro 5000
Le second téléphone pour le numéro 5001
Un fidèle abonné va utiliser le softphone Zoiper sur un téléphone Android pour se
connecter au compte 5000
Après s’être enregistré, voici la réaction du serveur indiquant qu’un téléphone ayant
l’adresse IP 192.168.6.110 s’est connecté avec le compte 5000
Un deuxième abonné utilisera le compte 5001 pour se connecter. Voici la réaction du
serveur
Nos deux comptes SIP se sont bien connectés !
Test 1
Un client SIP appelant celui SCCP
Le IP communicator qui sonne
Lorsqu’il décroche
Sur le Softphone Zoiper
Nous pouvons aussi tester l’appel dans l’autre sens.
Nous voyons clairement que les abonnés SCCP arrivent à communiquer avec ceux de
SIP !
III. Trunk entre un serveur Asterisk & un serveur CME
L’architecture du réseau téléphonique d’une entreprise pourrait se composer de deux
solutions : une solution propriétaire (le CME dans notre cas), et une solution Libre
(Asterisk dans notre cas). Pour unifier ce réseau, il faut donc interconnecter ces deux
serveurs.
Le but de cette interconnexion est de permettre aux abonnés du CME d’appeler ceux
d’Asterisk et inversement.
Architecture
Cette architecture est plus éloquente que du texte !
De ce fait, le CME doit disposer d’un compte chez Asterisk. Et ça se passe dans le
fichier sip.conf
Configuration côté Asterisk
Nous allons créer trois comptes. Le dernier sera le compte du serveur SIP distant
 Créer des comptes à nos clients
;le premier compte Asterisk
[300]
username=300
host=dynamic
context = ec2lt
secret = passer
type=friend
callerid=<300>"fatoumata"
mailbox=300@ec2lt
;le deuxième compte Asterisk
[301]
username=301
host=dynamic
context = ec2lt
secret = passer
type=friend
callerid=<301>"mariam"
mailbox=301@ec2lt
;Le compte du SIP côté CME
[cmeasterisk]
username= cmeasterisk
secret=passer
type=friend
host = 192.168.6.72 ; l’adresse IP du CME
context=ec2lt
qualify=yes
dtmfmode=rfc2833
allow=ulaw
insecure=port,invite
careinvite=yes
mailbox=cmeasterisk@ec2lt
En claire :
Dans extensions.conf on définit le contexte de nos utilisateurs et les critères d’envoi
des appels vers le serveur SIP distant
# vim extensions.conf
[ec2lt]
exten => _3XX,1,Dial(SIP/${EXTEN},20,tr)
exten => _5XXX,1,Dial(SIP/cmeasterisk/${EXTEN},20)
Recharger Asterisk avec la commande reload, dans sa console bien-sûr !
Dès que vous finissez cette étape, nous pouvons voir que le CME est
automatiquement devenu un client de Asterisk
Côté Asterisk la config est terminée !
Configuration du CME
De la même manière nous avons indiqué à Asterisk le processus pour joindre les
utilisateurs du CME, nous ferons de même sur le CME afin de permettre à ses
utilisateurs de pouvoir joindre ceux d’Asterisk.
 Authentification du compte
 Le CME aussi a un plan de numérotation
Il faudra apprendre au CME comment joindre les clients Asterisk en activant le codec
audio g711
Place au test
Connexion à Asterisk
Un très cher abonné va utiliser Zoiper Desktop pour se connecter. Il procédera
comme suit :
Cliquer sur Login pour renseigner l’adresse IP du serveur
Cliquer sur Next
Il a trouvé le compte. Voici la réaction du serveur :
Test d’appels
Un des abonnés du CME va essayer de joindre celui d’Asterisk
Et quand il décroche :
Un appel dans le sens inverse (Asterisk qui appelle le CME)
L’interconnexion est faite avec succès !
Trunk CME/SCCP & Asterisk
Tout à l’heure nous avons fait des configurations permettant aux abonnés Asterisk
d’échanger avec ceux du CME/SIP . Ici le but est de permettre aux abonnés SCCP du
CME de pouvoir s’appeler avec ceux SIP d’Asterisk. En se basant sur l’interconnexion
précédente, nous allons ici faire le nécessaire.
 Ajouter la ligne suivante dans le fichier extensions.conf
exten => _4XXX,1,Dial(SIP/cmeasterisk/${EXTEN},20)
Sur le CME, nous n’aurons aucune action à faire car le plan de numérotation est déjà
établi !
Place au test
Appel depuis le CME/SCCP vers Asterisk
Dans le sens inverse : Asterisk vers CME/SCCP
Interconnexion validée !
Gestion de boîtes vocales
Le but de cette partie est l’activation de la boite vocale pour tous nos clients : CME/
SIP, CME/SCCP et Asterisk et en suite stoker ces messages au niveau d’Asterisk. Ça
veut dire que les abonnés du CME auront leurs boîte vocale au niveau de chez
Asterisk.
 Config côté Asterisk
# vim sip.conf
Ajouter la ligne mailbox=numéro@contexte au niveau de chaque numéro.
Dans l’autre fichier
# vim extensions.conf
[ec2lt]
;les appels
exten => _3XX,1,Dial(SIP/${EXTEN},20,tr)
exten => _5XXX,1,Dial(SIP/cmeasterisk/${EXTEN},20)
exten => _4XXX,1,Dial(SIP/cmeasterisk/${EXTEN},20)
;la boite vocale
exten => _3XX,2,Voicemail(${EXTEN}@bvocale)
exten => _5XXX,2,Voicemail(${EXTEN}@bvocale)
exten => _4XXX,2,Voicemail(${EXTEN}@bvocale)
;les numéros à composer
exten => 399,1,VoicemailMain(${CALLERID(num)}@bvocale)
exten => 5999,1,VoicemailMain(${CALLERID(num)}@bvocale)
exten => 4999,1,VoicemailMain(${CALLERID(num)}@bvocale)
En claire :
Ici nous avons :
Pour les Clients Asterisk :
 Les messages vocaux seront transférés sur le numéro de l’appelé
 Ils utiliseront le numéro 399 pour écouter leurs messages
Pour les client CME/SIP
 Les messages vocaux seront transférés sur le numéro de l’appelé
 Il utiliseront le numéro 5999 pour écouter leurs messages
Pour les clients CME/SCCP
 Les messages vocaux seront transférés sur le numéro de l’appelé
 Il utiliseront le numéro 4999 pour écouter leurs messages.
Dans le fichier suivant :
# vim voicemail.conf
[bvocale]
300 => 1234
301 => 1234
4000 => ,
4001 => ,
5000 => ,
5001 => ,
Cette configuration montre que les abonnés du CME ne saisiront aucun mot de passe
pour accéder à leur boîte vocale.
 Configuration du CME
Activation de la boite vocale pour les comptes CME/SCCP
Le compte 4000
Pour le compte 4001
Activation de la boite vocale pour les comptes CME/SIP
Pour le compte 5000
Pour le compte 5001
Nous avons remarqué que l’activation de la boîte vocale pour un compte CME/SCCP
est différente de celle d’un CME/SIP.
 Configuration du plan de numérotation pour joindre les boites vocales
Le cas CME/SCCP
Le cas CME/SIP
Place au test
Un abonné du CME/SIP tente de joindre celui de Asterisk qui ne va pas décrocher. Il
va donc lui laisser un message dans sa boîte vocale. Les informations de cette action
s’affichent clairement sur la console du serveur Asterisk comme le montre la capture
ci-dessous :
Ce dernier peut composer le 399 pour écouter ses messages en suivant les instructions
!
L’abonné du CME/SCCP peut aussi consulter sa boite vocale en composant le 4999
Tous les abonnés ont accès à leur boite vocale !
IV. Asterisk comme contrôleur SCCP
Asterisk en plus de supporter nativement les protocoles de signalisation IAX et SIP, il
supporte aussi celui de Cisco qui est le SCCP afin de piloter des téléphones Cisco à
travers quelques paramétrages.
Mise en œuvre
1. Télécharger et installer le module chan-sccp comme suit :
# cd ~/
# apt install git
# git clone https://github.com/chan-sccp/chan-sccp.git chan-sccp
Accéder au dossier du canal chan-sccp pour installer le module permettant à Asterisk
de devenir un contrôleur SCCP en exécutant les commandes suivantes :
# cd chan-sccp/
# ./configure --enable-conference
Qui doit finir par un truc de ce genre :
Ensuite exécuter les commandes
# make && make install
2. Gestion de modules
Se déplacer dans le répertoire de config d’Asterisk /etc/asterisk pour éditer le fichier
modules.conf
Il faudra donc désactiver le module de l’ancienne version de SCCP qui est
chan_skinny.so pour activer la nouvelle version qui est chan_sccp.so comme suit :
Pour que le nouveau module soit pris en compte, il faudra carrément arrêter le
serveur puis le démarrer à nouveau
# asterisk -rvvvvvvvvvvvvvvvvvvvvvvvvvvvv
core stop now
Puis le relancer comme suit :
3. Installation d’un serveur TFTP
Le serveur TFTP aura pour tâche d’héberger les fichiers de configuration des
téléphones IP.
On l’installe comme suit :
# apt install tftp-hpa tftpd-hpa -y
Après installation, il faudra éditer le fichier /etc/default/tftpd-hpa pour connaître son
répertoire.
Nous remarquons que son répertoire de base est désigné par le paramètre
TFTP_DIRECTORY qui a pour valeur /var/lib/tftpboot
 Attribuer ce répertoire à l’utilisateur tftp
# chown -R tftp:tftp /var/lib/tftpboot/
 Redémarrer le serveur
# service tftpd-hpa restart
 Copier les exemples de configuration des téléphones dans ce répertoire
Le dossier contenant les exemples de configurations des téléphones se trouve dans un
sous dossier de là où vous vous êtes placé pour télécharger le module chan-sccp par
git.
Vous pouvez vérifier si ce serveur tourne sur son port habituel 69
Le service tourne correctement !
4. Configuration proprement dite de Asterisk comme contrôleur SCCP
# cd /etc/asterisk
Définir les paramètres généraux du contrôleur dans la section [general]. Voici les
paramètres à modifier dans cette section :
# vim sccp.conf
Dans cette section, voici les paramètres à modifier
[general]
context = ec2lt
;deny=0.0.0.0/0.0.0.0
permit=0.0.0.0/0.0.0.0
;permit=192.168.1.0/255.255.255.0
localnet = 192.168.0.0/255.255.0.0
Note : Je suis dans le réseau 192.168.0.0/16
On définit un téléphone et on précise ses lignes :
Note : Dans la vraie vie, un téléphone IP a une adresse MAC unique, mais avec des
softphones comme dans notre cas, l’adresse MAC du téléphone est la même que celle
de la carte réseau de la machine hébergeant ledit softphone.
Voici l’adresse MAC de la carte réseau de la machine sur laquelle notre IP
Communicator est installé :
Donc on fait SEP suivit de cette adresse MAC en mettant tous les caractères en
majuscule
Donc voici les paramètres à modifier dans la section actual definition :
[SEP507B9D91F93A]
button = line, 98011,default
button = line, 98012
;permit=192.168.1.5/255.255.255.255
On crée les deux lignes que nous venons d’attribuer car nous aimerions que le
téléphone ait deux lignes. (98011 et 98012).
 Pour la ligne 98011
[98011]
id = 1000
type = line
pin = 1234
label = Phone 1 Line 1
description = Line 98011
mailbox = 10011
cid_name = Bory
cid_num = 98011
accountcode=79011
callgroup=1,3-4
pickupgroup=1,3-5
directed_pickup = on
directed_pickup_context = ""
pickup_modeanswer = on
;amaflags =
context = ec2lt
incominglimit = 2
transfer = on
vmnum = 600
meetme = on
meetmeopts = qxd
meetmenum = 700
trnsfvm = 1000
secondary_dialtone_digits = 9
secondary_dialtone_tone = Outside Dial Tone
musicclass=default
language=en
echocancel = on
silencesuppression = off
setvar=testvar2=my value
dnd = reject
parkinglot = myparkspace
On fait la même chose pour la ligne 98012
[98012]
id = 1001
type = line
pin = 1234
label = Phone 1 Line 2
description = Line 98012
mailbox = 10012
cid_name = Amadou
cid_num = 98012
accountcode=79002
callgroup=1,4-9
pickupgroup=1,3-9
directed_pickup = on
directed_pickup_context = "another"
pickup_modeanswer = on
echocancel = off
context = ec2lt
incominglimit = 2
transfer = on
vmnum = 600
trnsfvm = 1000
secondary_dialtone_digits = 9
secondary_dialtone_tone = Outside Dial Tone
musicclass=default
language=en
echocancel = on
silencesuppression = off
Nous allons éditer le fichier extensions.conf pour définir le contexte et le plan de
numérotation de nos utilisateurs
# vim extensions.conf
[ec2lt]
exten => 98011,1,Dial(SCCP/98011,40,tr)
exten => 98012,1,Dial(SCCP/98012,40,tr)
 Rendez-vous dans le dossier du serveur TFTP
On passe maintenant à l’adaptation du fichier de configuration de chaque téléphone
SCCP
# cd /var/lib/tftpboot
Note : On copie un exemple de configuration de téléphone dans un fichier dont le
nom est l’adresse MAC de la machine qui héberge le client SCCP. Ça se passe comme
suit :
# cp SEP0000000000.cnf.xml_annotated SEP507B9D91F93A.cnf.xml
Éditer ce fichier puis donner l’adresse du serveur Asterisk comme suit :
ça se passe dans la balise <processNodeName>
On édite ensuite le fichier XMLDefault.cnf.xml pour y mettre l’adresse du serveur
Asterisk, c’est le fichier de configuration par défaut de tous les téléphones se
trouvant toujours dans /var/lib/tftpboot
 On passe en suite à la configuration de notre softphone
ça se passe dans Menu > Préférences > Réseau pour y mettre l’adresse du serveur
Asterisk.
Quand on valide par la touche OK, voici ce qui devrait apparaître :
Notre IP communicator est bien enregistré !
Voici la réaction du serveur après l’enregistrement du softphone :
Place au test
Nous allons tester un appel entre nos anciens abonnés Asterisk et notre client IP
communicator
L’utilisateur bory qui a le numéro 100, va essayer de joindre l’abonné qui utilise le
IP communicator dont le numéro est 98011.
Le softphone qui sonne
Voici la réaction du serveur
Et quand il décroche :
Les deux abonnés arrivent à communiquer sans problèmes !
V. Kamailio
Kamailio (successeur des anciens OpenSER et SER) est un serveur SIP Open Source
publié sous GPLv2+, capable de gérer des milliers d'établissements d'appels par
seconde. Kamailio peut être utilisé pour créer de grandes plates-formes pour les
communications VoIP et en temps réel - présence, WebRTC, messagerie instantanée et
autres applications. De plus, il peut être facilement utilisé pour faire évoluer des
passerelles SIP vers PSTN, des systèmes PBX ou des serveurs multimédias comme
Asterisk, FreeSWITCH ou SEMS.
Kamailio peut être utilisé sur des systèmes aux ressources limitées ainsi que sur des
serveurs de classe opérateur. Il est écrit en C pur pour les systèmes de type
Unix/Linux avec des optimisations spécifiques à l'architecture pour offrir des
performances élevées. Kamailio Project vise à être un environnement collaboratif de
ses utilisateurs pour développer un serveur SIP sécurisé et extensible afin de fournir
des services de communication unifiée et VoIP modernes.
1. Installation de Kamailio
# apt-get install apache2 mariadb-server php php-mysql php-gd php-curl php-xml
libapache2-mod-php flex bison libcurl4-openssl-dev libpcre3-dev kamailio kamailio-
utils-modules kamailio-mysql-modules kamailio-presence-modules kamailio-xml-
modules kamailio-carrierroute-modules -y
2. Configuration du serveur SIP
Nous allons faire la configuration de base du serveur permettant de donner les
paramètres nécessaires pour générer sa base de données.
# vim /etc/kamailio/kamctlrc
 Dé-commenter les lignes suivantes en les adaptant à votre situation
## the SIP domain
SIP_DOMAIN=ec2lt.sn
DBENGINE=MYSQL
## database hostDBHOST=localhost
DBPORT=3306
## database name (for ORACLE this is TNS name)
DBNAME=kamailio
## database path used by dbtext, db_berkeley or sqlite
# DB_PATH="/usr/local/etc/kamailio/dbtext"
## database read/write user
DBRWUSER="kamailio"
## password for database read/write user
DBRWPW="kamailiorw"
## database read only user
DBROUSER="kamailioro"
## password for database read only user
DBROPW="kamailioro"
DBROOTUSER="root"
USERCOL="username"
 Faire la résolution de noms dans le fichier suivant :
# vim /etc/hosts
Test de connectivité
Résolution faite avec succès !
Si le serveur de base de données n’est pas sécurisé, il faudra le faire comme suit,
avant de passer à l’étape suivante.
# mysql
MariaDB [(none)]> UPDATE mysql.user SET plugin = NULL WHERE user = 'root' AND
plugin ='unix_socket';
Query OK, 1 row affected, 1 warning (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 1
MariaDB [(none)]>
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)
MariaDB [(none)]>
MariaDB [(none)]> SET PASSWORD FOR root@'localhost'=PASSWORD('passer123');
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit
Bye
root@bory-diallo:~#
Le nouveau mot de passe de notre serveur de base de données est passer123
3. Création de la base de données de kamailio
Kamailio utilise une base de données pour stocker les informations de ses abonnés.
Pour la générer, on procède comme suit :
# kamdbctl create
✔ Vous entrez le mot de passe de root que venez de définir
✔ Vous choisissez l’encodage Big5
✔ Vous répondez par y à toutes les questions qui seront posées
Et ça devrait très bien se passer !
Voici la preuve que tout s’est bien passé :
Vérifions si la base de données a été générée
Vous pouvez aussi vérifier si les tables ont bien été générée !
Voici quelques informations concernant notre serveur Kamailio
4. Création des utilisateurs
# kamctl add numéro mot_de_passe
Nous venons de créer cinq comptes : 500, 501, 502, 503 et le 504
Voici d’ailleurs la preuve
Place au test
Un utilisateur va tenter de se connecter avec le compte 500 à travers un softphone
Zoiper
L’utilisateur 500 s’est connecté avec succès !
Un deuxième compte va se connecter avec Microsip
Test d’appels
Test d’envoi de SMS
De l’autre côté
Après avoir rédigé sa réponse, il clique sur la touche Entrée pour valider l’envoi
Test appels vidéo
Sans aucune configuration particulière, Kamailio supporte les services que nous
venons de tester.
VI. Trunk CallManager Express & KAMAILIO
Le but de cette partie est de faire un Trunk entre le serveur CME et Kamailio qui
permettra au clients Kamailio de passer des appels vers le CME et inversement.
Config côté CME
CallManager Express (CME) est un serveur de téléphonie propriétaire à Cisco. Il
permet de gérer un nombre limités d’abonnés.
Architecture
 Configuration IP
 Activation du port Skinny et définition du nombre de téléphones
CME(config)#telephony-service
CME(config-telephony)#ip source-address 192.168.10.254 port 2000
CME(config-telephony)#max-ephone 15
CME(config-telephony)#max-dn 15
CME(config-telephony)#create cnf-files version-stamp 7960
Creating CNF files
CNF-FILES: Clock is not set or synchronized, retaining old versionStamps
CME(config-telephony)#exit
CME(config)#
 Création des numéros
Un premier numéro
CME(config)#ephone-dn 1
CME(config-ephone-dn)#number 1000
CME(config-ephone-dn)#exit
CME(config)#ephone-dn 2
Un deuxième numéro
CME(config-ephone-dn)#number 1001
CME(config-ephone-dn)#exit
CME(config)#ephone-dn 3
CME(config-ephone-dn)#number 1002
CME(config-ephone-dn)#exit
CME(config)#
 Activation de l’auto assignation des numéros
CME(config)#telephony-service
CME(config-telephony)#auto assign 1 to 15
CME(config-telephony)#exit
CME(config)#
Place au test
Nous allons utiliser un softphone IPcommunicator pour se connecter
Quand il lance son softphone, il devra renseigner l’adresse du CME en cliquant sur
Menu > Préferences > Réseau
Ensuite valider afin de s’enregistrer
La preuve que le softphone est enregistré avec succès :
Les traces de son enregistrement sur la console du serveur :
Un autre softphone vient aussi de se connecter, voici ses traces
Le 1001 qui reçoit l’appel du 1000
Les deux abonnés du CME communiquent sans problèmes !
Configurations Coté Kamailio
 Activer kamailio pour cet effet
# vim /etc/default/kamailio
 Créer une route vers le CME
Dans la section request_route entre les routes (PSTN) et (LOCATION)
# vim /etc/kamailio/kamailio.cfg
Note : On définit toujours les routes dans le contexte request_route
route(CME) ;
 Définition de la méthode
Note : On définit toujours les méthodes en dehors du contexte request_route
Nous allons ensuite indiquer à kamailio comment joindre les abonnés du CME.
Toujours dans le même fichier. Cette partie est l’équivalent du dialplan chez Asterisk.
Cette fois-ci c’est après la section request_route
route[CME]{
if(($rU=~"^1[0-9][0-9][0-9]$")){
$ru = "sip:" + $rU + "@" + "192.168.10.254:5060";
route(RELAY);
exit;
}
}
En claire
Traduction : Les lignes barbares ci-dessus signifient que : Tout numéro composé
commençant par 1 et suivit de trois chiffres compris entre 0 et 9, doit être redirigé
vers le CME qui a pour adresse 192.168.10.254. Vu que les numéro des abonnés du
CME sont de la forme : 1XXX
 Arrêter le service et ensuite le démarrer
# service kamailio stop
# service kamailio start
La configuration est finie de ce côté !
Définition du dialplan sur le CME
Côté CME, nous allons définir un plan de numérotation qui permettra de joindre les
clients Kamailio.
CME(config)#dial-peer voice 2 voip
CME(config-dial-peer)#destination-pattern 5..
CME(config-dial-peer)#session protocol sipv2
CME(config-dial-peer)#session target ipv4:192.168.4.148
CME(config-dial-peer)#codec g711ulaw
CME(config-dial-peer)#exit
CME(config)#
Place au test
Test 1 : Kamailio ===> CME
Les appels de Kamailio vers le CME
Sur le client CME
Test 2 : CME ===> Kamailio
Les appels du CME vers Kamailio
Les deux serveurs communiquent sans aucun problème !
VII. Les enregistrements SRV & NAPTR
Dans cette partie, nous allons coupler notre serveur Kamailio à un DNS afin de pouvoir joindre les
abonnés dudit serveur par un TEL/URI
7.1 : Définition de NAPTR
Un pointeur d'autorité de nom ( NAPTR ) est un type d' enregistrement de ressource
dans le système de noms de domaine d'Internet.
Les enregistrements NAPTR sont le plus souvent utilisés pour des applications de
téléphonie. Internet, par exemple, dans le mappage de serveurs et d'adresses
d'utilisateur dans le protocole SIP ( Session Initiation Protocol ). La combinaison
d'enregistrements NAPTR avec des enregistrements de service (SRV) permet
l'enchaînement de plusieurs enregistrements pour former des règles de réécriture
complexes qui produisent de nouvelles étiquettes de domaine ou des identificateurs de
ressources uniformes (URI).
Les noms de ressources uniformes ( URN ) sont un sous-ensemble d'identificateurs de
ressources uniformes ( URI ) utilisés pour les identificateurs abstraits, tels que le nom
d'une personne ou son numéro de téléphone. Pour que les URN aient un sens, elles
doivent être mappées sur une ressource concrète quelconque. Les URL (Uniform
Resource Locator) sont souvent utilisés pour décrire de telles ressources, telles qu'un
nom d'hôte d' ordinateur ou un fichier local.
L’enregistrement NAPTR facilite la normalisation des URN. Les enregistrements
NAPTR mappent entre des ensembles d'URN, d'URL et de noms de domaine simples
et suggèrent aux clients les protocoles disponibles pour la communication avec la
ressource mappée.
7.2 : Définition de SRV
Un enregistrement SRV ou enregistrement de service est une catégorie de données du
DNS d'Internet qui vise à indiquer quels sont les services disponibles.
Ce type d'enregistrement est défini dans la RFC 2782.Les enregistrements SRV sont
souvent utilisés par les clients Microsoft Windows afin de trouver le contrôleur de
domaine pour un service donné.
Par ailleurs, les enregistrements SRV sont communément utilisés en association avec
les protocoles standards ci- dessous :
 XMPP (Jabber)
 SIP
 LDAP
7.3 : Objectifs
Notre objectif est d’utiliser les enregistrements de type SRV et NAPTR en téléphonie
sur IP pour :
 Faciliter le paramétrage des terminaux SIP;
 Permettre aux terminaux, connaissant simplement le nom de domaine, de faire
des requêtes SRV pour avoir l’adresse IP du Serveur et pouvoir se connecter ;
 Permettre l’interconnexion de deux serveurs de téléphonie ;
 Permettre l’utilisation du TEL/URI au lieu du SIP/URI pour pouvoir joindre les
abonnes se trouvant dans d’autres serveurs SIP.
Le but de cette partie est de faire intervenir un DNS dans les configurations de
Kamailio afin de pouvoir joindre les abonnés par TEL/URI
1. Mise en place du DNS
# apt install bind9 bind9utils
# cd /etc/bind
# vim named.conf.default-zones
# cp db.local ec2lt.zone
# vim ec2lt.zone
Les enregistrements SRV
Un enregistrement SRV ou enregistrement de service est une catégorie de données du
DNS d'Internet qui vise à indiquer quels sont les services disponibles.
Ce type d’enregistrement est souvent utilisé en association avec certains protocoles
standards comme : XMPP, SIP, LDAP.
La syntaxe d’un enregistrement de type SRV
 Service : le nom symbolique (commençant généralement par un symbole de
soulignement) du service concerné (par exemple _sip ).
 Protocole : généralement, c'est soit _tcp pour TCP, soit _udp pour UDP.
 Nom.de.domaine : le domaine de validité de l'enregistrement (pleinement
qualifié au format FQDN ou local à la zone DNS en cours de définition pour la
même autorité d'origine).
 TTL : champ standard DNS indiquant la durée de validité (Time-To-Live, durée
de vie) de la réponse (en secondes).
 Classe : champ standard DNS indiquant la classe d'adressage (c'est toujours IN
pour Internet).
 Type : l'identifiant du type d'enregistrement DNS (toujours SRV ici pour un
enregistrement de service) ;
 Priorité : la priorité du serveur cible (valeur entière non négative, plus elle est
faible, plus ce serveur sera utilisé s'il est disponible) ;
 Poids : poids relatif pour les enregistrements de même priorité ;
 Port : le numéro de port (TCP ou UDP selon le protocole ci-dessus) où le
service est disponible ;
 Cible : le nom du serveur qui fournit le service concerné (doit être résolu en
adresse IPv4 ou IPv6 par d'autres requêtes DNS sur les enregistrements A ou
AAAA du nom de service cible) avec le protocole et sur le port indiqué.
Mise en place
On suppose que la déclaration de la zone est déjà faite dans le fichier
/etc/named.conf.default-zones avant de faire ceci dans le fichier indiqué :
Mettre à jour le fichier /etc/resolv.conf
Redémarrer le serveur
# service bind restart
Test de bon fonctionnement du DNS
Notre serveur DNS marche à merveille !
Tester les enregistrements SRV comme suit :
Pour le canal udp
# dig _sip._udp.ec2lt.sn SRV
Pour le canal tcp
# dig _sip._tcp.ec2lt.sn SRV
 Passons aux enregistrements NAPTR
# vim ec2lt.zone
Note : Les numéros Kamailio sont sous la forme 5XX
On peut aussi tester les enregistrement NAPTR comme suit :
# dig -t naptr 0.0.5.ec2lt.sn
Les enregistrements NAPTR fonctionnent à merveille !
 Chargement du module enum.so
ENUM, est un mécanisme permettant d'utiliser un numéro de téléphone comme clé de
recherche dans le DNS pour trouver la manière de joindre une personne ou une autre
entité.
L'objectif d'ENUM est d'utiliser un numéro unique pour accéder à plusieurs
identifiants de service caractérisant un individu : Grâce au numéro ENUM, on pourra
atteindre un e-mail, une URL, un numéro de téléphone (fax, mobile, SIP), etc. Les
priorités d'accès à ces différents services seront définies par l'utilisateur.
# cd /etc/kamailio
# vim kamailio.cfg
 Activer le module enum
 Création de la route enum
 Définition de la méthode
 Préciser au niveau du paramètre alias le domaine qu’il gère
 Redémarrer le serveur
Place au test
Un utilisateur souhaitant se connecter, lance son softphone Microsip et fait les actions
suivantes dans la rubrique Paramètres
Il souhaite utiliser le compte 502
Le compte s’est enregistré avec succès !
Test d’appels
Le 502 qui va appeler le 501
Voici le 501 qui reçoit l’appel
L’appel par domaine marche avec succès !
Voici un appel vidéo
VIII. Trunk Kamailio & Asterisk
Le but est claire. Permettre aux abonnés Kamailio de communiquer avec ceux
d’Asterisk et inversement.
Config côté Asterisk
L’algo est claire. Pour qu’un abonné d’un serveur puisse appeler un autre abonné, il
faut que ce dernier dispose d’un compte sur ce serveur.
# vim sip.conf
[sipkamailio]
username=sipkamailio
secret=
type=friend
host=192.168.4.148
context=ec2lt
allow=ulaw
En claire
Note : Le champ secret est vide, car le serveur pour lequel le compte est créé
(Kamailio à l’occurrence) n’a pas moyen d’authentifier les comptes serveur comme le
fait le CME avec les arguments de la commande sip-ua
# vim extensions.conf
exten => _5XX,1,Dial(SIP/sipkamailio/${EXTEN},40,tr)
Configuration côté kamailio
Il suffit juste de l’indiquer comment joindre les abonnés de Asterisk
# vim /etc/kamailio/kamailio.cfg
Dans la section request_route, on crée une route vers Asterisk comme suit :
# Route vers Asterisk
route(ASTERISK);
En dehors de la section request_route, nous allons définir une méthode liée à cette
route.
route[ASTERISK]{
if(($rU=~"^3[0-9][0-9]$")){
$ru = "sip:" + $rU + "@" + "192.168.2.164:5060";
route(RELAY);
exit;
}
}
 Redémarrer le serveur
# service kamailio restart
Tests d’appels
Un client d’Asterisk qui tente d’appeler un abonné de Kamailio.
Le softphone Kamailio qui sonne.
Faisons le test dans le sens inverse : C’est à dire, l’abonné du Kamailio qui appelle
celui d’Asterisk
Le softphone Asterisk qui sonne
Nous constatons que les appels passent de part et d’autre !
IX. Freeswitch
Étant un logiciel libre de VoIP multi-plateformes lancé en 2006, FreeSWITCH est
aussi un serveur d'applications gratuit et open source pour la communication en
temps réel, WebRTC, télécommunications, vidéo et Voice over Internet Protocol.
Multiplateforme, il fonctionne sous Linux, Windows, macOS et FreeBSD. En claire, est
un serveur de TOIP issu du serveur Asterisk mais ses fichiers de configuration sont au
format xml.
Pour sa simplicité et ses performances, beaucoup de plateformes de communication
l’intègre. C’est le cas de FusionPBX utilisé par certains opérateurs de télécoms en
Afrique et Bigbluebutton qui est une une plateforme de webconference.
Le but de cette rubrique est de maîtriser l’installation de ce logiciel et aussi de se
familiariser à la mise en place de ses services de base.
1. Installation
Les prérequis
# apt-get install --yes build-essential pkg-config uuid-dev zlib1g-dev libjpeg-dev
libsqlite3-dev libcurl4-openssl-dev libpcre3-dev libspeexdsp-dev libldns-dev libedit-dev
libtiff5-dev yasm libopus-dev libsndfile1-dev unzip libsmpp34-dev git
 Installer le paquet libilbc-dev
Il faudra faire les actions suivantes :
Ajouter la ligne deb http://www.deb-multimedia.org stretch main dans
/etc/apt/sources.list
# nano /etc/apt/sources.list
comme suit :
 Autoriser la mise à jour depuis des dépôts non signés et non autorisés
# apt-get update -oAcquire::AllowInsecureRepositories=true
Et en suite :
# apt-get install deb-multimedia-keyring -oAcquire::AllowInsecureRepositories=true
# apt install libilbc-dev
 Passons maintenant au téléchargement de Freeswitch
# cd /usr/src
# wget https://files.freeswitch.org/freeswitch-releases/freeswitch-1.8.6.zip
 Le dézipper
# unzip freeswitch-1.8.6.zip
 La gestion des modules
# vim freeswitch-1.8.6/modules.conf
Dans la capture qui suit, il faut s’assurer que applications/mod_signalwire est
commenté.
En suite :
Après
En suite
Ensuite
Suivant
 Configuration de freeswitch
# ./configure
Qui doit finir par un truc de ce genre :
Si vous rencontrez des erreurs pendant la configuration, il faudra juste installer les
paquets suivants :
# apt install libreadline-dev lua5.2 lua5.2-doc liblua5.2-dev -y
Et ensuite faire les actions suivantes
# cp /usr/include/lua5.2/*.h /usr/src/freeswitch-1.8.6/src/mod/languages/mod_lua/
En claire
Faire le lien entre le langage et le serveur
# ln -s /usr/lib/x86_64-linux-gnu/liblua5.2.so /usr/lib/x86_64-linux-gnu/liblua.so
En claire
# make
Qui doit normalement finir par un truc de ce genre :
# make install
Si l’installation se passe correctement, nous aurons des informations par rapport à
l’installation des sons comme suit :
 Installer les fichiers fichiers sons en français à l’aide des commandes ci-
dessous :
# make cd-sounds-fr-install
# make uhd-sounds-fr-install
# make hd-sounds-fr-install
# make sounds-fr-install
Ensuite créer les fichiers de configuration comme suit :
# make samples
Maintenant que l’installation est terminée, on doit se familiariser aux répertoires de
configuration de FreeSWITCH qui est /usr/local/freeswitch
Et c’est le nouveau dossier de configuration de freeswwitch !
2. Démarrage de Freeswitch
Pour démarrer freeswitch on tape la commande ./bin/freeswitch -nc dans le dossier
/usr/local/freeswitch
Pour accéder à l’interface de freeswitch on lance la commande ./bin/fs_cli toujours
dans le même dossier, comme le montre la capture ci-dessous :
On est enfin dans la console de freeswitch !
Une fois dans la console freeswitch on peut taper la commande /help pour voir les
commande disponibles
La commande reloadxml permet de recharger les fichiers de configuration de
freeswitch qui sont au format xml
3. Les services de bases de Freeswitch
Nous allons découvrir les services de base de notre nouveau serveur SIP.
3.1. Configuration des téléphones SIP et tests d’appels
Après installation de freeswitch, des comptes SIP sont créés par défaut et on peut les
voir dans le dossier /usr/local/freeswitch/conf/directory/default/
Nous voyons clairement qu’il existe 20 comptes SIP de 1000 à 1019 et un compte
SCCP par défaut.
Le mot de passe de ces comptes est par défaut : 1234 et est fixé dans le fichier
/usr/local/freeswitch/conf/vars.xml
Nous allons nous connecter au compte 1001
Un autre utilisateur s’est aussi connecté avec le compte 1000
Test d’appels
Le 1001 qui reçoit l’appel du 1000
3.2 Création de comptes SIP sur Freeswitch
Il existe un script en perl de gestion de freeswitch qui s’occupe des histoires des
comptes.
Exécuter la commande suivante pour ajouter un compte :
# cd /usr/local/freeswitch/scripts
# cp -r /usr/src/freeswitch-1.8.6/scripts/perl/ ./
# perl/add_user 1020
Nous venons d’ajouter l’utilisateur 1020
Voici la preuve
Il faudra ensuite recharger les configurations de freeswitch
Testons notre nouveau compte
Voici le contenu de notre nouveau fichier
# nano /usr/local/freeswitch/conf/directory/default/1020.xml
Un compte freeswitch comporte :
user id
des paramètres
des variables
Notre nouveau compte parvient à appeler les autres comptes. Mais lorsque nous
utilisons un autre compte pour appeler le nouveau compte qui est 1020, nous
remarquons que l’appel ne passe pas.
Pour remédier à ce problème, il faudra définir une extension pour ce numéro. Le
1020 bien sûr !
Nous allons éditer le plan de numérotation
# nano /usr/local/freeswitch/conf/dialplan/default.xml
Nous constatons que le dialplan ne gère que des numéros compris entre 1000 à 1019.
Faisons la modification suivante :
Ce qui signifie que le troisième digit peut être aussi à 2.
Il faudra ensuite recharger les fichiers de configuration
Il suffit de mettre reloadxml dans la console de freeswitch
Place au test
Le numéro 1000 va tenter de joindre le 1020
Le 1020 reçoit à présent des appels correctement !
3.3 Ajout d’un ensemble de comptes
Nous allons ajouter des comptes compris entre 1021 et 1030
Nous utiliserons donc la commande suivante :
# cd /usr/local/freeswitch
# scripts/perl/add_user --users=1021-1030
Voici la preuve
Comme toujours, recharger les fichiers de configuration du serveur avec la commande
reloadxml dans sa console !
Place au test
Nous allons utiliser l’un des comptes que nous venons de créer. Le 1029 pour être
précis
Il reçoit un appel
On constate que le 1029 reçoit l’appel, car dans le dialplan les numéros ayant 2
comme troisième digit était prévu !
Note : Le port d’écoute de freeswitch est géré par le paramètre
‘’internal_sip_port=5060’’ du fichier /usr/local/freeswitch/conf/vars.xml qu’on peut
modifier à tout moment !
3.4 Gestion des conférences
mod_conference fournit un service de passerelle de conférence entrante et sortante
pour FreeSWITCH. Il peut traiter plusieurs débits binaires, charger divers profils qui
spécifient les commandes DTMF, jouer des sons et des tonalités rapides, et de
nombreuses autres fonctions .
Les conférences créées dans le plan de numérotation utilisent des profils définis dans
/usr/local/freeswitch/conf/autoload_configs/conference.conf.xml. Dans ce fichier
plusieurs profils de conférence sont définis et les numéros pour attribués à ces
conférences sont définis dans le fichier /usr/local/freeswitch/conf/dialplan/default.xml.
Voici le un tableau récapitulatif des numéros de conférence selon le taux
d’échantillonnage
Nous pouvons regarder certains profils dans le fichier
/usr/local/freeswitch/conf/autoload_configs/conference.conf.xml
 Le profile wideband
 Le profile ultrawideband
 Le profile video-mcu-stereo-720
On peut regarder aussi la définition du plan de numérotation des conférences dans
fichier /usr/local/freeswitch/conf/dialplan/default.xml
 Tout numéro commençant par 30 suivit de 2 chiffres pour accéder à la
conférence du profile default
 Tous numéros commençant par 31 suivant de 2 chiffres pour accéder à la
conférence du profile wideband
 Tous numéros commençant par 33 suivit de 2 chiffres pour accéder à la
conférence du profile cdquality
 Tous numéros commençant par 36 suivis de 2 chiffres pour accéder à la
conférence du profile video-mcu-stereo-720
Place au test
On peut tester par exemple une conférence en composant le numéro 3000.
Naturellement vous serez le seul participant de ladite conférence au début, mais
d‘autres abonnés pourront vous y rejoindre !
On constate qu’il y a trois comptes connectés actuellement : le 1029 et le 1005 et le
1016
Un utilisateur va composer le 3000. Il choisit de faire une conférence
Un autre compose le même numéro, 3000. Mais en appel vidéo cette-fois ci
Note : Cette conférence est réservée au appels audios. Mais elle supporte tout de
même les appels vidéos !
Conférence Vidéo
Aucune configuration à faire, juste composer le 3600 qui s’occupe de cette action
Sur l’un des smartphones connectés
Freeswitch nous réserve d’innombrables fonctionnalités dont nous n’avons pas eu le
temps d’énumérer dans ce TP.
Conclusion
Ce TP est hyper éloquent en ce qui concerne la vulgarisation de la puissance des
solutions de ToIP et de la réduction drastique des coûts de communications dans les
entreprises.
De nos jours, toute entreprise " économiquement correcte " utilise en son sein au
moins l’une des solutions de ToIP énumérées dans ce TP, car elles ne cherchent qu’à
maximiser le rendement et le profit tout en minimisant les coûts.

Mais conteúdo relacionado

Mais procurados

Installation et configuration asterisk
Installation et configuration asteriskInstallation et configuration asterisk
Installation et configuration asterisk
Gilles Samba
 

Mais procurados (20)

Implémentation de la QoS au sein d'un IP/MPLS - Présentation
Implémentation de la QoS au sein d'un IP/MPLS - PrésentationImplémentation de la QoS au sein d'un IP/MPLS - Présentation
Implémentation de la QoS au sein d'un IP/MPLS - Présentation
 
Vulnérabilités de vo ip et sécurisation
Vulnérabilités de vo ip et sécurisationVulnérabilités de vo ip et sécurisation
Vulnérabilités de vo ip et sécurisation
 
éTude et mise_en_place_d'une_solution_voip_sécurisée
éTude et mise_en_place_d'une_solution_voip_sécuriséeéTude et mise_en_place_d'une_solution_voip_sécurisée
éTude et mise_en_place_d'une_solution_voip_sécurisée
 
Installation et configuration asterisk
Installation et configuration asteriskInstallation et configuration asterisk
Installation et configuration asterisk
 
Voix et téléphonie sur IP- Convergence voix et données
Voix et téléphonie sur IP- Convergence voix et données Voix et téléphonie sur IP- Convergence voix et données
Voix et téléphonie sur IP- Convergence voix et données
 
Implémentation de la QoS au sein d'un IP/MPLS - Rapport
Implémentation de la QoS au sein d'un IP/MPLS - RapportImplémentation de la QoS au sein d'un IP/MPLS - Rapport
Implémentation de la QoS au sein d'un IP/MPLS - Rapport
 
Memoire final sfallou
Memoire final sfallouMemoire final sfallou
Memoire final sfallou
 
Etude de la VoIP
Etude de la VoIPEtude de la VoIP
Etude de la VoIP
 
Rapprot de satge supervision de résau par EyesOfNetwok
Rapprot de satge supervision de résau par EyesOfNetwokRapprot de satge supervision de résau par EyesOfNetwok
Rapprot de satge supervision de résau par EyesOfNetwok
 
Trunk VoiP Asterisk strongsawn openvpn
Trunk VoiP Asterisk strongsawn openvpnTrunk VoiP Asterisk strongsawn openvpn
Trunk VoiP Asterisk strongsawn openvpn
 
Voip FreeSwitch
Voip FreeSwitchVoip FreeSwitch
Voip FreeSwitch
 
Rapport de fin d'etude
Rapport  de fin d'etudeRapport  de fin d'etude
Rapport de fin d'etude
 
Etude et Mise en oeuvre d'une architecture de téléphonie sur IP sécurisée au ...
Etude et Mise en oeuvre d'une architecture de téléphonie sur IP sécurisée au ...Etude et Mise en oeuvre d'une architecture de téléphonie sur IP sécurisée au ...
Etude et Mise en oeuvre d'une architecture de téléphonie sur IP sécurisée au ...
 
TELEPHONIE SUR IP
TELEPHONIE SUR IPTELEPHONIE SUR IP
TELEPHONIE SUR IP
 
Mise en place de la telephonie ip avec Asterisk
Mise en place de la telephonie ip avec AsteriskMise en place de la telephonie ip avec Asterisk
Mise en place de la telephonie ip avec Asterisk
 
Présentation VOIP
Présentation  VOIPPrésentation  VOIP
Présentation VOIP
 
Architecture VoIP Protocol H323
Architecture VoIP Protocol H323Architecture VoIP Protocol H323
Architecture VoIP Protocol H323
 
Mémoire de fin d'étude: Migration de la téléphonie classique vers la téléphon...
Mémoire de fin d'étude: Migration de la téléphonie classique vers la téléphon...Mémoire de fin d'étude: Migration de la téléphonie classique vers la téléphon...
Mémoire de fin d'étude: Migration de la téléphonie classique vers la téléphon...
 
projet fin d'étude IWAN
projet fin d'étude IWANprojet fin d'étude IWAN
projet fin d'étude IWAN
 
La VoIP, une solution d'avenir pour les entreprises... mais pas seulement !
La VoIP, une solution d'avenir pour les entreprises... mais pas seulement !La VoIP, une solution d'avenir pour les entreprises... mais pas seulement !
La VoIP, une solution d'avenir pour les entreprises... mais pas seulement !
 

Semelhante a Amadou Bory Diallo (document sur la téléphonie sur IP)

Reseaux sans fil dans les pays en developpement
Reseaux sans fil dans les pays en developpementReseaux sans fil dans les pays en developpement
Reseaux sans fil dans les pays en developpement
mimanou
 
Dossier de clôture : Fusex Padmée 2010
Dossier de clôture : Fusex Padmée 2010Dossier de clôture : Fusex Padmée 2010
Dossier de clôture : Fusex Padmée 2010
CLES-FACIL
 
Eclairage public
Eclairage publicEclairage public
Eclairage public
Rasax Tovo
 
Conception et Réalisation d'un Système Intégré de Vote Electronique cas: Haiti
Conception et Réalisation d'un Système Intégré de Vote Electronique cas: HaitiConception et Réalisation d'un Système Intégré de Vote Electronique cas: Haiti
Conception et Réalisation d'un Système Intégré de Vote Electronique cas: Haiti
Carlos Philippe
 
Enquete teletravail raudin_2011-vers_finale_2_
Enquete teletravail raudin_2011-vers_finale_2_Enquete teletravail raudin_2011-vers_finale_2_
Enquete teletravail raudin_2011-vers_finale_2_
GreenICTies
 

Semelhante a Amadou Bory Diallo (document sur la téléphonie sur IP) (20)

F5.3
F5.3F5.3
F5.3
 
Guide iphone dce solutions
Guide iphone dce solutionsGuide iphone dce solutions
Guide iphone dce solutions
 
Reseaux sans fil dans les pays en developpement
Reseaux sans fil dans les pays en developpementReseaux sans fil dans les pays en developpement
Reseaux sans fil dans les pays en developpement
 
Catalogue de formation 2018
Catalogue de formation 2018Catalogue de formation 2018
Catalogue de formation 2018
 
Dossier de clôture : Fusex Padmée 2010
Dossier de clôture : Fusex Padmée 2010Dossier de clôture : Fusex Padmée 2010
Dossier de clôture : Fusex Padmée 2010
 
Tome 2 "Rapport annuel de l'Envoyé PME 2013-2014" - Analyse de la mise en oe...
Tome 2 "Rapport annuel de l'Envoyé PME 2013-2014" -  Analyse de la mise en oe...Tome 2 "Rapport annuel de l'Envoyé PME 2013-2014" -  Analyse de la mise en oe...
Tome 2 "Rapport annuel de l'Envoyé PME 2013-2014" - Analyse de la mise en oe...
 
Présentation exhaustive des protocoles SMTP, IMAP, POP3 et MIME
Présentation exhaustive des protocoles SMTP, IMAP, POP3 et MIMEPrésentation exhaustive des protocoles SMTP, IMAP, POP3 et MIME
Présentation exhaustive des protocoles SMTP, IMAP, POP3 et MIME
 
Conception et developpement d'une application mobile Android e-location
Conception et developpement d'une application mobile Android e-locationConception et developpement d'une application mobile Android e-location
Conception et developpement d'une application mobile Android e-location
 
Deviens un Ninja avec Angular2
Deviens un Ninja avec Angular2Deviens un Ninja avec Angular2
Deviens un Ninja avec Angular2
 
Eclairage public
Eclairage publicEclairage public
Eclairage public
 
Complet
CompletComplet
Complet
 
Rapport pfev7
Rapport pfev7Rapport pfev7
Rapport pfev7
 
Bureautique
BureautiqueBureautique
Bureautique
 
Conception et Réalisation d'un Système Intégré de Vote Electronique cas: Haiti
Conception et Réalisation d'un Système Intégré de Vote Electronique cas: HaitiConception et Réalisation d'un Système Intégré de Vote Electronique cas: Haiti
Conception et Réalisation d'un Système Intégré de Vote Electronique cas: Haiti
 
19
1919
19
 
La VoIP, une solution d'avenir pour les entreprises... mais pas seulement !
La VoIP, une solution d'avenir pour les entreprises... mais pas seulement !La VoIP, une solution d'avenir pour les entreprises... mais pas seulement !
La VoIP, une solution d'avenir pour les entreprises... mais pas seulement !
 
Enquete teletravail raudin_2011-vers_finale_2_
Enquete teletravail raudin_2011-vers_finale_2_Enquete teletravail raudin_2011-vers_finale_2_
Enquete teletravail raudin_2011-vers_finale_2_
 
Etat des lieux des Fablabs 2014
Etat des lieux des Fablabs 2014Etat des lieux des Fablabs 2014
Etat des lieux des Fablabs 2014
 
Cours Ht Eivd 02
Cours Ht Eivd 02Cours Ht Eivd 02
Cours Ht Eivd 02
 
Rapport de pfe gestion de parc informatique et Helpdesk
Rapport de pfe gestion de parc informatique et HelpdeskRapport de pfe gestion de parc informatique et Helpdesk
Rapport de pfe gestion de parc informatique et Helpdesk
 

Amadou Bory Diallo (document sur la téléphonie sur IP)

  • 1. RÉPUBLIQUE DU SÉNÉGAL Un peuple, Un but, Une foi Ministère de l’Enseignement Supérieur, de la Recherche et de l’Innovation École Centrale des logiciels Libres et de Télécommunications Téléphonie sur IP & services Présenté par : Prof : Amadou Bory DIALLO Dr Samuel OUYA
  • 2. Sommaire Introduction..........................................................................................................................................4 Avantages de la ToIP.........................................................................................4 Les principaux atouts de la téléphonie sur IP.......................................................5 Le protocole SIP...................................................................................................................................5 Les entités de SIP........................................................................................................................6 Quelques requêtes SIP........................................................................................6 Les principales réponses SIP...............................................................................7 I. Asterisk..............................................................................................................................................7 Fonctionnalités d’Asterisk...................................................................................8 Quelques fichiers de configuration.......................................................................8 Installation d’Asterisk.........................................................................................9 Explication du rôle de quelques fichiers d’Asterisk.............................................13 Mise en place de services sous Asterisk.............................................................14 1. Activation de la langue française sur Asterisk......................................................................14 2. Création de comptes et tests des premiers appels audios......................................................15 3. Les appels Vidéos..................................................................................................................18 4. Prise en charge de la boite vocale.........................................................................................20 5. Personnalisation de sonnerie.................................................................................................22 5.1 Avec une classe de musique..........................................................................................22 5.2 Avec la fréquence d’une radio.......................................................................................23 6. Inclusion de contextes...........................................................................................................24 7. La conférence de base...........................................................................................................28 8. Mise en Place d’un centre d’appel........................................................................................28 9. Personnalisation de la sonnerie selon l’appelant...................................................................31 10. Messagerie instantanée avec Asterisk.................................................................................33 11. Asterisk & le PAP de Cisco.................................................................................................37 Architecture..........................................................................................................................38 Explication de l’architecture................................................................................................38 But de la configuration.........................................................................................................38 Mise en place........................................................................................................................38 Accès à l’interface du PAP...................................................................................................39 II. ToIP en environnement CISCO.....................................................................................................44 Le protocole SCCP............................................................................................44 Étapes d’enregistrement d’un client SCCP...............................................................................44 Configuration d’un CUCME ou CME..................................................................45 Configuration du CME comme contrôleur SCCP.....................................................................46 Configuration du CME comme contrôleur SIP.........................................................................53 III. Trunk entre un serveur Asterisk & un serveur CME....................................................................58 Configuration côté Asterisk...............................................................................59 Configuration du CME......................................................................................61 Trunk CME/SCCP & Asterisk.............................................................................64 Gestion de boîtes vocales..................................................................................66 IV. Asterisk comme contrôleur SCCP................................................................................................70 Mise en œuvre.................................................................................................70
  • 3. V. Kamailio.........................................................................................................................................85 1. Installation de Kamailio..............................................................................85 2. Configuration du serveur SIP.......................................................................85 3. Création de la base de données de kamailio.................................................87 4. Création des utilisateurs..............................................................................89 Test d’appels..............................................................................................................................91 Test d’envoi de SMS.................................................................................................................91 Test appels vidéo.......................................................................................................................93 VI. Trunk CallManager Express & KAMAILIO...............................................................................94 Config côté CME..............................................................................................94 Configurations Coté Kamailio............................................................................98 Définition du dialplan sur le CME...................................................................100 Test 1 : Kamailio ===> CME..........................................................................100 Test 2 : CME ===> Kamailio..........................................................................102 VII. Les enregistrements SRV & NAPTR........................................................................................103 7.1 : Définition de NAPTR..............................................................................103 7.2 : Définition de SRV...................................................................................104 7.3 : Objectifs................................................................................................104 1. Mise en place du DNS.......................................................................................................105 Les enregistrements SRV........................................................................................................105 VIII. Trunk Kamailio & Asterisk......................................................................................................114 Config côté Asterisk........................................................................................114 Configuration côté kamailio.............................................................................115 IX. Freeswitch...................................................................................................................................118 1. Installation.................................................................................................119 2. Démarrage de Freeswitch............................................................................126 3. Les services de bases de Freeswitch.............................................................128 3.1. Configuration des téléphones SIP et tests d’appels..........................................................128 3.2 Création de comptes SIP sur Freeswitch...........................................................................130 3.3 Ajout d’un ensemble de comptes......................................................................................134 3.4 Gestion des conférences....................................................................................................136 Conclusion........................................................................................................................................141
  • 4. Introduction La voix sur IP (VoIP, Voice over IP) est une technologie de communication vocale en pleine émergence. Elle fait partie d'un tournant dans le monde de la communication. En effet, la convergence du triple play (voix, données et vidéo) fait partie des enjeux principaux des acteurs de la télécommunication. Aujourd'hui au lieu de disposer à la fois d'un réseau informatique et d'un réseau téléphonique commuté (RTC), l'entreprise peut donc, grâce à la VoIP, tout fusionner sur un même réseau. Comme toute innovation technologique, la VoIP non seulement simplifie l'exploitation des réseaux mais aussi économise de l'argent à ses clients. Les entreprises dépensent énormément en communications téléphoniques, or le prix des communications de la ToIP (Téléphonie sur IP) est dérisoire en comparaison. En particulier, plus les interlocuteurs sont éloignés, plus la différence de prix est intéressante. De plus, la téléphonie sur IP utilise jusqu'à dix fois moins de bande passante que la téléphonie traditionnelle. Il semblerait que les entreprises après avoir émis un certain nombre de doutes sur la qualité de services, soient désormais convaincues de la plus grande maturité technologique des solutions VoIP proposées sur le marché. Le scénario vers lequel va s'orienter la téléphonie sur IP dépend beaucoup de l'évolution du réseau lui-même. En effet, si internet garde sa configuration actuelle où elle est essentiellement dimensionnée en fonction d'une qualité de service moyenne pour la transmission des données, cependant cette nouvelle technologie constitue une solution idéale pour le cas d'interconnexion de PBX d'entreprises. En effet, les entreprises multi-sites cherchent à économiser des dépenses énormes dues aux communications inter-sites. Il serait donc envisageable de profiter de cette nouvelle technologie émergente afin d'assurer cette interconnexion. Avantages de la ToIP La téléphonie sur IP séduit les entreprises avant tout grâce aux réductions de dépenses qu’elle permet : appels inter-sites gratuits, appels lointains à tarifs très bas, pas de frais de câblage supplémentaires. Mais la téléphonie IP propose encore d’autres avantages... Elle permet la transmission des communications vocales via des réseaux au protocole IP (en clair, par Internet dans la plupart des cas) et permet la convergence de tous les postes informatiques d’une entreprise en un seul réseau unifié, bien. Mais quels sont les avantages que procure la ToIP aux entreprises ?
  • 5. Les principaux atouts de la téléphonie sur IP ➢ Coûts d’installation : Économie sur les frais de câblage si vous possédez déjà un réseau Internet d’entreprise. La téléphonie IP utilise la même connectique. En d’autres termes, pas d’achat de câbles et de frais de pose à assumer. ➢ Coûts de communication : La téléphonie IP demande peu de bande passante. Les entreprises peuvent donc constituer un réseau privé pour relier plusieurs sites distants entre eux. Les communications téléphoniques entre ces derniers sont alors totalement gratuites. ➢ Simplicité de gestion : La téléphonie traditionnelle obligeait les équipes techniques et informatiques à composer avec des lignes séparées : les données informatiques d’un coté, données « voix » de l’autre. Grâce à la technologie Voix sur IP, cette distinction disparaît puisqu’il s’agit d’unique et même réseau. Les opérations de maintenance ou d’évolution sont donc simplifiées, ce qui constitue une source de gains de productivité pour l’entreprise. ➢ Évolutivité : Dans une architecture VoIP, il est très facile d’ajouter des postes supplémentaires ou d’agrandir le réseau, ce qui n’était pas le cas avec la téléphonie non-IP. Le protocole SIP Session Initiation Protocol (SIP) est un protocole TCP/IP de couche application normalisé et standardisé par l’IETF (RFC 3261). Il a été conçu pour établir, modifier et terminer des sessions multimédia. Il prend en charge l’authentification et la localisation de multiples participants. S’il se charge de la négociation des médias, il laisse le soin à d’autres protocoles de transporter du texte, de la voix ou de la vidéo. SIP fonctionne aussi bien avec IPv4 qu’avec IPv6. Il est supporté par TCP ou UDP sur le port 5060 par défaut. La version sécurisée SIP-TLS utilise par défaut le port TCP 5061. SIP ne fournit pas de services. Plus justement, il fournit des primitives qui peuvent être utilisées pour mettre en œuvre différents services. Par exemple, SIP peut localiser un utilisateur et livrer un objet opaque à l’endroit où il se trouve. Une seule primitive est normalement utilisée pour fournir plusieurs services différents. Le protocole SIP travail de concert avec d’autres protocoles VoIP afin de fournir le nécessaire depuis la signalisation jusqu’au transport média en passant par la qualité de service (QoS). Voici d’ailleurs un schéma qui explique clairement ce qui a été avancé plus haut :
  • 6. Les entités de SIP  Le User Agent  Le serveur proxy  Le serveur d’enregistrement  Le serveur de localisation  Le B2BUA (Back to Back User Agent) Quelques requêtes SIP  INVITE : établit une session  ACK : Confirme la requête INVITE  BYE : Met fin à une session
  • 7.  CANCEL : Annule l’établissement de la session  REGISTER : Donne l’emplacement de l’utilisateur  SUBSCRIBE : Souscrit à la notification du notifiant  NOTIFY : Prévient l’abonné d’un nouvel événement  UPDATE : Modifie l’état d’une session. Les principales réponses SIP  1XX : Réponses informatives  2XX : Réponses réussies  3XX : Réponses de renvoi  4XX : Échec de requêtes  5XX : Erreurs de serveur  6XX : Échec général Les grands fournisseurs de solutions de ToIP  Asterisk  Cisco (CUCM & CUCME)  Freeswitch  Kamailio  Avaya,... I. Asterisk Asterisk est une solution de téléphonie sur IP, Open Source. Il s’agit donc d’une solution gratuite, avec une communauté très active. Il a été développé par la société Digium. Asterisk est disponible sous Linux et Windows, même si la version Linux utilisée est de loin la moins rependue. Il fait office d’IPBX, mais il est aussi capable de s’interfacer avec un réseau de téléphonie analogique, à l’aide de cartes additionnelles. Asterisk peut donc faire office d’IPBX et de PABX.
  • 8. Un serveur Asterisk permet donc de faire de la VoIP ainsi que de la téléphonie analogique. En plus d’être gratuit, Asterisk est donc aussi très complet et supporte de très nombreux codecs audio, dont le G.711 (u-Law et a-Law), le G.729, Opus, ... Fonctionnalités d’Asterisk Voici une liste non exhaustive des fonctionnalités que nous offre Asterisk :  Conférence  Musique d’attente  File d’attente  Groupement d’appel  Messagerie vocale  Transfert d’appel  Transcodage entre différents codecs  Interface de développement de services (ARI  Notification mail en cas de message (avec message audio en PJ)  IVR (standard automatique avec choix au clavier)  Synthèse vocale  Chiffrement des appels  Ne pas déranger  Parking d’appel  Failover  Etc... Quelques fichiers de configuration  Messagerie vocale voicemail.conf  Parking d’appel features.conf  Transfert d’appels features.conf  Conférence meetme.conf  Centre d’appels queues.conf ; agents.conf  Musique d’attente musiconhold.conf
  • 9. Installation d’Asterisk La méthode la plus respectueuse et la plus efficace d’installer Asterisk est : soit se rendre sur son site officiel en cliquant ici et choisir la version souhaitée puis la télécharger, soit le faire en ligne de commandes si nous connaissons déjà la version dont nous avons besoins. Dans notre cas, c’est la version 16 qui nous intéresse. Voici donc les actions à faire : # wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz Il atterrira dans le répertoire dans lequel vous y étiez lors de l’exécution de la commande  Désarchivez et décompressez dans un dossier de choix, personnellement je préfère /usr/src # tar -xzf asterisk-16-current.tar.gz -C /usr/src/ # cd /usr/src/asterisk-16.18.0 # contrib/scripts/install_prereq install Pour la prise en compte du codec audio opus, et du codecs vidéo vp8 il faudra faire ceci :
  • 10. # apt install libopus-dev libvpx-dev -y  si nous voulons gérer facilement le format mp3, il faudra exécuter le script suivant : # contrib/scripts/get_mp3_source.sh Dans certains cas, lors de son installation, Asterisk vous dira qu’il lui manque des prérequis, il faudra donc les installer avec : # apt install libxml2-dev libxml2-utils libcurl4-openssl-dev libeditline-dev libsqlite3- dev curl autoconf gcc g++ build-essential linux-headers-$(uname -r) libssl-dev openssl libc-dev ncurses-dev -y # ./bootstrap # ./configure NB : Il arrive qu’on nous génère des erreurs lors de l’exécution de cette commande. La solution est de se rendre dans le répertoire /tmp puis exécuter la commande suivante : # wget https://raw.githubusercontent.com/asterisk/third-party/master/pjproject/2.10/ pjproject-2.10.tar.bz2 Et ensuite reprendre le ./configure qui devrait finir par un truc de ce genre :
  • 11. Pour allons activer les modules qui nous intéressent en tapant la commande : # make menuselect  Activer le format MP3 pour supporter les sons MP3
  • 12.  Activer le codec opus  Nous avons prévu tout de même d’activer la langue française sur notre Asterisk, donc nous allons activer les modules qui nous permettent de le faire  Les autres modules restant
  • 13. Nous allons sauvegarder et sortir pour faire les actions suivantes : make pour compiler asterisk make install pour installer les fonctionnalités choisies make samples pour installer les fichiers de configurations make config pour générer les scripts de démarrage de Asterisk Explication du rôle de quelques fichiers d’Asterisk Les fichiers dans /etc/asterisk Leurs signification sip.conf Fichier dans lequel on crée des comptes. Il contient des paramètres importants comme : videosupport=yes qui permet d’activer la prise en charge de la visiophonie, nous avons aussi language=en qu’il faudra mettre à fr pour activer la langue française, et beaucoup d’autres paramètres. extensions.conf Fichier dans lequel on définit le plan de numérotation, et les actions à faire selon les évènements voicemail.conf Fichier dans lequel on définit le contexte de la boite vocale et les comptes
  • 14. concernés par cette boîte vocale confbridge.conf Fichier ans lequel on définit les conférences audios et vidéos musiconhold.conf Fichier dans lequel on crée les classes de musique que nous pourrons utiliser comme musique d’attente ou sonnerie queues.conf Fichier dans lequel on crée des files d’attente des centres d’appels. agents.conf Fichier de création des agents répondant aux appels dans les centres d’appels features.conf Fichier ou on peut trouver des combinaisons de touches a faire pour utiliser certaines fonctionnalités d’asterisk telles que : enregistrements d’appels, fonction patron secrétaire, mise en attente d’appels(parking) modules.conf Fichier gérant les modules d’Asterisk Note : Pour les versions 18 de Asterisk, il existe au moins deux types de canaux : le SIP et le PJSIP qui ne peuvent pas être activés à la fois. Donc pour éviter un conflit entre les deux canaux, il faudra éditer le fichier modules.conf et décharger le module qui gère le canal qui ne vous intéresse pas. Mise en place de services sous Asterisk Asterisk étant un serveur SIP puissant qui se respecte, il exige donc de configurer les services avant de les utiliser. 1. Activation de la langue française sur Asterisk # nano /etc/asterisk/sip.conf Nous le remplaçons par ceci :
  • 15. Nous allons ensuite faire les actions suivantes # adduser asterisk # mkdir /var/lib/asterisk/sounds/fr # cd /var/lib/asterisk/sounds/fr # wget -O core.zip https://www.asterisksounds.org/fr-fr/download/asterisk-sounds- core-fr-FR-sln16.zip # wget -O extra.zip https://www.asterisksounds.org/fr-fr/download/asterisk-sounds- extra-fr-FR-sln16.zip # unzip core.zip # unzip extra.zip # chown -R asterisk.asterisk /var/lib/asterisk/sounds/fr # find /var/lib/asterisk/sounds/fr -type d -exec chmod 0775 {} ; A partir de maintenant, notre Asterisk parle français ! 2. Création de comptes et tests des premiers appels audios Tous les fichiers de configurations se trouvent dans le dossier /etc/asterisk # vim /etc/asterisk/sip.conf [bory] defaultuser = bory host = dynamic type = friend secret = passer context = telephonie
  • 16. [ibrahima] defaultuser = ibrahima host = dynamic type = friend secret = passer context = telephonie [aminata] defaultuser = aminata host = dynamic type = friend secret = passer context = telephonie Nous venons de créer trois comptes. Nous allons maintenant définir leur plan de numérotation # nano /etc/asterisk/extensions.conf [telephonie] exten => 1000,1,Dial(SIP/bory,40,tr) exten => 1001,1,Dial(SIP/ibrahima,40,tr) exten => 1002,1,Dial(SIP/aminata,40,tr) Si c’est la première fois de lancer Asterisk, nous le ferons comme suit : # asterisk # asterisk -rvvvvvvvvvvvvvvvvvvvvvvvvv
  • 17. Lorsque les trois utilisateurs s’enregistrent, voici la réaction du serveur : Affichons la liste des comptes Test d’appels L’utilisateur aminata utilise microsip comme softphone Quand on lance Microsip, nous allons procéder ainsi pour créer un compte
  • 18. La capture ci-dessous montre l’utilisateur bory qui reçoit un appel de aminata 3. Les appels Vidéos Dans sip.conf, nous allons activer le paramètre videosupport=yes Puis ajouter le paramètre allow = h263,vp8 au niveau de chaque compte comme suit : [bory] type = friend host = dynamic defaultuser = bory secret = passer context = telephonie
  • 19. allow = h263,vp8 [ibrahima] type = friend host = dynamic defaultuser = ibrahima secret = passer context = telephonie allow = h263,vp8 Place au test Test 1 : Avec le softphone Zoiper
  • 20. Test 2 : Utilisation de blink Blink est un logiciel de collaboration ultra polyvalent et très puissant. 4. Prise en charge de la boite vocale Dans extensions.conf Dans voicemail.conf La syntaxe est la suivante : [Le_contexte_de_la_boite_vocale] numéro => mot_de_passe,Le_nom_utilisant_cette_boite_vocale
  • 21. Nous allons maintenant définir un numéro qui permettra aux abonnés d’accéder à leur boite vocale Toujours dans extensions.conf Place au test Pour le test, l’utilisateur bory va appeler ibrahima qui ne va pas décrocher. Au bout de 20 secondes, le système lui dira de laisser un message vocale ensuite d’appuyer sur Diez (#) ou bien de raccrocher. Bory va composer le 200 pour accéder à sa boite vocale : Il va entendre une voix lui disant de saisir le numéro de sa boite vocale, une autre voix lui demandera de saisir le mot de passe de sa boite vocale. Les captures ci-dessous sont très éloquentes pour comprendre ce qui se passe.
  • 22. La réaction du serveur Il a écouté ses différents messages vocaux ! 5. Personnalisation de sonnerie 5.1 Avec une classe de musique Avec cette config, l’appelant écoutera une musique MP3 que l’admin a définie à l’appelé.  Il faut installer le prérequis mpg123  Créer la classe de musique # vim musiconhold.conf [sonnerie] mode=custom directory=/var/lib/asterisk/groupe application=/usr/bin/mpg123 -q -r 8000 -f 8192 -b 2048 --mono -s
  • 23.  Créer le dossier devant contenir la musique et y mettre la musique en question  Dans extensions.conf, mettre le nom de la classe définie à l’utilisateur concerné Place au test N’importe quel utilisateur essayant d’appeler le user bory écoutera une musique à la place de la sonnerie. Voici d’ailleurs ce qui se passe dans la console du serveur : Nous remarquons que la musique joue. 5.2 Avec la fréquence d’une radio Dans cette partie, au lieu d’écouter une musique, l’appelant écoutera une radio. Toujours dans le fichier musiconhold.conf
  • 24. Dans extensions.conf Ici nous avons ajouté cette classe au user ibrahima Place au test N’importe quel user essayant d’appeler ibrahima écoutera une Webradio 6. Inclusion de contextes Il y a une règle qui dit que quand un utilisateur compose un numéro, le système cherche ce numéro dans le contexte cet utilisateur. En claire, par défaut deux utilisateurs se trouvant dans deux contextes différents ne peuvent pas communiquer. Nous allons créer un compte utilisateur en le mettant dans un contexte différent de celui déjà existant # vim sip.conf
  • 25. # vim extensions.conf Nous avons fait des inclusions de contexte de part et d’autre afin de permettre aux abonnés de communiquer avec des utilisateurs d’autres contextes en appelant ou en étant appelé. Place au test L’utilisateur bory (1000) qui appelle le 100
  • 26. de l’autre côté Test dans le sens inverse L’utilisateur dont le numéro est 100 tente d’appeler bory dont le numéro est 1000
  • 27. ça sonne de l’autre côté Nos utilisateurs de contextes différents arrivent à communiquer sans aucun problème !
  • 28. 7. La conférence de base Un seul numéro à composer pour être en communication avec tous ceux qui ont composé ce numéro. C’est la philosophie de la conférence !  Dans le confbridge.conf [conference] type=bridge video_mode = sfu  Dans extension.conf exten => 777,1,Confbridge(conference) Place au test Pour le test, il suffit aux utilisateurs de composer le 777 pour accéder à la conférence ! 8. Mise en Place d’un centre d’appel Un abonné souhaitant avoir des informations sur un quelconque service, n’a qu’à composer un numéro qui aura pour effet de faire sonner le téléphone de plusieurs agents qui pourront lui apporter d’amples informations sur son sujet. C’est un peu ça le centre d’appels ! Dans le fichier queues.conf # vim queues.conf [centre] musicclass=default strategy=fewestcalls joinempty=yes member =>Local/1000@telephonie member =>Local/1001@telephonie
  • 29. Notions de stratégie strategy=fewestcalls ===> L’agent ayant reçu le moins d’appels sera celui à qui le prochain appel sera destiné ! strategy=ringall ===> Les téléphones de tous les agents vont sonner en temps à l’arrivée d’un appel Ensuite dans : # vim extensions.conf exten => 9999,1,Answer() exten => 9999,2,Set(CHANNEL(musicclass)=sonnerie) exten => 9999,3,Queue(centre) Nous avons utilisé notre classe de musique qui s’appelle sonnerie pour accueillir les clients ! Affichons la liste des agents qui font partie du centre Place au test : Lorsqu’un client compose le 9999, il est censé écouter une musique. Pendant ce temps il y a le téléphone d’un agent qui sonne. Voici d’ailleurs la réaction du serveur lorsque ce numéro est composé par l’abonné binta :
  • 30. Lorsqu’un utilisateur compose le 9999 pour accéder au centre, l’appelle sera routé grâce à la politique(fewestcalls) du paramètre strategy qui permet de rediriger l’appelle vers l’agent qui a reçu le moins d’appels. Gestion des agents du centre d’appels en ligne de commande  Ajout d’un membre dans le centre d’appels > queue add member SIP/bory to centre Cette commande permet d’ajouter le téléphone de bory comme agent devant répondre aux appels entrant dans la file d’attente qui s’appelle centre.  Suppression d’un agent > queue remove memeber SIP/bory centre
  • 31. Nous venons de retirer le téléphone de bory de la la file d’attente centre. 9. Personnalisation de la sonnerie selon l’appelant Nous allons personnaliser la sonnerie de bory selon l’appelant. Si c’est ibrahima qui appelle, la sonnerie sera différente de celle que binta va écouter si c’est elle qui appelle bory. Pour cela, nous allons définir deux classes de musiques # vim musiconhold.conf [ibrahima] mode=custom directory=/var/lib/asterisk/groupe application=/usr/bin/mpg123 -q -r 8000 -f 8192 -b 2048 --mono -s [binta] mode=custom directory=/var/lib/asterisk/binta application=/usr/bin/mpg123 -q -r 8000 -f 8192 -b 2048 --mono -s Comme nous le constatons, les deux classes ont des dossiers de stockage de sons différents !  Ensuite ajouter la ligne suivante au niveau de chaque compte dans sip.conf #vim sip.conf callerid= "le nom"<le numéro>
  • 32. Voici en claire ce qui se trouve dans sip.conf [bory] type=friend host=dynamic defaultuser=bory secret=passer context=telephonie allow=h263,vp8 callerid="bory"<1000> [ibrahima] type=friend host=dynamic defaultuser=ibrahima secret=passer context=telephonie allow=h263,vp8 callerid="ibrahima"<1001> [binta] type=friend host=dynamic defaultuser=binta secret=passer context=telephonie allow=h263,vp8 callerid="binta"<1002>  Dire maintenant au système de faire la différence entre les appelants. # vim extensions.conf
  • 33. exten => 1000,1,Dial(SIP/bory,20,trm(${CALLERID(name)})) C’est la ligne qui fait toute la différence dans extensions.conf Place au test : Si c’est l’utilisateur ibrahima qui appelle Bory, voici la réaction du serveur : Si c’est binta qui appelle, la réaction du serveur sera différente de la précédente Et voilà, la personnalisation de sonnerie est faite avec succès ! 10. Messagerie instantanée avec Asterisk Asterisk propose même de la messagerie texte entre ses abonnés, comme chez les opérateurs classique. Trop stylé ! # nano sip.conf Donner les valeurs suivantes aux paramètres suivants en les dé-commentant bien- sûr ! accept_outofcall_message=yes outofcall_message_context=sms auth_message_requests=yes
  • 34.  Créer des utilisateurs si c’est pas encore fait : Nous allons créer deux comptes dans sip.conf [100] username = 100 host = dynamic context = ec2lt secret = passer type = friend [101] username = 101 host = dynamic context = ec2lt secret = passer type = friend  Inclure le contexte des utilisateurs dans les contextes [public] et [default] # vim extensions.conf  Nous allons définir le plan de numérotation. Ça c’est du classique ! [ec2lt] exten => _X.,1,Dial(SIP/${EXTEN},25)  Définition du contexte SMS. Attention : Le contexte [sms] sera définit sous le contexte [ec2lt]
  • 35. [sms] ; Contexte des sms ; Affichage des détails du msg à la console exten => _.,1,NoOp(SMS receiving dialplan invoked) exten => _.,n,NoOp(To ${MESSAGE(to)}) exten => _.,n,NoOp(From ${MESSAGE(from)}) exten => _.,n,NoOp(Body ${MESSAGE(body)}) ; ; Construction des paramétres de MessageSend() exten => _.,n,Set(ACTUALTO=${CUT(MESSAGE(to),@,1)}) exten => _.,n,Set(ACTUALFROM=${CUT(MESSAGE(from),<,2)}) exten => _.,n,Set(ACTUALFROM=${CUT(ACTUALFROM,@,1)}) exten => _.,n,Set(ACTUALFROM=${CUT(ACTUALFROM,:,2)}) ; ; Envoie du message exten => _.,n,MessageSend(${ACTUALTO},${ACTUALFROM} ${MESSAGE(from)}) exten => _.,n,NoOp(Status : ${MESSAGE_SEND_STATUS}) exten => _.,n,GotoIf($["${MESSAGE_SEND_STATUS}" != "SUCCESS"]?sendfailedmsg) exten => _.,n,Hangup() Place au test L’utilisateur 101 va envoyer un texto au 100
  • 37. Le message s’affiche en claire sur le serveur, grâce au paramètre Body. 11. Asterisk & le PAP de Cisco L'adaptateur Cisco PAP2 permet l'accès à un service de téléphonie sur IP (voice over IP) offrant de nombreuses fonctions de haute qualité via votre connexion Internet haut débit. ... Vous avez une réception téléphonique claire et des connexions fax fiables, même lorsque vous utilisez Internet en même temps. Il permet :  D'appeler et de recevoir des appels par la ligne téléphonique classique ou Gratuitement par Internet sans changer de téléphone  Il a : 2 ports RJ11 pour téléphones traditionnels ou fax avec 2 n° de téléphone indépendants  1 port RJ-45 pour connexions Ethernet 10/100 Mbits  Protocole SIP  Compatibilité avec toutes les fonctions de votre téléphone Il ressemble à ceci :
  • 38. Architecture L’architecture ci-dessous donne une vue globale de ce qui va être réalisé dans cette partie Explication de l’architecture Un point d’accès permettant à des clients comme des smartphones de bénéficier des services d’Asterisk est directement connecté au switch, sur lequel le serveur Asterisk et le Cisco-PAP sont aussi connectés. Un téléphone analogique est aussi branché sur le Cisco-PAP. But de la configuration Le but de cette partie est de permettre au clients SIP d’Asterisk de pouvoir passer des appels vers les téléphones analogiques dont les comptes sont aussi stockés chez Asterisk. Mise en place La première chose à faire est de créer un compte au PAP chez Asterisk. Nous savons tous que cela se fait dans le fichier sip.conf # vim /etc/asterisk/sip.conf [110] username=110
  • 39. host = dynamic context=ec2lt secret=passer type=friend dans l’autre fichier : # vim /etc/asterisk/extensions.conf exten => _1XX,1,Dial(SIP/${EXTEN},40,tr) Accès à l’interface du PAP Pour accéder à l’interface du PAP, il faut non seulement le connecter au LAN, mais aussi le connecter à un téléphone analogique sur lequel composer ****110# , une voix vous dictera l’adresse IP chiffre par chiffre en anglais bien-sûr ! Le système vient de nous dire que l’adresse IP du PAP est 192.168.0.92. Testons cela tout d’abord en ligne de commande Pour accéder à son interface, il nous faut un navigateur
  • 40. Cliquer sur Admin Login pour avoir une fenêtre de ce genre :
  • 41. Puisque notre PAP est connecté au téléphone analogique par le port phone1, nous allons donc configurer ce port en cliquant sur Line 1 et renseigner les informations du compte que nous lui avons créé chez Asterisk Après avoir renseigné les paramètres de connexion au compte que nous l’avons créé chez Asterisk, il faudra donc sauvegarder la configuration en cliquant sur Save Settings en bas pour avoir la fenêtre suivante : Après ces configurations, nous pouvons même voir le statut de la Ligne
  • 42. La ligne est en état Online. Ce qui veut dire que le téléphone analogique s’est bien connecté au serveur Asterisk. Place au test D’abord sur la console d’Asterisk, vérifions si l’équipement s’est bien connecté La dernière ligne montre qu’il s’est connecté avec succès ! Test d’appels le 100 qui reçoit l’appel du téléphone analogique
  • 43. Regardons ce qui se passe sur la console du serveur
  • 44. Nous pouvons aussi passer un appel dans le sens inverse ! II. ToIP en environnement CISCO CISCO en plus de sa large gamme de serveurs et de solutions informatiques qu’il nous offre, il met à la disposition du monde des solutions de ToIP derniers cri. Parmi lesquelles nous avons :  Le Cisco Unified Communications Manager (CUCM) : Qui est un système de communication basé sur IP intégrant la voix et la vidéo. Il fait partie d’un ensemble de produits de la gamme VoIP de CISCO. Il est utilisé pour de très grandes entreprises dont le nombre du personnel est assez important.  Le Cisco Unified Communication Manager Express (CUCME) ou CME : Qui est un système de communication basé aussi sur IP intégrant la voix et la vidéo, tournant sur des routeurs avec des IOS adaptés. Le CallManager Express est fait pour les PME. Le protocole SCCP Skinny Call Control Protocol (SCCP) est un protocole propriétaire Cisco évoluant au niveau de la couche application du modèle OSI et utilisant le port 2000. Il est utilisé pour la gestion des appels téléphoniques et de la signalisation. SCCP est supporté nativement dans le CUCM, et est exclusivement utilisé entre un serveur SCCP et des clients SCCP. Étapes d’enregistrement d’un client SCCP Lorsqu’on connecte un téléphone avec le protocole SCCP, il y a plusieurs étapes pour que ce téléphone soit utilisable : 1. Le téléphone charge l’image enregistré en mémoire. 2. Avec le protocole CDP, le téléphone découvre quel VLAN utiliser (Voice VLAN). 3. Le téléphone envoie une requête DHCP pour connaître son adresse IP. Il reçoit de plus de la part du serveur DHCP l’adresse du serveur TFTP. 4. Le téléphone envoie une requête au serveur TFTP pour récupérer sa configuration au préalable créer par le CUCM lorsque l’on créer le téléphone. 5. Le téléphone vient s’enregistrer dans le CUCM. Note 1 : C’est le CUCM qui gère la signalisation ainsi que le routage des appels.
  • 45. Note 2 : Un CUCM et/ou CME est capable de piloter autant des téléphones SCCP que des téléphones SIP selon les configurations encours. Configuration d’un CUCME ou CME Dans nos travaux pratiques, nous allons utiliser l’IOS 3745-ipvoice_ivs-mz.124- 15,T7.bin . Pour l’avoir, il faudra se rendre sur le site de CISCO en cliquant ici et aussi GNS3 en utilisant le cloud pour permettre à notre routeur CUCME de communiquer avec le réseau physique. Voici un tableau comparatif des commandes CUCME SCCP et SIP
  • 46. Configuration du CME comme contrôleur SCCP  Configuration IP du routeur Notre CME vient d’obtenir une adresse IP par DHCP qui est 192.168.6.72/16  Nous allons ensuite activer le SCCP en précisant son port qui est 2000 et définir 5 téléphones et 5 numéros.
  • 47.  Création des numéros de téléphones 4000, 4001 et 4002  Nous allons ensuite faire de sorte que notre CME attribue les numéros de téléphones par ordre de connexion. Ça s’appelle l’auto-assignation des numéros. La configuration terminée, Nous allons utiliser des clients SCCP pour bénéficier des services déployés sur notre CME. Le choix du client SCCP est tombé sur ip communicator de CISCO qui est un client natif du protocole SCCP. Dans notre cas, nous allons utiliser sa version logicielle (softphone). Pour le télécharger, il faudra juste cliquer ici . C’est un logiciel exclusivement dédié au système Windows. Mais il est possible de le faire tourner aussi sous Linux grâce à la couche de virtualisation wine, en faisant ceci : # sudo apt install wine-development Pour l’installer, il suffit d’exécuter la commande suivante en tant que simple utilisateur en précisant le chemin absolu du logiciel téléchargé : # wine Documents/CiscoIPCommunicatorSetup.exe
  • 48. Dans mon cas, il est dans Documents. Après cette commande, suivre les instructions pour l’installer correctement, Il créera même un raccourci sur le Bureau sur lequel cliquer pour le lancer. Mais dans l’exemple suivant, nous l’avons installé sur Windows. Nous allons lancer notre softphone Après lancement, nous aurons une fenêtre de ce genre :
  • 49. Nous allons ensuite donner l’adresse IP du CME dans Menu > Préférences > Réseau Comme le montre la figure ci-dessous :
  • 50. Voici notre softphone qui s’est enregistré avec succès :
  • 51. Les traces d’enregistrement du softphone sur le CME Nous pouvons même afficher les détails de la configuration SCCP comme suit :
  • 52. Les liaisons TFTP du service de téléphonie On peut procéder de la même manière pour faire enregistrer un autre softphone et tester les appels.
  • 53. Configuration du CME comme contrôleur SIP En plus de gérer facilement le protocole SCCP pour la signalisation, Le CallManager Express de Cisco supporte aussi le protocole standard SIP. Mise en place  Activer le protocole SIP  Définir le CME comme serveur d’enregistrement  Créer le numéro 5000 à un utilisateur. Binta dans notre cas.  Création du second numéro : 5001 qui sera attribué à l’utilisateur bory  Création de téléphone pour chaque numéro Le premier téléphone qui correspondra au numéro 5000
  • 54. Le second téléphone pour le numéro 5001 Un fidèle abonné va utiliser le softphone Zoiper sur un téléphone Android pour se connecter au compte 5000 Après s’être enregistré, voici la réaction du serveur indiquant qu’un téléphone ayant l’adresse IP 192.168.6.110 s’est connecté avec le compte 5000
  • 55. Un deuxième abonné utilisera le compte 5001 pour se connecter. Voici la réaction du serveur Nos deux comptes SIP se sont bien connectés ! Test 1 Un client SIP appelant celui SCCP Le IP communicator qui sonne
  • 58. Nous pouvons aussi tester l’appel dans l’autre sens. Nous voyons clairement que les abonnés SCCP arrivent à communiquer avec ceux de SIP ! III. Trunk entre un serveur Asterisk & un serveur CME L’architecture du réseau téléphonique d’une entreprise pourrait se composer de deux solutions : une solution propriétaire (le CME dans notre cas), et une solution Libre (Asterisk dans notre cas). Pour unifier ce réseau, il faut donc interconnecter ces deux serveurs. Le but de cette interconnexion est de permettre aux abonnés du CME d’appeler ceux d’Asterisk et inversement. Architecture
  • 59. Cette architecture est plus éloquente que du texte ! De ce fait, le CME doit disposer d’un compte chez Asterisk. Et ça se passe dans le fichier sip.conf Configuration côté Asterisk Nous allons créer trois comptes. Le dernier sera le compte du serveur SIP distant  Créer des comptes à nos clients ;le premier compte Asterisk [300] username=300 host=dynamic context = ec2lt secret = passer type=friend callerid=<300>"fatoumata" mailbox=300@ec2lt ;le deuxième compte Asterisk [301]
  • 60. username=301 host=dynamic context = ec2lt secret = passer type=friend callerid=<301>"mariam" mailbox=301@ec2lt ;Le compte du SIP côté CME [cmeasterisk] username= cmeasterisk secret=passer type=friend host = 192.168.6.72 ; l’adresse IP du CME context=ec2lt qualify=yes dtmfmode=rfc2833 allow=ulaw insecure=port,invite careinvite=yes mailbox=cmeasterisk@ec2lt En claire : Dans extensions.conf on définit le contexte de nos utilisateurs et les critères d’envoi des appels vers le serveur SIP distant # vim extensions.conf [ec2lt] exten => _3XX,1,Dial(SIP/${EXTEN},20,tr) exten => _5XXX,1,Dial(SIP/cmeasterisk/${EXTEN},20)
  • 61. Recharger Asterisk avec la commande reload, dans sa console bien-sûr ! Dès que vous finissez cette étape, nous pouvons voir que le CME est automatiquement devenu un client de Asterisk Côté Asterisk la config est terminée ! Configuration du CME De la même manière nous avons indiqué à Asterisk le processus pour joindre les utilisateurs du CME, nous ferons de même sur le CME afin de permettre à ses utilisateurs de pouvoir joindre ceux d’Asterisk.  Authentification du compte  Le CME aussi a un plan de numérotation Il faudra apprendre au CME comment joindre les clients Asterisk en activant le codec audio g711 Place au test Connexion à Asterisk Un très cher abonné va utiliser Zoiper Desktop pour se connecter. Il procédera comme suit :
  • 62. Cliquer sur Login pour renseigner l’adresse IP du serveur
  • 63. Cliquer sur Next Il a trouvé le compte. Voici la réaction du serveur : Test d’appels Un des abonnés du CME va essayer de joindre celui d’Asterisk
  • 64. Et quand il décroche : Un appel dans le sens inverse (Asterisk qui appelle le CME) L’interconnexion est faite avec succès ! Trunk CME/SCCP & Asterisk Tout à l’heure nous avons fait des configurations permettant aux abonnés Asterisk d’échanger avec ceux du CME/SIP . Ici le but est de permettre aux abonnés SCCP du CME de pouvoir s’appeler avec ceux SIP d’Asterisk. En se basant sur l’interconnexion précédente, nous allons ici faire le nécessaire.  Ajouter la ligne suivante dans le fichier extensions.conf exten => _4XXX,1,Dial(SIP/cmeasterisk/${EXTEN},20) Sur le CME, nous n’aurons aucune action à faire car le plan de numérotation est déjà établi !
  • 65. Place au test Appel depuis le CME/SCCP vers Asterisk Dans le sens inverse : Asterisk vers CME/SCCP Interconnexion validée !
  • 66. Gestion de boîtes vocales Le but de cette partie est l’activation de la boite vocale pour tous nos clients : CME/ SIP, CME/SCCP et Asterisk et en suite stoker ces messages au niveau d’Asterisk. Ça veut dire que les abonnés du CME auront leurs boîte vocale au niveau de chez Asterisk.  Config côté Asterisk # vim sip.conf Ajouter la ligne mailbox=numéro@contexte au niveau de chaque numéro. Dans l’autre fichier # vim extensions.conf [ec2lt] ;les appels exten => _3XX,1,Dial(SIP/${EXTEN},20,tr) exten => _5XXX,1,Dial(SIP/cmeasterisk/${EXTEN},20) exten => _4XXX,1,Dial(SIP/cmeasterisk/${EXTEN},20) ;la boite vocale exten => _3XX,2,Voicemail(${EXTEN}@bvocale) exten => _5XXX,2,Voicemail(${EXTEN}@bvocale) exten => _4XXX,2,Voicemail(${EXTEN}@bvocale) ;les numéros à composer exten => 399,1,VoicemailMain(${CALLERID(num)}@bvocale) exten => 5999,1,VoicemailMain(${CALLERID(num)}@bvocale) exten => 4999,1,VoicemailMain(${CALLERID(num)}@bvocale) En claire :
  • 67. Ici nous avons : Pour les Clients Asterisk :  Les messages vocaux seront transférés sur le numéro de l’appelé  Ils utiliseront le numéro 399 pour écouter leurs messages Pour les client CME/SIP  Les messages vocaux seront transférés sur le numéro de l’appelé  Il utiliseront le numéro 5999 pour écouter leurs messages Pour les clients CME/SCCP  Les messages vocaux seront transférés sur le numéro de l’appelé  Il utiliseront le numéro 4999 pour écouter leurs messages. Dans le fichier suivant : # vim voicemail.conf [bvocale] 300 => 1234 301 => 1234 4000 => , 4001 => , 5000 => , 5001 => , Cette configuration montre que les abonnés du CME ne saisiront aucun mot de passe pour accéder à leur boîte vocale.  Configuration du CME Activation de la boite vocale pour les comptes CME/SCCP Le compte 4000
  • 68. Pour le compte 4001 Activation de la boite vocale pour les comptes CME/SIP Pour le compte 5000 Pour le compte 5001 Nous avons remarqué que l’activation de la boîte vocale pour un compte CME/SCCP est différente de celle d’un CME/SIP.  Configuration du plan de numérotation pour joindre les boites vocales Le cas CME/SCCP Le cas CME/SIP
  • 69. Place au test Un abonné du CME/SIP tente de joindre celui de Asterisk qui ne va pas décrocher. Il va donc lui laisser un message dans sa boîte vocale. Les informations de cette action s’affichent clairement sur la console du serveur Asterisk comme le montre la capture ci-dessous : Ce dernier peut composer le 399 pour écouter ses messages en suivant les instructions ! L’abonné du CME/SCCP peut aussi consulter sa boite vocale en composant le 4999
  • 70. Tous les abonnés ont accès à leur boite vocale ! IV. Asterisk comme contrôleur SCCP Asterisk en plus de supporter nativement les protocoles de signalisation IAX et SIP, il supporte aussi celui de Cisco qui est le SCCP afin de piloter des téléphones Cisco à travers quelques paramétrages. Mise en œuvre 1. Télécharger et installer le module chan-sccp comme suit : # cd ~/ # apt install git
  • 71. # git clone https://github.com/chan-sccp/chan-sccp.git chan-sccp Accéder au dossier du canal chan-sccp pour installer le module permettant à Asterisk de devenir un contrôleur SCCP en exécutant les commandes suivantes : # cd chan-sccp/ # ./configure --enable-conference Qui doit finir par un truc de ce genre : Ensuite exécuter les commandes # make && make install 2. Gestion de modules Se déplacer dans le répertoire de config d’Asterisk /etc/asterisk pour éditer le fichier modules.conf
  • 72. Il faudra donc désactiver le module de l’ancienne version de SCCP qui est chan_skinny.so pour activer la nouvelle version qui est chan_sccp.so comme suit : Pour que le nouveau module soit pris en compte, il faudra carrément arrêter le serveur puis le démarrer à nouveau # asterisk -rvvvvvvvvvvvvvvvvvvvvvvvvvvvv core stop now Puis le relancer comme suit : 3. Installation d’un serveur TFTP Le serveur TFTP aura pour tâche d’héberger les fichiers de configuration des téléphones IP. On l’installe comme suit :
  • 73. # apt install tftp-hpa tftpd-hpa -y Après installation, il faudra éditer le fichier /etc/default/tftpd-hpa pour connaître son répertoire. Nous remarquons que son répertoire de base est désigné par le paramètre TFTP_DIRECTORY qui a pour valeur /var/lib/tftpboot  Attribuer ce répertoire à l’utilisateur tftp # chown -R tftp:tftp /var/lib/tftpboot/  Redémarrer le serveur # service tftpd-hpa restart  Copier les exemples de configuration des téléphones dans ce répertoire Le dossier contenant les exemples de configurations des téléphones se trouve dans un sous dossier de là où vous vous êtes placé pour télécharger le module chan-sccp par git. Vous pouvez vérifier si ce serveur tourne sur son port habituel 69
  • 74. Le service tourne correctement ! 4. Configuration proprement dite de Asterisk comme contrôleur SCCP # cd /etc/asterisk Définir les paramètres généraux du contrôleur dans la section [general]. Voici les paramètres à modifier dans cette section : # vim sccp.conf Dans cette section, voici les paramètres à modifier [general] context = ec2lt ;deny=0.0.0.0/0.0.0.0 permit=0.0.0.0/0.0.0.0 ;permit=192.168.1.0/255.255.255.0 localnet = 192.168.0.0/255.255.0.0 Note : Je suis dans le réseau 192.168.0.0/16 On définit un téléphone et on précise ses lignes : Note : Dans la vraie vie, un téléphone IP a une adresse MAC unique, mais avec des softphones comme dans notre cas, l’adresse MAC du téléphone est la même que celle de la carte réseau de la machine hébergeant ledit softphone. Voici l’adresse MAC de la carte réseau de la machine sur laquelle notre IP Communicator est installé :
  • 75. Donc on fait SEP suivit de cette adresse MAC en mettant tous les caractères en majuscule Donc voici les paramètres à modifier dans la section actual definition : [SEP507B9D91F93A] button = line, 98011,default button = line, 98012 ;permit=192.168.1.5/255.255.255.255 On crée les deux lignes que nous venons d’attribuer car nous aimerions que le téléphone ait deux lignes. (98011 et 98012).  Pour la ligne 98011 [98011] id = 1000 type = line pin = 1234 label = Phone 1 Line 1 description = Line 98011 mailbox = 10011 cid_name = Bory cid_num = 98011 accountcode=79011 callgroup=1,3-4 pickupgroup=1,3-5 directed_pickup = on
  • 76. directed_pickup_context = "" pickup_modeanswer = on ;amaflags = context = ec2lt incominglimit = 2 transfer = on vmnum = 600 meetme = on meetmeopts = qxd meetmenum = 700 trnsfvm = 1000 secondary_dialtone_digits = 9 secondary_dialtone_tone = Outside Dial Tone musicclass=default language=en echocancel = on silencesuppression = off setvar=testvar2=my value dnd = reject parkinglot = myparkspace On fait la même chose pour la ligne 98012 [98012] id = 1001 type = line pin = 1234 label = Phone 1 Line 2 description = Line 98012 mailbox = 10012
  • 77. cid_name = Amadou cid_num = 98012 accountcode=79002 callgroup=1,4-9 pickupgroup=1,3-9 directed_pickup = on directed_pickup_context = "another" pickup_modeanswer = on echocancel = off context = ec2lt incominglimit = 2 transfer = on vmnum = 600 trnsfvm = 1000 secondary_dialtone_digits = 9 secondary_dialtone_tone = Outside Dial Tone musicclass=default language=en echocancel = on silencesuppression = off Nous allons éditer le fichier extensions.conf pour définir le contexte et le plan de numérotation de nos utilisateurs # vim extensions.conf [ec2lt] exten => 98011,1,Dial(SCCP/98011,40,tr) exten => 98012,1,Dial(SCCP/98012,40,tr)
  • 78.  Rendez-vous dans le dossier du serveur TFTP On passe maintenant à l’adaptation du fichier de configuration de chaque téléphone SCCP # cd /var/lib/tftpboot Note : On copie un exemple de configuration de téléphone dans un fichier dont le nom est l’adresse MAC de la machine qui héberge le client SCCP. Ça se passe comme suit : # cp SEP0000000000.cnf.xml_annotated SEP507B9D91F93A.cnf.xml Éditer ce fichier puis donner l’adresse du serveur Asterisk comme suit : ça se passe dans la balise <processNodeName> On édite ensuite le fichier XMLDefault.cnf.xml pour y mettre l’adresse du serveur Asterisk, c’est le fichier de configuration par défaut de tous les téléphones se trouvant toujours dans /var/lib/tftpboot  On passe en suite à la configuration de notre softphone
  • 79. ça se passe dans Menu > Préférences > Réseau pour y mettre l’adresse du serveur Asterisk. Quand on valide par la touche OK, voici ce qui devrait apparaître :
  • 80. Notre IP communicator est bien enregistré ! Voici la réaction du serveur après l’enregistrement du softphone :
  • 81. Place au test Nous allons tester un appel entre nos anciens abonnés Asterisk et notre client IP communicator L’utilisateur bory qui a le numéro 100, va essayer de joindre l’abonné qui utilise le IP communicator dont le numéro est 98011.
  • 83. Voici la réaction du serveur
  • 84. Et quand il décroche : Les deux abonnés arrivent à communiquer sans problèmes !
  • 85. V. Kamailio Kamailio (successeur des anciens OpenSER et SER) est un serveur SIP Open Source publié sous GPLv2+, capable de gérer des milliers d'établissements d'appels par seconde. Kamailio peut être utilisé pour créer de grandes plates-formes pour les communications VoIP et en temps réel - présence, WebRTC, messagerie instantanée et autres applications. De plus, il peut être facilement utilisé pour faire évoluer des passerelles SIP vers PSTN, des systèmes PBX ou des serveurs multimédias comme Asterisk, FreeSWITCH ou SEMS. Kamailio peut être utilisé sur des systèmes aux ressources limitées ainsi que sur des serveurs de classe opérateur. Il est écrit en C pur pour les systèmes de type Unix/Linux avec des optimisations spécifiques à l'architecture pour offrir des performances élevées. Kamailio Project vise à être un environnement collaboratif de ses utilisateurs pour développer un serveur SIP sécurisé et extensible afin de fournir des services de communication unifiée et VoIP modernes. 1. Installation de Kamailio # apt-get install apache2 mariadb-server php php-mysql php-gd php-curl php-xml libapache2-mod-php flex bison libcurl4-openssl-dev libpcre3-dev kamailio kamailio- utils-modules kamailio-mysql-modules kamailio-presence-modules kamailio-xml- modules kamailio-carrierroute-modules -y 2. Configuration du serveur SIP Nous allons faire la configuration de base du serveur permettant de donner les paramètres nécessaires pour générer sa base de données. # vim /etc/kamailio/kamctlrc  Dé-commenter les lignes suivantes en les adaptant à votre situation ## the SIP domain SIP_DOMAIN=ec2lt.sn DBENGINE=MYSQL ## database hostDBHOST=localhost DBPORT=3306 ## database name (for ORACLE this is TNS name) DBNAME=kamailio
  • 86. ## database path used by dbtext, db_berkeley or sqlite # DB_PATH="/usr/local/etc/kamailio/dbtext" ## database read/write user DBRWUSER="kamailio" ## password for database read/write user DBRWPW="kamailiorw" ## database read only user DBROUSER="kamailioro" ## password for database read only user DBROPW="kamailioro" DBROOTUSER="root" USERCOL="username"  Faire la résolution de noms dans le fichier suivant : # vim /etc/hosts Test de connectivité Résolution faite avec succès ! Si le serveur de base de données n’est pas sécurisé, il faudra le faire comme suit, avant de passer à l’étape suivante. # mysql
  • 87. MariaDB [(none)]> UPDATE mysql.user SET plugin = NULL WHERE user = 'root' AND plugin ='unix_socket'; Query OK, 1 row affected, 1 warning (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 1 MariaDB [(none)]> MariaDB [(none)]> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.01 sec) MariaDB [(none)]> MariaDB [(none)]> SET PASSWORD FOR root@'localhost'=PASSWORD('passer123'); Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> exit Bye root@bory-diallo:~# Le nouveau mot de passe de notre serveur de base de données est passer123 3. Création de la base de données de kamailio Kamailio utilise une base de données pour stocker les informations de ses abonnés. Pour la générer, on procède comme suit : # kamdbctl create ✔ Vous entrez le mot de passe de root que venez de définir ✔ Vous choisissez l’encodage Big5 ✔ Vous répondez par y à toutes les questions qui seront posées Et ça devrait très bien se passer ! Voici la preuve que tout s’est bien passé :
  • 88. Vérifions si la base de données a été générée Vous pouvez aussi vérifier si les tables ont bien été générée ! Voici quelques informations concernant notre serveur Kamailio
  • 89. 4. Création des utilisateurs # kamctl add numéro mot_de_passe Nous venons de créer cinq comptes : 500, 501, 502, 503 et le 504 Voici d’ailleurs la preuve Place au test Un utilisateur va tenter de se connecter avec le compte 500 à travers un softphone Zoiper
  • 90. L’utilisateur 500 s’est connecté avec succès ! Un deuxième compte va se connecter avec Microsip
  • 92. De l’autre côté Après avoir rédigé sa réponse, il clique sur la touche Entrée pour valider l’envoi
  • 93. Test appels vidéo Sans aucune configuration particulière, Kamailio supporte les services que nous venons de tester.
  • 94. VI. Trunk CallManager Express & KAMAILIO Le but de cette partie est de faire un Trunk entre le serveur CME et Kamailio qui permettra au clients Kamailio de passer des appels vers le CME et inversement. Config côté CME CallManager Express (CME) est un serveur de téléphonie propriétaire à Cisco. Il permet de gérer un nombre limités d’abonnés. Architecture  Configuration IP  Activation du port Skinny et définition du nombre de téléphones CME(config)#telephony-service CME(config-telephony)#ip source-address 192.168.10.254 port 2000
  • 95. CME(config-telephony)#max-ephone 15 CME(config-telephony)#max-dn 15 CME(config-telephony)#create cnf-files version-stamp 7960 Creating CNF files CNF-FILES: Clock is not set or synchronized, retaining old versionStamps CME(config-telephony)#exit CME(config)#  Création des numéros Un premier numéro CME(config)#ephone-dn 1 CME(config-ephone-dn)#number 1000 CME(config-ephone-dn)#exit CME(config)#ephone-dn 2 Un deuxième numéro CME(config-ephone-dn)#number 1001 CME(config-ephone-dn)#exit CME(config)#ephone-dn 3 CME(config-ephone-dn)#number 1002 CME(config-ephone-dn)#exit CME(config)#  Activation de l’auto assignation des numéros CME(config)#telephony-service CME(config-telephony)#auto assign 1 to 15 CME(config-telephony)#exit CME(config)# Place au test Nous allons utiliser un softphone IPcommunicator pour se connecter
  • 96. Quand il lance son softphone, il devra renseigner l’adresse du CME en cliquant sur Menu > Préferences > Réseau Ensuite valider afin de s’enregistrer La preuve que le softphone est enregistré avec succès :
  • 97. Les traces de son enregistrement sur la console du serveur : Un autre softphone vient aussi de se connecter, voici ses traces
  • 98. Le 1001 qui reçoit l’appel du 1000 Les deux abonnés du CME communiquent sans problèmes ! Configurations Coté Kamailio  Activer kamailio pour cet effet
  • 99. # vim /etc/default/kamailio  Créer une route vers le CME Dans la section request_route entre les routes (PSTN) et (LOCATION) # vim /etc/kamailio/kamailio.cfg Note : On définit toujours les routes dans le contexte request_route route(CME) ;  Définition de la méthode Note : On définit toujours les méthodes en dehors du contexte request_route Nous allons ensuite indiquer à kamailio comment joindre les abonnés du CME. Toujours dans le même fichier. Cette partie est l’équivalent du dialplan chez Asterisk. Cette fois-ci c’est après la section request_route route[CME]{ if(($rU=~"^1[0-9][0-9][0-9]$")){ $ru = "sip:" + $rU + "@" + "192.168.10.254:5060"; route(RELAY); exit; } } En claire
  • 100. Traduction : Les lignes barbares ci-dessus signifient que : Tout numéro composé commençant par 1 et suivit de trois chiffres compris entre 0 et 9, doit être redirigé vers le CME qui a pour adresse 192.168.10.254. Vu que les numéro des abonnés du CME sont de la forme : 1XXX  Arrêter le service et ensuite le démarrer # service kamailio stop # service kamailio start La configuration est finie de ce côté ! Définition du dialplan sur le CME Côté CME, nous allons définir un plan de numérotation qui permettra de joindre les clients Kamailio. CME(config)#dial-peer voice 2 voip CME(config-dial-peer)#destination-pattern 5.. CME(config-dial-peer)#session protocol sipv2 CME(config-dial-peer)#session target ipv4:192.168.4.148 CME(config-dial-peer)#codec g711ulaw CME(config-dial-peer)#exit CME(config)# Place au test Test 1 : Kamailio ===> CME Les appels de Kamailio vers le CME
  • 102. Test 2 : CME ===> Kamailio Les appels du CME vers Kamailio
  • 103. Les deux serveurs communiquent sans aucun problème ! VII. Les enregistrements SRV & NAPTR Dans cette partie, nous allons coupler notre serveur Kamailio à un DNS afin de pouvoir joindre les abonnés dudit serveur par un TEL/URI 7.1 : Définition de NAPTR Un pointeur d'autorité de nom ( NAPTR ) est un type d' enregistrement de ressource dans le système de noms de domaine d'Internet. Les enregistrements NAPTR sont le plus souvent utilisés pour des applications de téléphonie. Internet, par exemple, dans le mappage de serveurs et d'adresses d'utilisateur dans le protocole SIP ( Session Initiation Protocol ). La combinaison d'enregistrements NAPTR avec des enregistrements de service (SRV) permet l'enchaînement de plusieurs enregistrements pour former des règles de réécriture complexes qui produisent de nouvelles étiquettes de domaine ou des identificateurs de ressources uniformes (URI). Les noms de ressources uniformes ( URN ) sont un sous-ensemble d'identificateurs de ressources uniformes ( URI ) utilisés pour les identificateurs abstraits, tels que le nom
  • 104. d'une personne ou son numéro de téléphone. Pour que les URN aient un sens, elles doivent être mappées sur une ressource concrète quelconque. Les URL (Uniform Resource Locator) sont souvent utilisés pour décrire de telles ressources, telles qu'un nom d'hôte d' ordinateur ou un fichier local. L’enregistrement NAPTR facilite la normalisation des URN. Les enregistrements NAPTR mappent entre des ensembles d'URN, d'URL et de noms de domaine simples et suggèrent aux clients les protocoles disponibles pour la communication avec la ressource mappée. 7.2 : Définition de SRV Un enregistrement SRV ou enregistrement de service est une catégorie de données du DNS d'Internet qui vise à indiquer quels sont les services disponibles. Ce type d'enregistrement est défini dans la RFC 2782.Les enregistrements SRV sont souvent utilisés par les clients Microsoft Windows afin de trouver le contrôleur de domaine pour un service donné. Par ailleurs, les enregistrements SRV sont communément utilisés en association avec les protocoles standards ci- dessous :  XMPP (Jabber)  SIP  LDAP 7.3 : Objectifs Notre objectif est d’utiliser les enregistrements de type SRV et NAPTR en téléphonie sur IP pour :  Faciliter le paramétrage des terminaux SIP;  Permettre aux terminaux, connaissant simplement le nom de domaine, de faire des requêtes SRV pour avoir l’adresse IP du Serveur et pouvoir se connecter ;  Permettre l’interconnexion de deux serveurs de téléphonie ;  Permettre l’utilisation du TEL/URI au lieu du SIP/URI pour pouvoir joindre les abonnes se trouvant dans d’autres serveurs SIP. Le but de cette partie est de faire intervenir un DNS dans les configurations de Kamailio afin de pouvoir joindre les abonnés par TEL/URI
  • 105. 1. Mise en place du DNS # apt install bind9 bind9utils # cd /etc/bind # vim named.conf.default-zones # cp db.local ec2lt.zone # vim ec2lt.zone Les enregistrements SRV Un enregistrement SRV ou enregistrement de service est une catégorie de données du DNS d'Internet qui vise à indiquer quels sont les services disponibles. Ce type d’enregistrement est souvent utilisé en association avec certains protocoles standards comme : XMPP, SIP, LDAP. La syntaxe d’un enregistrement de type SRV  Service : le nom symbolique (commençant généralement par un symbole de soulignement) du service concerné (par exemple _sip ).  Protocole : généralement, c'est soit _tcp pour TCP, soit _udp pour UDP.  Nom.de.domaine : le domaine de validité de l'enregistrement (pleinement qualifié au format FQDN ou local à la zone DNS en cours de définition pour la même autorité d'origine).  TTL : champ standard DNS indiquant la durée de validité (Time-To-Live, durée de vie) de la réponse (en secondes).  Classe : champ standard DNS indiquant la classe d'adressage (c'est toujours IN pour Internet).  Type : l'identifiant du type d'enregistrement DNS (toujours SRV ici pour un enregistrement de service) ;  Priorité : la priorité du serveur cible (valeur entière non négative, plus elle est faible, plus ce serveur sera utilisé s'il est disponible) ;  Poids : poids relatif pour les enregistrements de même priorité ;
  • 106.  Port : le numéro de port (TCP ou UDP selon le protocole ci-dessus) où le service est disponible ;  Cible : le nom du serveur qui fournit le service concerné (doit être résolu en adresse IPv4 ou IPv6 par d'autres requêtes DNS sur les enregistrements A ou AAAA du nom de service cible) avec le protocole et sur le port indiqué. Mise en place On suppose que la déclaration de la zone est déjà faite dans le fichier /etc/named.conf.default-zones avant de faire ceci dans le fichier indiqué : Mettre à jour le fichier /etc/resolv.conf Redémarrer le serveur # service bind restart Test de bon fonctionnement du DNS
  • 107. Notre serveur DNS marche à merveille ! Tester les enregistrements SRV comme suit : Pour le canal udp # dig _sip._udp.ec2lt.sn SRV
  • 108. Pour le canal tcp # dig _sip._tcp.ec2lt.sn SRV  Passons aux enregistrements NAPTR # vim ec2lt.zone
  • 109. Note : Les numéros Kamailio sont sous la forme 5XX On peut aussi tester les enregistrement NAPTR comme suit : # dig -t naptr 0.0.5.ec2lt.sn Les enregistrements NAPTR fonctionnent à merveille !
  • 110.  Chargement du module enum.so ENUM, est un mécanisme permettant d'utiliser un numéro de téléphone comme clé de recherche dans le DNS pour trouver la manière de joindre une personne ou une autre entité. L'objectif d'ENUM est d'utiliser un numéro unique pour accéder à plusieurs identifiants de service caractérisant un individu : Grâce au numéro ENUM, on pourra atteindre un e-mail, une URL, un numéro de téléphone (fax, mobile, SIP), etc. Les priorités d'accès à ces différents services seront définies par l'utilisateur. # cd /etc/kamailio # vim kamailio.cfg  Activer le module enum  Création de la route enum  Définition de la méthode  Préciser au niveau du paramètre alias le domaine qu’il gère
  • 111.  Redémarrer le serveur Place au test Un utilisateur souhaitant se connecter, lance son softphone Microsip et fait les actions suivantes dans la rubrique Paramètres Il souhaite utiliser le compte 502
  • 112. Le compte s’est enregistré avec succès ! Test d’appels Le 502 qui va appeler le 501
  • 113. Voici le 501 qui reçoit l’appel L’appel par domaine marche avec succès !
  • 114. Voici un appel vidéo VIII. Trunk Kamailio & Asterisk Le but est claire. Permettre aux abonnés Kamailio de communiquer avec ceux d’Asterisk et inversement. Config côté Asterisk L’algo est claire. Pour qu’un abonné d’un serveur puisse appeler un autre abonné, il faut que ce dernier dispose d’un compte sur ce serveur. # vim sip.conf [sipkamailio] username=sipkamailio secret= type=friend host=192.168.4.148
  • 115. context=ec2lt allow=ulaw En claire Note : Le champ secret est vide, car le serveur pour lequel le compte est créé (Kamailio à l’occurrence) n’a pas moyen d’authentifier les comptes serveur comme le fait le CME avec les arguments de la commande sip-ua # vim extensions.conf exten => _5XX,1,Dial(SIP/sipkamailio/${EXTEN},40,tr) Configuration côté kamailio Il suffit juste de l’indiquer comment joindre les abonnés de Asterisk # vim /etc/kamailio/kamailio.cfg Dans la section request_route, on crée une route vers Asterisk comme suit : # Route vers Asterisk route(ASTERISK); En dehors de la section request_route, nous allons définir une méthode liée à cette route. route[ASTERISK]{ if(($rU=~"^3[0-9][0-9]$")){ $ru = "sip:" + $rU + "@" + "192.168.2.164:5060"; route(RELAY); exit;
  • 116. } }  Redémarrer le serveur # service kamailio restart Tests d’appels Un client d’Asterisk qui tente d’appeler un abonné de Kamailio. Le softphone Kamailio qui sonne.
  • 117. Faisons le test dans le sens inverse : C’est à dire, l’abonné du Kamailio qui appelle celui d’Asterisk
  • 118. Le softphone Asterisk qui sonne Nous constatons que les appels passent de part et d’autre ! IX. Freeswitch Étant un logiciel libre de VoIP multi-plateformes lancé en 2006, FreeSWITCH est aussi un serveur d'applications gratuit et open source pour la communication en temps réel, WebRTC, télécommunications, vidéo et Voice over Internet Protocol. Multiplateforme, il fonctionne sous Linux, Windows, macOS et FreeBSD. En claire, est un serveur de TOIP issu du serveur Asterisk mais ses fichiers de configuration sont au format xml. Pour sa simplicité et ses performances, beaucoup de plateformes de communication l’intègre. C’est le cas de FusionPBX utilisé par certains opérateurs de télécoms en Afrique et Bigbluebutton qui est une une plateforme de webconference.
  • 119. Le but de cette rubrique est de maîtriser l’installation de ce logiciel et aussi de se familiariser à la mise en place de ses services de base. 1. Installation Les prérequis # apt-get install --yes build-essential pkg-config uuid-dev zlib1g-dev libjpeg-dev libsqlite3-dev libcurl4-openssl-dev libpcre3-dev libspeexdsp-dev libldns-dev libedit-dev libtiff5-dev yasm libopus-dev libsndfile1-dev unzip libsmpp34-dev git  Installer le paquet libilbc-dev Il faudra faire les actions suivantes : Ajouter la ligne deb http://www.deb-multimedia.org stretch main dans /etc/apt/sources.list # nano /etc/apt/sources.list comme suit :  Autoriser la mise à jour depuis des dépôts non signés et non autorisés # apt-get update -oAcquire::AllowInsecureRepositories=true Et en suite : # apt-get install deb-multimedia-keyring -oAcquire::AllowInsecureRepositories=true # apt install libilbc-dev  Passons maintenant au téléchargement de Freeswitch # cd /usr/src # wget https://files.freeswitch.org/freeswitch-releases/freeswitch-1.8.6.zip
  • 120.  Le dézipper # unzip freeswitch-1.8.6.zip  La gestion des modules # vim freeswitch-1.8.6/modules.conf Dans la capture qui suit, il faut s’assurer que applications/mod_signalwire est commenté.
  • 123. Suivant  Configuration de freeswitch # ./configure Qui doit finir par un truc de ce genre :
  • 124. Si vous rencontrez des erreurs pendant la configuration, il faudra juste installer les paquets suivants : # apt install libreadline-dev lua5.2 lua5.2-doc liblua5.2-dev -y Et ensuite faire les actions suivantes # cp /usr/include/lua5.2/*.h /usr/src/freeswitch-1.8.6/src/mod/languages/mod_lua/ En claire Faire le lien entre le langage et le serveur # ln -s /usr/lib/x86_64-linux-gnu/liblua5.2.so /usr/lib/x86_64-linux-gnu/liblua.so En claire # make
  • 125. Qui doit normalement finir par un truc de ce genre : # make install Si l’installation se passe correctement, nous aurons des informations par rapport à l’installation des sons comme suit :  Installer les fichiers fichiers sons en français à l’aide des commandes ci- dessous :
  • 126. # make cd-sounds-fr-install # make uhd-sounds-fr-install # make hd-sounds-fr-install # make sounds-fr-install Ensuite créer les fichiers de configuration comme suit : # make samples Maintenant que l’installation est terminée, on doit se familiariser aux répertoires de configuration de FreeSWITCH qui est /usr/local/freeswitch Et c’est le nouveau dossier de configuration de freeswwitch ! 2. Démarrage de Freeswitch Pour démarrer freeswitch on tape la commande ./bin/freeswitch -nc dans le dossier /usr/local/freeswitch Pour accéder à l’interface de freeswitch on lance la commande ./bin/fs_cli toujours dans le même dossier, comme le montre la capture ci-dessous :
  • 127. On est enfin dans la console de freeswitch ! Une fois dans la console freeswitch on peut taper la commande /help pour voir les commande disponibles La commande reloadxml permet de recharger les fichiers de configuration de freeswitch qui sont au format xml
  • 128. 3. Les services de bases de Freeswitch Nous allons découvrir les services de base de notre nouveau serveur SIP. 3.1. Configuration des téléphones SIP et tests d’appels Après installation de freeswitch, des comptes SIP sont créés par défaut et on peut les voir dans le dossier /usr/local/freeswitch/conf/directory/default/ Nous voyons clairement qu’il existe 20 comptes SIP de 1000 à 1019 et un compte SCCP par défaut. Le mot de passe de ces comptes est par défaut : 1234 et est fixé dans le fichier /usr/local/freeswitch/conf/vars.xml Nous allons nous connecter au compte 1001
  • 129. Un autre utilisateur s’est aussi connecté avec le compte 1000 Test d’appels Le 1001 qui reçoit l’appel du 1000
  • 130. 3.2 Création de comptes SIP sur Freeswitch Il existe un script en perl de gestion de freeswitch qui s’occupe des histoires des comptes. Exécuter la commande suivante pour ajouter un compte : # cd /usr/local/freeswitch/scripts # cp -r /usr/src/freeswitch-1.8.6/scripts/perl/ ./ # perl/add_user 1020 Nous venons d’ajouter l’utilisateur 1020 Voici la preuve
  • 131. Il faudra ensuite recharger les configurations de freeswitch Testons notre nouveau compte
  • 132. Voici le contenu de notre nouveau fichier # nano /usr/local/freeswitch/conf/directory/default/1020.xml Un compte freeswitch comporte : user id des paramètres des variables Notre nouveau compte parvient à appeler les autres comptes. Mais lorsque nous utilisons un autre compte pour appeler le nouveau compte qui est 1020, nous remarquons que l’appel ne passe pas. Pour remédier à ce problème, il faudra définir une extension pour ce numéro. Le 1020 bien sûr ! Nous allons éditer le plan de numérotation # nano /usr/local/freeswitch/conf/dialplan/default.xml
  • 133. Nous constatons que le dialplan ne gère que des numéros compris entre 1000 à 1019. Faisons la modification suivante : Ce qui signifie que le troisième digit peut être aussi à 2. Il faudra ensuite recharger les fichiers de configuration Il suffit de mettre reloadxml dans la console de freeswitch Place au test Le numéro 1000 va tenter de joindre le 1020 Le 1020 reçoit à présent des appels correctement !
  • 134. 3.3 Ajout d’un ensemble de comptes Nous allons ajouter des comptes compris entre 1021 et 1030 Nous utiliserons donc la commande suivante : # cd /usr/local/freeswitch # scripts/perl/add_user --users=1021-1030 Voici la preuve Comme toujours, recharger les fichiers de configuration du serveur avec la commande reloadxml dans sa console ! Place au test Nous allons utiliser l’un des comptes que nous venons de créer. Le 1029 pour être précis
  • 135. Il reçoit un appel
  • 136. On constate que le 1029 reçoit l’appel, car dans le dialplan les numéros ayant 2 comme troisième digit était prévu ! Note : Le port d’écoute de freeswitch est géré par le paramètre ‘’internal_sip_port=5060’’ du fichier /usr/local/freeswitch/conf/vars.xml qu’on peut modifier à tout moment ! 3.4 Gestion des conférences mod_conference fournit un service de passerelle de conférence entrante et sortante pour FreeSWITCH. Il peut traiter plusieurs débits binaires, charger divers profils qui spécifient les commandes DTMF, jouer des sons et des tonalités rapides, et de nombreuses autres fonctions . Les conférences créées dans le plan de numérotation utilisent des profils définis dans /usr/local/freeswitch/conf/autoload_configs/conference.conf.xml. Dans ce fichier plusieurs profils de conférence sont définis et les numéros pour attribués à ces conférences sont définis dans le fichier /usr/local/freeswitch/conf/dialplan/default.xml. Voici le un tableau récapitulatif des numéros de conférence selon le taux d’échantillonnage Nous pouvons regarder certains profils dans le fichier /usr/local/freeswitch/conf/autoload_configs/conference.conf.xml  Le profile wideband
  • 137.  Le profile ultrawideband  Le profile video-mcu-stereo-720 On peut regarder aussi la définition du plan de numérotation des conférences dans fichier /usr/local/freeswitch/conf/dialplan/default.xml  Tout numéro commençant par 30 suivit de 2 chiffres pour accéder à la conférence du profile default
  • 138.  Tous numéros commençant par 31 suivant de 2 chiffres pour accéder à la conférence du profile wideband  Tous numéros commençant par 33 suivit de 2 chiffres pour accéder à la conférence du profile cdquality  Tous numéros commençant par 36 suivis de 2 chiffres pour accéder à la conférence du profile video-mcu-stereo-720 Place au test On peut tester par exemple une conférence en composant le numéro 3000. Naturellement vous serez le seul participant de ladite conférence au début, mais d‘autres abonnés pourront vous y rejoindre ! On constate qu’il y a trois comptes connectés actuellement : le 1029 et le 1005 et le 1016
  • 139. Un utilisateur va composer le 3000. Il choisit de faire une conférence Un autre compose le même numéro, 3000. Mais en appel vidéo cette-fois ci
  • 140. Note : Cette conférence est réservée au appels audios. Mais elle supporte tout de même les appels vidéos ! Conférence Vidéo Aucune configuration à faire, juste composer le 3600 qui s’occupe de cette action Sur l’un des smartphones connectés
  • 141. Freeswitch nous réserve d’innombrables fonctionnalités dont nous n’avons pas eu le temps d’énumérer dans ce TP. Conclusion Ce TP est hyper éloquent en ce qui concerne la vulgarisation de la puissance des solutions de ToIP et de la réduction drastique des coûts de communications dans les entreprises. De nos jours, toute entreprise " économiquement correcte " utilise en son sein au moins l’une des solutions de ToIP énumérées dans ce TP, car elles ne cherchent qu’à maximiser le rendement et le profit tout en minimisant les coûts.