La téléphonie Internet libre basée sur Asterisk par Sylvain Thérien



« | »

Trunk IAX entre deux systèmes Asterisk

Si vous avez besoin de relier deux systèmes Asterisk ensemble, vous aurez besoin d’établir une passerelle entre les systèmes afin qu’ils puissent échanger adéquatement. Le nom donné à cette passerelle en terminologie téléphonique s’appelle un « Trunk ». Les fonctions principales du Trunk sont de fournir les services de signalisation et de transport de la voix. Plusieurs protocoles différents existent pour le « trunking » entre les systèmes téléphoniques. Certains sont des protocoles propriétaires et d’autres sont ouverts. Entre autres, au niveau d’Asterisk, les protocoles suivants sont supportés :

Dans cet article, j’utiliserai le protocole IAX afin de relier les deux systèmes Asterisk. La raison principale étant que IAX est plus simple à déployer lorsque l’on utilise des réseaux utilisant le « NATing ». De plus, le protocole, contrairement au protocole SIP, n’utilise qu’un seul port de communication en UDP, soit le port 4569 pour la signalisation et le transport de la voix. Il est à noter que IAX2, le 2 représentant la deuxième version du protocole IAX, est un protocole ayant été développé par Digium.

Trunk

Alors, que faut-il en terme de composant pour relier deux systèmes ensemble. Premièrement, on doit définir un Trunk sur chacun des systèmes afin qu’ils puissent s’authentifier et échanger. Deuxièmement, pour la sortie des appels d’un système vers un autre, on doit définir au minimum une route de sortie afin que les appels puissent passer d’un système à l’autre via le plan d’acheminement d ‘appel et de numérotation. Optionnellement, si l’on désire unifier les plans de numérotation de chacun des systèmes, on devra créer du code ou définir des « Miscellaneous Destinations » afin que l’on puisse transférer un appel vers l’autre système.

Allons-y pour la création du Trunk. Via FreePBX, dans le composant « Trunk », faites la création d’un Trunk de type IAX, puis suivez les étapes ci-dessous pour l’entrée des paramètres :

Dans la section « Paramètres de Sortie », nommez le Trunk en lui donnant un nom unique qui permettra d’identifier vers quel système le Trunk est dirigé. Mettre le CID Sortant au numéro CID identifiant votre numéro de téléphone. Limitez le nombre de canaux de sortie si désiré.

Nom du Trunk: IAX56
CID Sortant : 5145551212
Nombre maximal de canaux : 2

Dans la section « Détails du PEER », entrez les informations identifiant l’autre système. C’est ici que l’on spécifie ce que l’autre système s’attend de recevoir en terme de paramètres. Dans le cas présent, l’autre système a l’adresse IP 192.168.11.56.

host=192.168.11.56
qualify=yes
secret=password
trunk=yes
type=peer
username=iax2

Vous pouvez ajouter des lignes de directives à celles listées par défaut ci-dessus, quoique celles-ci fonctionnent bien. Attention, car l’ordre est important. Par exemple, si vous utilisez les directives « allow/deny », assurez-vous que « deny » vient en premier. N’oubliez pas de mettre un mot de passe sécuritaire via l’attribut de la directive secret.

Dans la section « Paramètres d’Entrée », entrez les informations qui vous permettront d’authentifier l’autre système afin qu’il puisse communiquer avec ce système-ci. C’est ici que l’on spécifie ce que l’autre système devra fournir en terme de paramètres.

Contexte Utilisateur: IAX2

C’est le plus souvent, le nom ou numéro du compte que le système s’attend de recevoir. Ce contexte sera utilisé pour définir les détails de l’utilisateur ci-dessous.

Détails de l’utilisateur:

context=from-internal
secret=password
type=user

Vous pouvez ajouter des lignes de directives à celles listées par défaut ci-dessus, quoique celles-ci fonctionnent bien. Attention, car l’ordre est important. Par exemple, si vous utilisez les directives « allow/deny », assurez-vous que « deny » vient en premier. N’oubliez pas de mettre un mot de passe sécuritaire via l’attribut de la directive secret.

Faire de même sur votre autre système Asterisk, mais en prenant soin de changer l’adresse IP, par exemple host=192.168.5.22. Pour le nom du Trunk, spécifiez par exemple IAX22

Modification de sécurité IAX

Si vous utilisez une version d’Asterisk plus récente que 1.4.22, alors vous devez ajouter ces deux lignes dans le fichier

/etc/asterisk/iax_general_custon.conf

calltokenoptional = 0.0.0.0/0.0.0.0
maxcallnumbers = 16382

Ceci permettra d’accepter les appels sur le Trunk. Dans le cas contraire, vous obtiendrez un message d’erreur « Toutes les lignes sont occupées » lors des appels via ce Trunk.

Routes Sortantes

