A propos | Laboratoire | Voisinage | Meilleurs articles | Nous aider | Forums

Panoramisk / Le druide de la VoIP 

Introduction à la ToIP

Asterisk est une plate-forme ouverte et OpenSource de téléphonie sur IP. Elle permet de concevoir des solutions complète de téléphonie intégrant aussi bien la téléphonie traditionnelle en analogique ou numérique que la téléphonie sur IP avec les protocoles MGCP, SIP et un protocole inter-PABX propriétaire : IAX.

On trouve de nombreux document sur Internet concernant Asterisk et comment le configurer, mais nous avons décidé de vous proposer une mise en oeuvre simplifié et prenant les concepts à la base afin de faciliter le compréhension de la plate-forme. Nous commençons par cet article sur le configuration de base autorisant l’appel entre plusieurs postes localisés sur le même PABX.

Configuration

La configuration nécessite la compréhension du principe de routage. Chaque extension est manipulée depuis sa source (une ligne analogique ou numérique, un téléphone IP ou un softphone, l’appel en provenance d’un autre PABX) vers une destination via des règles de routage qui s’enchaînent. On regroupe les règles dans des contextes permettant de séparer les utilisateurs, les usages ou les sources.

La configuration de base comporte au minimum les fichiers asterisk.conf et extensions.conf. Les sources sont dans différents fichiers en fonction de leur type: mgcp.conf, iax.conf, sip.conf ou encore zapata.conf.

asterisk.conf

Par défaut on positionne certains chemin de base au fonctionnement du moteur asterisk, la présence de ce fichier n’est pas obligatoire, mais voici un exemple de contenu:

astetcdir => /etc/asterisk
astmoddir => /usr/lib/asterisk/modules
astvarlibdir => /var/lib/asterisk
astagidir => /var/lib/asterisk/agi-bin
astspooldir => /var/spool/asterisk
astrundir => /var/run/asterisk
astlogdir => /var/log/asterisk

iax.conf

Dans iax.conf, on positionne les clients qui se connecterons en utilisant le protocole propriétaire Asterisk mais disponible dans un nombre croissant de téléphone sur le marché. Chaque client sera défini par un label, nous utilisons par défaut l’extension. Comme chaque fichier de configuration, une section initiale est globale, ensuite viennent toutes les sections variables. Si le fichier est trop important en taille ou que l’on souhaite le découper fonctionnellement, on peut utiliser la directive #include.

Exemple avec deux extensions IAX pour des téléphones:

[general]
bindport=4569[212]
username=212
type=friend
host=dynamic
context=internal
callerid="Alex Chauvin" <212>

[201]
username=201
type=friend
host=dynamic
context=internal
callerid="Stefano Campagna" <201>

Dans cette configuration, les postes peuvent prendre une adresse IP dynamique, aucun système d’authentification n’est mis en place et enfin, on spécifie via la directive callerid le nom de l’utilisateur et son extension dans un format type RFC822.

Le paramètre context permet de relayer vers les règles de routage de l’extension ou de l’utilisateur en question, nous l’utiliserons dans extensions.conf.

sip.conf

Le fichier sip.conf est similaire à iax.conf pour les téléphones ou softphones utilisant le protocole SIP. Dans notre cas, nous utilisons un téléphone SIP avec l’extension 220. Voici le contenu du fichier, avec une partie générale et chaque définition de téléphone:

[general]
port = 5060
[cpa]
username=cpa
type=friend
host=dynamic
context=internal
callerid="Stefano Campagna" <201>

Ici, le nom de la section est un nom d’utilisateur, alors que dans IAX nous avions mis un numéro d’extension. Cette modification est impactante pour le client (téléphone ou softphone) qui devra utiliser ce label comme login. Nous conseillons ce type d’usage car il permet un diagnostique plus rapide que la simple manipulation des extensions. Le context est le même que pour les téléphones en IAX, afin de bénéficier des mêmes règles de routage.

extensions.conf

Le fichier extensions.conf permet de définir les règles de routage. Dans notre installation nous permettons pour l’instant les appels inter poste. Dans le contexte internal, nous définissons comment joindre les différents postes. Chaque extension de notre plan de numérotation interne va être interprété et acheminé vers des liens physiques (IAX ou SIP dans notre cas).

[general]
static=yes[internal]
exten => 201,1,Dial(IAX2/201)
exten => 212,1,Dial(IAX2/212)
exten => 220,1,Dial(SIP/pgx)

L’application Dial est utilisée pour l’acheminement de l’appel dans le context internal, le premier argument passé est la ligne préfixée par son type (IAX2 ou SIP).

Mise en oeuvre

Nous n’abordons pas ici l’installation du logiciel Asterisk en tant que tel, de nombreux papiers et packages sont directement disponibles. Si vous souhaitez tester rapidement sans pour autant avoir une installation de Linux complète à effectuer, vous pouvez démarrer d’Asterisk@Home. Une fois installé, il vous suffira d’arrêter asterisk, de supprimer les fichiers de configuration dans /etc/asterisk et de démarrer avec ceux proposer dans cet article. Il pourra être nécessaire de supprimer des modules ne démarrant pas bien (cf modules.conf, option noload).

Lancement et validation

Une fois asterisk démarré, il est possible de prendre la main sur un mode de commande via asterisk -r. Ce mode interactif permet de vérifier les configurations et de récupérer les logs si le mode verbose est positionné à une valeur supérieure à 0 (commande set verbose).

On peut vérifier que les postes sont bien connectés:

asterisk1*CLI> iax2 show peers
Name/Username    Host                 Mask             Port          Status
201/201          192.168.16.181  (D)  255.255.255.255  4569          Unmonitored
212/212          192.168.16.186  (D)  255.255.255.255  4569          Unmonitored

2 iax2 peers [0 online, 0 offline, 2 unmonitored]asterisk1*CLI> sip show peers

Name/username              Host            Dyn Nat ACL Port     Status
pgx/pgx                    192.168.16.182   D          5060     OK (19 ms)

1 sip peers [1 online , 0 offline]

Enfin lors d’une communication, on peut voir l’état des canaux utilisés, par exemple, le 220 appelle le 201:

asterisk1*CLI> show channels
Channel              Location             State   Application(Data)
IAX2/201-5           s@internal:1         Up      Bridged Call(SIP/pgx-7ed5)
SIP/pgx-7ed5         201@internal:1       Up      Dial(IAX2/201)

Conclusion

Voici un exemple très simple de téléphonie sur IP. La preuve est facilement faite que l’on peut rapidement mettre en oeuvre un PABX IP sur l’excellente base d’Asterisk, sans connaissances très approfondies. Nous creuserons les services dans les prochains articles sur cette thématique.

Posté par: Alexandre Chauvin-Hameau, le 20/02/2006
Trackback | Popularité: 42%
marqué , , , et
AddThis Social Bookmark Button
UselessNothing newInformativeLearned a lotAmazingly helpful (3 votes, average: 2.67 out of 5)
Loading ... Loading ...

Voir aussi

Et pourquoi pas

© 2008 Panoramisk | Creative Commons License wordpress logo