Du VoIP avec Asterisk

 

VoIP?  Asterisk ? Qu’est ce que c’est ?

Le VoIP  pour Voice over IP, est une technique qui permet de communiquer par la voix sur des réseaux compatibles IP, qu’il s’agisse de réseaux privés ou d’Internet, filaire (cable/ADSL/optique) ou non (satellite, wifi, GSM) . Cette technologie est notamment utilisée pour prendre en charge le service de téléphonie sur IP (« ToIP » pour Telephony over Internet Protocol).

Asterisk permet, entre autres, la messagerie vocale, les files d’attente, les musiques, …
Il est possible également d’ajouter l’utilisation des conférences par le biais de l’installation de modules supplémentaires .

Passons maintenant dans le vif du sujet:

  • Installation
Après avoir installé notre distribution Linux (ici Debian 6.0.3) dans les règles de l’art, nous allons maintenant nous attaqué à la première partie de tutoriel.
  • Asterisk

Avant toute chose, il faut installer Asterisk sur notre Debian :

# apt-get install asterisk

Si l’on souhaite avoir en plus d’asterisk, l’installation de la langue française:

# apt-get install asterisk-prompt-fr-proformatique

Nous devons maintenant autoriser le démarrage du service et ainsi terminer l’installation.
Modifions ce dernier à l’aide d’un éditeur de texte :

# nano /etc/default/asterisk

Modifions le champ : RUNASTERISK=yes

Occupons-nous à présent de la configuration des différents fichiers qui se trouvent dans /etc/asterisk (configuration de base, nous pouvons faire beaucoup plus). Il va falloir modifier 3 fichiers : sip.conf, extension.conf et voicemail.conf.

    • sip.conf

sip.conf va servir pour configurer les logins et mots de passe de tous les périphériques.
Ce fichier est organisé en différentes zones appelées « context ».
On supprime l’entièreté du fichier et on ajoute:

bindport=5060 correspond au port UDP du protocole SIP

bindaddr correspond à l’adresse IP de l’interface sur lequel le serveur va écouter le trafic (0.0.0.0 pour toutes les interfaces)

language=fr pour avoir les messages vocaux en français

Imaginons maintenant que nous ayons un utilisateur John, à la suite du fichier, nous allonsq ajouter:

[John]
secret=motdepasse ; le mot de passe est obligatoire
context=local ; obligatoire, l'extension local gère les appels de l'utilisateur
mailbox=20@default ; numéro de la messagerie
type= friend ; obligatoire, autorise les appels entrants et sortants
host=dynamic ; obligatoire 
disallow=all ; Il s'agit des codecs, toujours mettre le disallow avant
allow=gsm
allow=ulaw
allow=alaw

On peut alors faire de la même manière pour un utilisateur qu’on appellera par exemple Laurent.

    • extension.conf

Ce fichier est utilisé pour router les appels vers un utilisateur ou vers sa messagerie.

Dans la partie [local], on va rajouter:

 exten => 200, 1, Dial(SIP/John, 10)

 Les appels arrivants sur le serveur à destination du numéro 200 sont envoyés vers le téléphone de John pendant 10 secondes (même raisonnement pour Laurent).

exten => 200, 2, VoiceMail(200@default)

Puis sont envoyés sur la messagerie de John, le @default n’est pas obligatoire ici.

exten => 200,3,PlayBack(Vm-Goodbye)    ;goodbye
exten => 200,4,Wait(2)
exten => 200,5,HangUp()
exten => 500, 1, VoiceMailMain

Le numéro 500 permet de vérifier sa messagerie vocale.

On procède de la même manière pour Laurent.

Dans la partie [default]:

200 => password, John
201 => tototata, Laurent
    • voicemail.conf

Le fichier voicemail.conf permet de configurer la messagerie vocale d’Asterisk.

Il ne faut pas oublier de redémarrer le service afin de prendre en compte les changements:

# /etc/init.d/asterisk restart

Pour vérifier la configuration et l’état des téléphones, nous utiliserons la commande suivante :

# asterisk –r (ou alors, rasterisk)
*CLI> sip show peers
  • Le Trunk

Un trunk SIP est une connexion SIP faite entre 2 serveurs SIP pour faire passer des appels entre les téléphones liés à ces serveurs.

Sur le premier serveur, nous allons rajouter un utilisateur dans le fichier sip.conf comme nous l’avons fait pour John et Laurent :

[trunk_1_vers_2]
type=friend
secret=test
context=local
host=dynamic
disallow=all
allow=ulaw
insecure=port,invite

On redémarre:

# /etc/init.d/asterisk restart

Pour vérifier que la configuration est bonne, nous allons afficher les différents utilisateurs enregistrés à l’aide de cette commande :

# rasterisk
*CLI> sip show peers

On doit normalement voir cette ligne:

Name/username      Host          Dyn   Nat   ACL   Port   Status
trunk_1_vers_2     IpDuServeur1   D                 5060  Unmonitored

Sur le 2ème serveur, nous allons faire en sorte que ce serveur s’enregistre. On ajoute la ligne suivante dans le fichier sip.conf du 2ème serveur (dans local) :

register => trunk_1_vers_2:test@IpDuServeur2

Avec cette ligne, le serveur 2 va s’enregistrer sur le serveur 1 avec le login trunk_1_vers_2  et le mot de passe test.

On va également rajouter une ligne dans le fichier extensions.conf du serveur 1:

exten => _2XXX,1,Dial(SIP/trunk_1_vers_2/${EXTEN})

Ainsi grâce à cette ligne supplémentaire, les utilisateurs enregistrés sur le premier serveur pourront passer des appels à destinations des utilisateurs du 2ème serveur (mais pas l’inverse, pour que ça soit possible, il va falloir faire pareil sur le 2ème serveur).

On redémarre:

# /etc/init.d/asterisk restart

Nous testons également que la configuration est correcte en affichant l’état de la ligne :

# rasterisk
*CLI> sip show peers
  • Le client (X-Lite)

X-Lite est un softphone comme il en existe beaucoup. Il est gratuit et gère les appels vidéo.
Téléchargeable ici : http://www.counterpath.com/x-lite.html

On crée d’abord un compte avec comme IP dans Domain celle du notre serveur.

L’user ID ainsi que le Password correspondent à ceux choisis dans la configuration du fichier sip.conf.