Pour acheminer les appels d’un système à l’autre, il faut s’assurer que le plan d’acheminement d’appel corresponde aux numéros de chaque système. On doit alors ajouter une route sortante comme celle-ci -dessous via l’interface FreePBX.

Par exemple, si notre premier serveur n’a aucun moyen d’acheminer les appels vers l’extérieur, on pourrait diriger tous les appels à sept et dix chiffres vers le deuxième système afin que ce dernier les achemine vers l’extérieur. La configuration ressemblerait alors à ceci.

Nom de la Route: Local
Masque de Numérotation: NXXNXXXXXX & NXXXXXX
Séquence Trunk: IAX2/IAX56

Autre exemple, on veut diriger les appels correspondant aux postes 3000 à 3009 vers le deuxième système afin que celui-ci les achemine aux extensions de son propre plan de numérotation. La configuration alors ressemblerait à ceci.

Nom de la Route: AutreSysteme
Masque de Numérotation: 300X
Séquence Trunk: IAX2/IAX56

On aurait pu aussi ajouter un préfixe comme 8 ou 9 pour passer les appels à l’autre système pour tout poste d’extension à quatre chiffres. Notez que le chiffre avant la barre verticale dans l’expression ne sera pas acheminé au deuxième système, seulement ce qui suit la barre verticale sera transmis. La configuration ressemblerait maintenant à ceci.

Nom de la Route: AutreSystemeAvecPrefixe
Masque de Numérotation: 8|XXXX
Séquence Trunk: IAX2/IAX56

N’oubliez pas d’appliquer une configuration similaire sur votre deuxième système.

Extension du plan de numérotation

Avec ce que nous venons de voir, il est possible de joindre l’autre système téléphonique à la condition que l’on compose à partir d’un poste étant directement relié à l’un des deux systèmes. Je m’explique, si par exemple vous composez de votre téléphone portable, alors la Réponse Vocale Interactive sera votre porte d’entrée au système. Si vous n’utilisez pas la fonction DISA qui vous procure un accès interne au système, comment faites-vous pour joindre le deuxième système ? Bien ça peut paraître simple, mais le plan de numérotation de votre premier système ne connaît pas les numéros d’extensions du deuxième système. Alors voici deux façons parmi tant d’autres de faire.

Méthode 1

Pour joindre à partir du premier système téléphonique le poste 1234 se trouvant sur le deuxième système, définir une « Miscellaneous Destinations » avec les paramètres suivants :

Description : VersExtension1234
Dial : 1234

En supposant que l’on ait pris soin d’ajouter comme nous l’avons vu ci-haut une route sortante pour l’acheminement de cet appel vers l’autre système, l’appel se rendra comme prévu au poste 1234. Si vous voulez que cet appel puisse être accessible de la RVI, alors vous n’avez qu’à spécifier la « Miscellaneous Destinations » voulue pour le choix de menu correspondant.

Méthode 2

Tout comme dans la méthode précédente, pour joindre à partir du premier système téléphonique le poste 1234 se trouvant sur le deuxième système, éditez le fichier /etc/asterisk/extensions_custom.conf et ajoutez le code ci-dessous :

; VersExtension1234
[custom-versextension1234]
exten => s,1,Answer
exten => s,2,Dial(IAX2/IAX56/1234,20,trwW)
exten => s,3,Hangup()

Ensuite, via FreePBX, ajoutez via le composant que l’on trouve sous l’onglet « Outil », une « Destinations Personnalisées ». Les paramètres de la destination personnalisée sont les suivants :

Custom Destination : custom-versextension1234,s,1
Description : Transfer vers extension 1234

Poursuivez en définissant une « Miscellaneous Applications» avec les paramètres suivants :

Description : Vers Extension 1234
Feature code : 1234
Feature status : Enabled
Destination Personnalisées : Transfer vers extension 1234

Cette fois-ci, il n’est pas nécessaire d’ajouter une route sortante pour l’acheminement de cet appel vers l’autre système puisque la route en spécifiée dans le code de l’application, comme ceci :

Dial(IAX2/IAX56/1234,20,trwW)

Alors, l’appel se rendra comme prévu au poste 1234. Si vous voulez que cet appel puisse être accessible de la RVI, vous n’avez qu’à spécifier la « Miscellaneous Application» voulue pour le choix de menu correspondant.

pixelstats trackingpixel

Posted by on 13 juillet 2012.

Tags: asterisk, iax, trunk

Categories: Téléphonie

« | »




Articles récents


Pages



About La téléphonie Internet libre basée sur Asterisk par Sylvain Thérien

Laissez-moi me présenter, je suis Sylvain Thérien. Présentement à l’emploi d’une entreprise de télécommunication canadienne, je possède une solide expertise dans le domaine des technologies de l’information, des systèmes embarqués, de la téléphonie et surtout des systèmes de code source libre. À maintes reprises, d’un point de vue professionnel, j’ai animé des ateliers de formation, […]more →
WordPress SEO fine-tune by Meta SEO Pack from Poradnik Webmastera