HEB-ESI Rapport VOIP 1 Rapport du laboratoire VOIP Passerelle PSTN via Hardware Benhammadi Wiam et Jarradia Nizar 3 éme R (11) 2008
HEB-ESI
Rapport VOIP
1
Rapport du laboratoire VOIP
Passerelle PSTN via Hardware
Benhammadi Wiam et Jarradia Nizar
3éme
R (11) 2008
HEB-ESI
Rapport VOIP
2
Sommaire 1- Introduction .............................................................................................................................................................. 3
2- Installation Trixbox .................................................................................................................................................... 3
2.1 La distribution Trixbox ...................................................................................................................................... 3
2.2 Pré-requis à l'installation .................................................................................................................................. 3
2.3 Configuration du réseau ................................................................................................................................... 5
3- Prise de connaissance du matériel ............................................................................................................................ 5
3.1 Petite explication sur la syntaxe des cartes TDM ............................................................................................. 5
3.2 Explication sur FXO/FXS .................................................................................................................................... 5
3.3 Pré requis .......................................................................................................................................................... 5
3.4 Installation du module Zaptel ........................................................................................................................... 6
3.5 Problèmes rencontrés : ..................................................................................................................................... 7
4- La console Asterisk .................................................................................................................................................... 7
4.1 Connexion : ....................................................................................................................................................... 7
4.2 Commandes principales : .................................................................................................................................. 7
4.3 Prise en compte de nouvelles configurations : ................................................................................................. 7
5- Configuration Manuelle (en ligne de commande) .................................................................................................... 8
5.1 Création des comptes utilisateurs : .................................................................................................................. 8
5.2 Création du DialPlan.......................................................................................................................................... 8
5.3 La configuration du matériel téléphonique installé .......................................................................................... 9
6- Configuration d’ Asterisk via sa plate-forme web : ................................................................................................. 10
6.1 Installation des modules FreePBX ................................................................................................................... 10
6.2 Création des comptes utilisateurs : ................................................................................................................ 11
6.3 Configuration des trunks ................................................................................................................................. 13
6.4 Etablissement d'une route de sortie (outbound route) .................................................................................. 14
6.5 Listing des fichiers de configuration par interface graphic ............................................................................. 15
7- Outils de test de notre configuration ...................................................................................................................... 17
8- Résultat ................................................................................................................................................................... 19
Toutes les possibilités d'appels ont fonctionnés : .......................................................................................................... 19
9- Manipulations sur une autre distribution ............................................................................................................... 19
9.1 Installation asterisk ......................................................................................................................................... 19
9.2 Création des comptes utilisateurs : ................................................................................................................ 20
9.3 Création du DialPlan........................................................................................................................................ 20
9.4 Problème rencontré ........................................................................................................................................ 20
10- Références .......................................................................................................................................................... 21
HEB-ESI
Rapport VOIP
3
1- Introduction
Trixbox : C'est une distribution GNU/Linux basée sur Cent OS . Elle integre asterisk , webmin ,
sendmail , freepbx.
Asterisk : Il permet de mettre en place un PBX ( Private Branch eXchange ), c'est un serveur Voip
( Voix Ip ).
Webmin : Est un outil qui permet d’administrer à distance et de manière plus intuitive le serveur sur lequel il
est mis en place et ce via une interface web.
Freepbx : Est un outil integrer dans trixbox, c'est une interface web utilisant le port 80 qui permet
de configurer à distance et de manière plus intuitive les configuration du serveur Asterisk.
Schéma d’architecture de notre projet :
2- Installation Trixbox
2.1 La distribution Trixbox
Comme dit plus haut, Trixbox anciennement appelé "Asterisk@Home" est une distribution Linux CentOS qui
fournit un package de téléphonie open source basé sur le fameux PBX Voix-sur-IP Asterisk.
L'installation est automatique. Il suffit de mettre le CD dans le lecteur et Trixbox s'installera tout seul sur
l’intégralité du disque dur. Une fois l'installation terminé, il rebootera et sera directement utilisable.
2.2 Pré-requis à l'installation
• Vérifiez que votre PC démarrera à partir du CD (dans le BIOS, ordre de chargement)
• Démarrez votre PC trixbox avec le CD dans le lecteur et appuyez sur entrée. L'écran suivant
apparaît quelques instants plus tard. Pressez F2 pour voir les différentes options. Toutefois ce n'est
pas vraiment nécessaire. Pressez [entrée] pour commencer l'installation.
HEB-ESI
Rapport VOIP
4
• On vous demande de choisir la configuration clavier que vous utilisez. Utilisez les flèches pour
sélectionner le type de clavier choisi et utilisez la touche tabulation pour sélectionner OK ou Back.
Sélectionnez be and validez sur OK en appuyant sur [entrée].
• On vous demande ensuite de choisir votre fuseau horaire.
• Ensuite on vous demande d'entrer un mot de passe root. Il sert à administrer notre système.
Login : root
Passwd : system504
• L'installation commence dès la confirmation du mot de passe en formatant les disques durs.
Comptez 30 min à 1h pour une installation complète et configurable.
A la fin de l'installation, le CD est éjecté.
• Après le redémarrage, vous êtes devant cet écran
• Après un moment, le démarrage continue et une liste de lignes de code apparaît. Ça peut prendre un
moment : c'est la compilation d'Asterisk qui se fait. (seulement au premier démarrage)
• Quand la compilation d'Asterisk est terminée, ça redémarre tout seul. Une fois redémarré, trixbox
est prêt pour la suite de la configuration et à effectuer les changements du système par défaut.
HEB-ESI
Rapport VOIP
5
2.3 Configuration du réseau
Dans console taper : netconfig puis remplir les champs
ou manuellement :
3- Prise de connaissance du matériel
3.1 Petite explication sur la syntaxe des cartes TDM
Le fabricant de ce type de carte est digium, la société qui développe Asterisk. Ce sont des cartes TDM400P,
modulables, c'est à dire que l'on peut y ajouter des modules FXO/FXS.
3.2 Explication sur FXO/FXS
FXS (Foreign eXchange Subscriber) est un port qui raccorde la ligne téléphonique de l’abonné. En d’autres
termes, la « prise murale » (la fiche 31 du labo 504) qui fournit la tonalité, le courant de charge et le voltage de
la sonnerie.
FXO (l’interface Foreign eXchange Office ) est un port qui reçoit la ligne téléphonique. C’est la prise de notre
réseau téléphonique analogue.
Le FXO et le FXS vont toujours de paire – similaire à la prise mâle et femelle.
3.3 Pré requis
On dispose à ce stade d'un ordinateur qui fonctionne, avec une distribution linux installée (trixbox), et asterisk
installé non configuré.
IP address (Adresse IP): 192.168.210.3 Netmask (Masque de sous-réseau): 255.255.192.1 Default gateway (IP) (Passerelle par défaut): 192.168.192.1 Primary nameserver (serveur de nom primaire): 152.158.16.48
ifconfig eth0 192.168.210.3 netmask 255.255.192.0 route add default gw 192.168.192.1 route -n vi /etc/resolv.conf // pour ajouter DNS
HEB-ESI
Rapport VOIP
6
Figure 1 : Une carte TDM400P wildcard à 4 ports. Deux ports sont utilisés (un FXO et un FXS), les
deux autres restant libres pour une utilisation ultérieure.
3.4 Installation du module Zaptel
Sous trixbox, l’équivalent à APT est YUM avec lequel nous avons pu récupérer et installer le module
zaptel.
Si problème de dépendances avec zaptel, aller chercher un script sur le site de trixbox et lancez le :
Résultat après ztcfg –vv :
Wget http://yum.trixbox.org/fix/fix-zaptel.sh ./fix-zaptel.sh //(chmod+x requis)
Yum install zaptel-modules*.EL Yum install oslec-modules*.EL ztcfg –vv // afficher la config des canaux de la carte tdm400 )(échec la premiere fois)
genzaptelconf //Permet de décharger les modules utilisés par astr isk et reconfigurer)
ztcfg –vv
Channel map: Zaptel Configuration ====================== Channel map: Channel 02: FXO Kewlstart (Default) (Slaves: 02) Channel 04: FXS Kewlstart (Default) (Slaves: 04) 2 channels configured.
HEB-ESI
Rapport VOIP
7
3.5 Problèmes rencontrés :
Compilation du module zaptel :
Quand le module zaptel n'est pas bien compilé, on peut avoir les erreurs suivantes :
4- La console Asterisk
4.1 Connexion :
asterisk -rc
– options supplémentaires
• -v niveau dedebug (plusieurs spécifiables)
• -n texte seulement
4.2 Commandes principales :
Commande Description
Help et help commande aideinterne
sip show peers
voir les téléphones et fournisseurs SIP
sip show registry voir les enregistrements à des fournisseurs SIP
stop now arrêt (voir aussi help stop pour les variantes)
show channels voir les communications en cours
show channel XXXX Détails sur un canal donné
zap show channels Canaux Zaptel
pri show span 1 Détails sur un canal Zaptel (ISDN)donné
show codecs
voir les numérosde codecs
show dialplan voir les différents contexteset extensions
4.3 Prise en compte de nouvelles configurations :
Commande Description
reload Reconfiguration globale
reload CONFIG Reconfiguration d’une configuration
particulière
sip reload Reconfiguration SIP
# ztcfg Notice: Configuration file is /etc/zaptel.conf line 0: Unable to open master device '/dev/zap/ctl' line 0: Unable to open configuration file '/etc/zap tel.conf' 2 error(s) detected _ __ ___ ____ ___ ___ ___ ___ __ __ __ __ server-asterisk:/etc# zttool Unable to open /dev/zap/ctl: No such device or addr ess
HEB-ESI
Rapport VOIP
8
5- Configuration Manuelle (en ligne de commande)
Les différents fichiers de configuration d'Asterisk se trouvent dans le dossier /etc/asterisk :
• extensions.conf Permet d’associer à chaque numéro de téléphone une suite de commandes.
• sip.conf
Répertorie de tous les utilisateurs pouvant se connecter au serveur Asterisk via un soft
phone ou un hard phone via le protocole SIP
• zapata.conf :
Sert à spécifier à Asterisk les paramètres et la configuration du matériel téléfonique installé (ici notre
carte tdm410).
Pour éditez l'un de ces fichiers il suffit de tapez la commande :
5.1 Création des comptes utilisateurs :
Il faut éditez le fichier sip.conf et y ajoutez tous les utilisateurs.
Pour déclarer nos deux utilisteurs, il faut simplement ajouter les lignes suivantes à la fin de ce fichier :
Rem : Il existe trois types de comptes dans Asterisk :
• peer : Compte permettant uniquement d'appeler
• user : Compte permettant d'être appeler uniquement
• friend : Compte permettant d'appeler et d'être appeler
5.2 Création du DialPlan
Principe de fonctionnement :
Quand un utilisateur fait appel, il se connecte d'abord à Asterisk. Asterisk regarde dans un premier temps le
context de cet utilisateur appelant, ensuite il regarde le n° d'extention appelé et son « context ». Puis va voir
dans le fichier /etc/asterisk/extensions.conf si le n° appelé est bien disponible depuis le context de l'appelant. Il
va ensuite voir au context approprié et executer ce qu'il y a écrit pour l'extension qui est appelé.
[wiam] ; nom du téléphone type=friend ; type de téléphone host=dynamic ; username=wiam ; nom d’utilisateur associé secret=1234 ; mot de passe context= interne ; permet de recevoir des appels entrants disallow=all ; interdit tous les codecs allow=ulaw ; autorise uniquement le codec G711 loi µ [nizar] ; nom du téléphone type=friend ; type de téléphone host=dynamic ; username=nizar ; nom d’utilisateur associé secret=1234 ; mot de passe context=interne ; permet de recevoir des appels entrants disallow=all ; interdit tous les codecs allow=ulaw ; autorise uniquement le codec G711 loi µ
vi /etc/asterisk/<nomdufichier>.conf
HEB-ESI
Rapport VOIP
9
Exemple :
Il faut donc éditez le fichier extensions.conf ( vi /etc/asterisk/extensions.conf) et y ajouter les lignes suivantes :
Cette zone « interne », définit plusieurs choses :
Dans un premier temps, lorsqu'un appel arrive sur wiam, on le redirige vers le numero interne 101, priorité 1.
Même principe pour un appel qui arrive sur nizar.
Pour le téléphone analogique il suffit de rajouter la ligne suivante à ce même fichier.
On spécifie ici que l’on redirige les appels du numéro 100 vers le channel 2 de la carte Zaptel.
5.3 La configuration du matériel téléphonique installé
Zapata se charge de controler les diverses fonctionnalité associées au canal matériel telles que la présentation du matériel, la mise en attente d'appels, la suppression d'echo.
A chaque modification du fichier zapata.conf il faut faire un reload dans la console Asterisk
[interne ] exten => 101,1,Dial(SIP/wiam) ;101 appelle le télé phone wiam exten => 102,1,Dial(SIP/nizar) ;102 appelle le téléphone nizar
exten => 100,1,Dial(Zap/2)
;;;;;;[100] record_out=Adhoc record_in=Adhoc mailbox=100@device immediate=no ; indique au cannal FXS de produire une tonalité lorsque le poste est décroché et d'attendre l'entrée du user echotraining=yes echocancelwhenbridged=no echocancel=yes ; suppresseur d'écho dial=ZAP/2 callprogress=no callerid=device <100> busydetect=no busycount=7 accountcode= context=interne ;les appels entrant vont dans [incoming] de extensi ons.conf signalling=fxo_ks channel=>2 ; indique le port FXOde la carte TDM400P sur lequel la ligne téléphonique est connectée
HEB-ESI
Rapport VOIP
10
La ligne context=interne indique que tous les appels entrant sont associés à ce contexte. Les deux lignes
suivantes décrivent la signalisation (fxo_ks) pour ce canal zapata (channel => 2).
Une fois ce nouveau type de canal configuré (canal zapata), nous sommes proches de pouvoir recevoir et passer
des appels vers et depuis le PSTN.
6- Configuration d’ Asterisk via sa plate-forme web : La configuration se fait par interface web en se connectant à l'adresse IP de l'IPBX : http://192.168.210.3
Vous devez basculer en mode admin pour configurer trixbox. Cliquez sur le lien Internet "switch" dans le coin
en haut à droite de l'écran. Un popup vient, entrez l'identifiant et le mot de passe suivant:
utilisateur : maint
mot de passe : password
Une fois que vous avez validé, l’écran suivant s’affiche :
6.1 Installation des modules FreePBX
Lors de la première utilisation de FreePBX, il faut ajouter les modules nécessaires. En cliquant sur l’onglet « Tools »
puis sur « Module Admin ».
On peut ensuite ajouter l’ensemble des modules.
En clair, les modules sont des paquets logiciels que Asterisk utilise pour différentes applications.
HEB-ESI
Rapport VOIP
11
6.2 Création des comptes utilisateurs :
On doit créer une extension, SIP le plus souvent, pour chaque terminal logiciel/matériel :
Sélectionnez Asterisk -> FreePBX
Clique sur l'onglet the setup pour configurer les extensions qui sont les numéros de téléphone.
Onglet Setup -> section extensions
Dans la fenêtre "add an extension"
On clique donc sur
• Generic SIP device pour les clients
• Generic zap device pour le téléphone analogique
HEB-ESI
Rapport VOIP
12
et on crée une nouvelle extension avec les différents paramètres :
Clique sur le bouton "submit" (soumettre) en bas de la page pour créer une extension.
Une fois toutes les extensions crées, nous devions cliquer sur le bouton rouge "Apply Configuration Changes"
(Appliquez les changements de configuration) sur la gauche pour appliquer nos nouveaux paramètres
d'extension.
HEB-ESI
Rapport VOIP
13
6.3 Configuration des trunks
Les trunks sont les « fournisseurs de téléphonie ». Ce sont eux qui nous permettent de joindre une
ligne extérieure. Notre ligne Belgacom analogique est un trunk (ZAP).
Dans la section Trunks de freePBX, nous avons crée un nouveau trunk ZAP.
Par défaut, nous laisserons passer tous les appels.
• La case “Maximum Channels” indique le nombre de lignes VoIP prises chez l'opérateur.
• La ligne allow donne les codecs autorisés par ordre de préférence d'utilisation.
HEB-ESI
Rapport VOIP
14
6.4 Etablissement d'une route de sortie (outbound route)
Dans freePBX cliquez sur setup=>Outbound routes=>Add route
Par défaut, Trixbox a crée un trunk pour sortir par le port FXO de notre carte digium TDM400 (trunk
Zap/g0), et a déjà crée une route qui oblige l'utilisateur a tapé le préfixe 9 pour avoir une ligne
extérieure. (09_outside).
Nous avons choisi de modifier le dial pattern en éditant la route 0 9_outside sur la droite de l'écran et en
changeant le nom de la routre ainsi que d’autres caractéristiques.
Le seul dial pattern jusqu'à maintenant devrait être '2|.' Nos utilisateurs pressent 2 pour avoir une ligne
extérieure.
HEB-ESI
Rapport VOIP
15
Comme pour les groupes ayant abordé ce thémé l’année derniere et après plusieurs labos, configurations
diverses et appels dans toute l’école, cette manipulation n'a pas fonctionné.
Apparement avec l’aide du professeur, ces étudiants on dû utiliser un oscilloscope pour vérifier le signal qui
sortait de la carte, ils ont remarqué qu’il était légèrement différent que le signal qui sortait directement du
téléphone point de vue tonalité. Nous supposons que le problème vienne de là.
6.5 Listing des fichiers de configuration par interface graphic
L’interface web génère des fichiers *_additionnal.conf
sip.conf
[general] bindport = 5060 ; Port to bind to (SIP i s 5060) …… …… include sip_additionnal.conf
HEB-ESI
Rapport VOIP
16
extensions.conf
sip_additionnal.conf Extension_additionnal.conf
Le fichier étant grand, nous n’afficherons ici que la partie configuraton pour sortir de notre centrale avec le
numéro 2.
; do not edit this file, this is an auto-generated file by freepbx ; all modifications must be done from the web gui [101] type=friend secret=1234 record_out=Adhoc record_in=Adhoc qualify=yes port=5060 nat=yes mailbox=101@device host=dynamic dtmfmode=rfc2833 dial=SIP/101 context=from-internal canreinvite=no callerid=device <101> [102] type=friend secret=1234 record_out=Adhoc record_in=Adhoc qualify=yes port=5060 nat=yes mailbox=102@default host=dynamic dtmfmode=rfc2833 dial=SIP/102 context=from-internal canreinvite=no callerid=device <102>
; include extension contexts generated from AMP #include extensions_additional.conf Plein d’autres config par défaut. [...]
[…………] [outrt-001-2_outside] include => outrt-001-2_outside-custom exten => _2.,1,Macro(dialout-trunk,1,${EXTEN:1},,) exten => _2.,n,Macro(outisbusy,) […………]
HEB-ESI
Rapport VOIP
17
7- Outils de test de notre configuration
Notre serveur trixbox est maintenant configuré avec trois extensions ou numéros de téléphone.
Des téléphones logiciels (softphones) SIP sont utilisés sur deux ordinateurs portables, deux Windows.
Un téléphone logiciel (softphone) est un téléphone installé sur un ordinateur pendant qu'un téléphone matériel
(hardphone) est un téléphone physique semblable à un téléphone traditionnel.
Nous avons choisi le softphone X-Lite.
Sélection de "SIP Account Settings ...".
Dans la fenêtre "SIP Accounts" (Acomptes SIP):
Clique sur le bouton "Add..." (Ajouter).
HEB-ESI
Rapport VOIP
18
Nous avons configuré la fenêtre "Properties of Account1" (propriétés de l'accompte1):
Le softphone est maintenant authentifié par Asterisk.
Display name (Nom d'affichage): wiam User name (Nom d'utilisateur): 101 Password (Mot de passe): 1234 Domain (Domaine): 192.168.210.3
HEB-ESI
Rapport VOIP
19
8- Résultat Toutes les possibilités d'appels ont fonctionnés :
• SIP à SIP
• ZAP à SIP
• SIP à ZAP
9- Manipulations sur une autre distribution Comme expliqué au point 6.4 nous avons rencontré un problème pour avoir la ligne exterieure.
Nous avons effectué les mêmes manipulations sur un autre os qui est Debian.
9.1 Installation asterisk
Il a fallu installer Asterisk et les sources du module "zaptel" (drivers de la carte tdm).
Pour installer les paquets sur notre distribution linux debian, il faut taper la commande suivante :
Pour les paquets libpri, zaptel et asterisk, il faut procéder différemment à l’installation en décompressant
l’archive et en recompilant les sources. Cette manipulation est expliquée ci-dessous.
Le module chargé en mémoire et les LEDs sur la carte tdm allumées, il ne restait plus qu'a paramétrer le fichier
/etc/zaptel.conf afin de préciser quels ports on utilise et quel type de signalisation sera utilisé par les modules FXS et
FXO connectés à la carte.
# apt-get install <nom_paquet>
# tar xzvf libpri.tar.gz ; Décompression des archives
# tar xzvf zaptel.tar.gz
# tar xzvf asterisk.tar.gz
# mv libpri zaptel asterisk /usr/src/asterisk
# cd /usr/src/asterisk/libpri
# make ; Utilitaire de recompilation de sources
# make install
# cd /usr/src/asterisk/zaptel
# make install
# cd /usr/src/asterisk/asterisk
# make mpg123
# make
# make install
fxoks=2 fxsks=4 loadzone = be defaultzone = be
HEB-ESI
Rapport VOIP
20
On vérifie que les modules sont reconnus avec la commande « ztcfg –vv »
9.2 Création des comptes utilisateurs :
9.3 Création du DialPlan
Nous avons effectué des tests entre les diffèrentes machines « client » équipés du X-Lite.
Le test s’est bien déroulé. Il nous reste la configuration du téléphone analogique.
9.4 Problème rencontré
Tout semblait parfait, les logs nous affirmaient que la carte était parfaitement configurée, mais après avoir connecté
un téléphone sur la carte nous n'avions pas de tonalité. Nous avons dû consacrer 2 séances pour chercher d'où
venait le problème.
[wiam] ; nom du téléphone type=friend ; type de téléphone host=dynamic ; enregistrement dynamique de l’adres se IP du téléphone username=wiam ; nom d’utilisateur associé secret=1234 ; mot de passe context= interne ; permet de recevoir des appels entrants disallow=all ; interdit tous les codecs allow=ulaw ; autorise uniquement le codec G711 loi µ [nizar] ; nom du téléphone type=friend ; type de téléphone host=dynamic ; enregistrement dynamique de l’adres se IP du téléphone username=nizar ; nom d’utilisateur associé secret=1234 ; mot de passe context=interne ; permet de recevoir des appels entrants disallow=all ; interdit tous les codecs allow=ulaw ; autorise uniquement le codec G711 loi µ
[interne ] exten => 101,1,Dial(SIP/wiam) ;101 appelle le télé phone wiam exten => 102,1,Dial(SIP/nizar) ;102 appelle le téléphone nizar exten => 103,1,Dial(SIP/philippe) ;103 appelle l e téléphone philippe exten => 100,1,Dial(Zap/2)
Channel map: Zaptel Configuration ====================== Channel map: Channel 02: FXO Kewlstart (Default) (Slaves: 02) Channel 04: FXS Kewlstart (Default) (Slaves: 04) 2 channels configured.
HEB-ESI
Rapport VOIP
21
10- Références Nous nous sommes essentiellement basés sur des sources venant d’internet :
• http://www.voip-info.org/
• http://www.asterisk-france.net/
• http://www.asteriskguru.com/
• http://www.asterisk.org/
• http://www.unixgarden.com/index.php/administration-systeme/voix-sur-ip%C2%A0-serveur-de-telephonie-
asterisk