Recherche


imprimer pdf Français
Créer un tunnel SIP

Introduction


Un tunnel SIP représente un lien permettant d'interconnecter votre serveur Elastix avec d'autres systèmes téléphoniques ou un opérateur SIP.
Grâce au tunnel SIP (trunk SIP), on peut joindre une ligne téléphonique externe.Il est également possible d'interconnecter deux serveurs Elastix en utilisant le protocole IAX.

Tout d'abord, il faut accéder à l'onglet PBX puis cliquer sur "trunk"



Configuration générale


Dans les paramètres généraux, il faut attribuer un nom puis un numéro principal à votre tunnel SIP.
On peut également donner le nombre maximum de canaux autorisés, les règles de sortie pour définir les formats des numéros externes.



Règles de numérotation


Voici une liste de quelques règles de numérotation à appliquer lors de la création d'un plan de numérotation.

X Digit de 0 à 9
Z Digit de 1 à 9
N Digit de 2 à 9
[1237-9] Digit ou lettre entre crochets
[a-z] Lettre minuscules
[A-Z] Lettre majuscules
. un ou plusieurs caractères
! zéro ou plusieurs caractères



Par exemple, dans la configuration du tunnel SIP ci-dessus, deux préfixes sont ajoutés, "049", pour l'Allemagne et "033" pour la France. Le format qui suit le préfixe est compatible avec tout type de numéro "X."

Paramètres de sortie


L'étape suivante consiste à définir des règles nécessaires à l'établissement de la communication si vous souhaitez communiquer vers l'extérieur comme avec un autre serveur Elastix ou le réseau téléphonique classique.
Pour établir un tunnel SIP entre votre serveur Elastix et OVH, les paramètres les plus importants sont représentés ci-dessous:



Pour compléter votre configuration, il est nécessaire d'ajouter certains paramètres.
Ci-dessous, une liste des différents champs à enregistrer dans la section "PEER Details":

disallow=all
  • Désactive tout les codecs audio. Paramètre utilisé pour ensuite accepter les codecs audio suivant un certain ordre.

host=sip.ovh.net
  • le nom d'hôte de connexion pour le tunnel SIP.

username=XXXXXXXXXX
  • le nom d'utilisateur du tunnel SIP - correspond au numéro principal du tunnel SIP.

secret=*****
  • le mot de passe du tunnel SIP.

type=peer
  • le type de connexion - ici "peer" permet d'envoyer les appels et d'authentifier les utilisateurs SIP.

allow=alaw&ulaw
  • le type de codecs autorisés pour le tunnel SIP - ici alaw&ulaw correspondent aux codecs G.711 et G.729.

qualify=yes
  • Détermine si le tunnel SIP est accessible.

dtmfmode=auto
  • Combinaisons de fréquences utilisées pour la sélection des numéros.

canreinvite=no
  • Option permettant de faire transiter un appel directement vers un poste de destination ou de le faire passer par le serveur Elastix.

fromdomain=sip.ovh.net
  • Paramètre utilisé pour envoyer le nom d'hôte dans l'en-tête d'un datagramme SIP au destinataire.

nat=yes
  • Paramètre NAT configuré automatiquement.

maxexpiry=3600
  • Durée maximale pour un enregistrement sur le tunnel SIP (secondes).

insecure=invite,port
  • Permet de ne pas prendre en compte le port et accepte les requêtes du type "INVITE" sans authentification.




Il est conseillé de ne pas ajouter les paramètres "insecure=invite" ou "insecure=port" lorsque vous définissez un compte utilisateur SIP dynamique. Cela à pour conséquence de désactiver la demande de mot de passe pour le compte SIP.


fromuser=049X.
  • Spécifie l'utilisateur à ajouter en en-tête des datagrammes SIP. Correspond au préfixe de sortie (0) suivi du code pays (049).

restrictcid=no
  • Cache l'identifiant de l'appelant (CID)

amaflags=default
  • Définit la catégorie pour les rapports d'appels (CDR-Call Detail Recording).Valeurs possibles: default, omit, billing, documentation.

Paramètres d'entrée


Cette concerne les paramètres d'entrée nécessaires au tunnel SIP pour la réception des appels provenant de l'extérieur.



secret=*****
  • le mot de passe du tunnel SIP.

type=user
  • Paramètre SIP qui transmet les appels par le module Asterisk (Téléphone qui passe uniquement des appels). Les utilisateurs s'authentifient pour accéder aux services liés au contexte d'appel.

context=from-trunk
  • Le contexte de l'appel. Ici, le paramètres "from-trunk" défini les règles dans le plan de numérotation permettant de réceptionner des appels provenant de l'extérieur.

qualify=no
  • Pour les paramètres d'entrée, le tunnel SIP n'est pas visible.

host=dynamic
  • Valeurs possibles "Dynamic" ou renseigner l'adresse IP de l'hôte.

Chaîne d'enregistrement


Pour terminer la configuration du tunnel SIP, il faut entrer la chaîne d'enregistrement du tunnel SIP qui contient le nom d'utilisateur, le mot de passe suivie du nom d'hôte.

Format de la chaîne : numero_tunnel_sip:mot_de_passe@sip.trunk.ovh.net/numero_tunnel_sip



On peut vérifier à la fin si la connexion avec le tunnel SIP est effectivement établie. Pour le voir, on utilise l'outil asterisk-cli présent dans l'interface d'Elastix en tapant la commande "sip show registry". Cette commande renvoie l'état du tunnel SIP,les valeurs possibles sont "Registred", "no authentication" et "rejected".



Une deuxième commande "sip show peers" permet également de donner des détails concernant le tunnel SIP.



Détail d'un appel



root@nsXXXXXX ~# asterisk -rvvvv
Asterisk 11.5.0, Copyright (C) 1999 - 2012 Digium, Inc. and others.
Created by Mark Spencer
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Connected to Asterisk 11.5.0 currently running on nsXXXXXX (pid = 25133)

1....


— Executing 049681XXXXXX@from-internal:1 Macro("SIP/2000-00000006", "user-callerid,SKIPTTL,") in new stack
— Executing s@macro-user-callerid:1 Set("SIP/2000-00000006", "AMPUSER=2000") in new stack
— Executing s@macro-user-callerid:2 GotoIf("SIP/2000-00000006", "0?report") in new stack
— Executing s@macro-user-callerid:3 ExecIf("SIP/2000-00000006", "1?Set(REALCALLERIDNUM=2000)") in new stack
— Executing s@macro-user-callerid:4 Set("SIP/2000-00000006", "AMPUSER=2000") in new stack
— Executing s@macro-user-callerid:5 Set("SIP/2000-00000006", "AMPUSERCIDNAME=SFLPhone") in new stack
— Executing s@macro-user-callerid:6 GotoIf("SIP/2000-00000006", "0?report") in new stack
— Executing s@macro-user-callerid:7 Set("SIP/2000-00000006", "AMPUSERCID=2000") in new stack
— Executing s@macro-user-callerid:8 Set("SIP/2000-00000006", "CALLERID(all)="SFLPhone" <2000>") in new stack
— Executing s@macro-user-callerid:9 ExecIf("SIP/2000-00000006", "1?Set(CHANNEL(language)=fr)") in new stack
— Executing s@macro-user-callerid:10 GotoIf("SIP/2000-00000006", "1?continue") in new stack
— Goto (macro-user-callerid,s,19)
— Executing s@macro-user-callerid:19 Set("SIP/2000-00000006", "CALLERID(number)=2000") in new stack
— Executing s@macro-user-callerid:20 Set("SIP/2000-00000006", "CALLERID(name)=SFLPhone") in new stack
— Executing s@macro-user-callerid:21 NoOp("SIP/2000-00000006", "Using CallerID "SFLPhone" <2000>") in new stack
— Executing 049681XXXXXX@from-internal:2 NoOp("SIP/2000-00000006", "Calling Out Route: Elastix-out") in new stack
— Executing 049681XXXXXX@from-internal:3 Set("SIP/2000-00000006", "MOHCLASS=default") in new stack
— Executing 049681XXXXXX@from-internal:4 Set("SIP/2000-00000006", "_NODEST=") in new stack
— Executing 049681XXXXXX@from-internal:5 Macro("SIP/2000-00000006", "record-enable,2000,OUT,") in new stack
— Executing s@macro-record-enable:1 GotoIf("SIP/2000-00000006", "1?check") in new stack
— Goto (macro-record-enable,s,4)
— Executing s@macro-record-enable:4 ExecIf("SIP/2000-00000006", "0?MacroExit()") in new stack
— Executing s@macro-record-enable:5 GotoIf("SIP/2000-00000006", "0?Group:OUT") in new stack
— Goto (macro-record-enable,s,15)
— Executing s@macro-record-enable:15 GotoIf("SIP/2000-00000006", "0?IN") in new stack
— Executing s@macro-record-enable:16 ExecIf("SIP/2000-00000006", "1?MacroExit()") in new stack
— Executing 049681XXXXXX@from-internal:6 Macro("SIP/2000-00000006", "dialout-trunk,2,681906730,365087123654") in new stack
— Executing s@macro-dialout-trunk:1 Set("SIP/2000-00000006", "DIAL_TRUNK=2") in new stack
— Executing s@macro-dialout-trunk:2 GosubIf("SIP/2000-00000006", "1?sub-pincheck,s,1") in new stack
— Executing s@sub-pincheck:1 Authenticate("SIP/2000-00000006", "365087123654,") in new stack


2....


— Executing s@sub-pincheck:2 ResetCDR("SIP/2000-00000006", "") in new stack
— Executing s@sub-pincheck:3 Return("SIP/2000-00000006", "") in new stack
— Executing s@macro-dialout-trunk:3 GotoIf("SIP/2000-00000006", "0?disabletrunk,1") in new stack
— Executing s@macro-dialout-trunk:4 Set("SIP/2000-00000006", "DIAL_NUMBER=681XXXXXX") in new stack
— Executing s@macro-dialout-trunk:5 Set("SIP/2000-00000006", "DIAL_TRUNK_OPTIONS=tr") in new stack
— Executing s@macro-dialout-trunk:6 Set("SIP/2000-00000006", "OUTBOUND_GROUP=OUT_2") in new stack
— Executing s@macro-dialout-trunk:7 GotoIf("SIP/2000-00000006", "1?nomax") in new stack
— Goto (macro-dialout-trunk,s,9)
— Executing s@macro-dialout-trunk:9 GotoIf("SIP/2000-00000006", "0?skipoutcid") in new stack
— Executing s@macro-dialout-trunk:10 Set("SIP/2000-00000006", "DIAL_TRUNK_OPTIONS=") in new stack
— Executing s@macro-dialout-trunk:11 Macro("SIP/2000-00000006", "outbound-callerid,2") in new stack
— Executing s@macro-outbound-callerid:1 ExecIf("SIP/2000-00000006", "0?Set(CALLERPRES()=)") in new stack
— Executing s@macro-outbound-callerid:2 ExecIf("SIP/2000-00000006", "0?Set(REALCALLERIDNUM=2000)") in new stack
— Executing s@macro-outbound-callerid:3 GotoIf("SIP/2000-00000006", "1?normcid") in new stack
— Goto (macro-outbound-callerid,s,6)
— Executing s@macro-outbound-callerid:6 Set("SIP/2000-00000006", "USEROUTCID=") in new stack
— Executing s@macro-outbound-callerid:7 Set("SIP/2000-00000006", "EMERGENCYCID=") in new stack
— Executing s@macro-outbound-callerid:8 Set("SIP/2000-00000006", "TRUNKOUTCID=0049XXXXXXXXXXX") in new stack
— Executing s@macro-outbound-callerid:9 GotoIf("SIP/2000-00000006", "1?trunkcid") in new stack
— Goto (macro-outbound-callerid,s,12)
— Executing s@macro-outbound-callerid:12 ExecIf("SIP/2000-00000006", "1?Set(CALLERID(all)=0049XXXXXXXXXXX)") in new stack
— Executing s@macro-outbound-callerid:13 ExecIf("SIP/2000-00000006", "0?Set(CALLERID(all)=)") in new stack
— Executing s@macro-outbound-callerid:14 ExecIf("SIP/2000-00000006", "0?Set(CALLERID(all)=)") in new stack
— Executing s@macro-outbound-callerid:15 ExecIf("SIP/2000-00000006", "0?Set(CALLERPRES()=prohib_passed_screen)") in new stack
— Executing s@macro-dialout-trunk:12 GosubIf("SIP/2000-00000006", "1?sub-flp-2,s,1") in new stack
— Executing s@sub-flp-2:1 ExecIf("SIP/2000-00000006", "0?Set(TARGET_FLP_2=906730)") in new stack
— Executing s@sub-flp-2:2 GotoIf("SIP/2000-00000006", "0?match") in new stack
— Executing s@sub-flp-2:3 Return("SIP/2000-00000006", "") in new stack
— Executing s@macro-dialout-trunk:13 Set("SIP/2000-00000006", "OUTNUM=0681XXXXXX") in new stack
— Executing s@macro-dialout-trunk:14 Set("SIP/2000-00000006", "custom=SIP/Elastix-OVH-OUT") in new stack
— Executing s@macro-dialout-trunk:15 ExecIf("SIP/2000-00000006", "0?Set(DIAL_TRUNK_OPTIONS=M(setmusic^default))") in new stack
— Executing s@macro-dialout-trunk:16 Macro("SIP/2000-00000006", "dialout-trunk-predial-hook,") in new stack
— Executing s@macro-dialout-trunk-predial-hook:1 MacroExit("SIP/2000-00000006", "") in new stack
— Executing s@macro-dialout-trunk:17 GotoIf("SIP/2000-00000006", "0?bypass,1") in new stack
— Executing s@macro-dialout-trunk:18 GotoIf("SIP/2000-00000006", "0?customtrunk") in new stack
— Executing s@macro-dialout-trunk:19 Dial("SIP/2000-00000006", "SIP/Elastix-OVH-OUT/0681XXXXXX,300,") in new stack
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
— Called SIP/Elastix-OVH-OUT/0681XXXXXX


Ce message représente la trace d'un appel sortant dans l'interface en ligne de commande d'Asterisk.

  • La premier section du message correspond à un l'identification des différents paramètres de l'extension <2000> qui emprunte le tunnel SIP "Elastix-OVH-OUT".

  • La deuxième section du message correspond à la vérification du numéro entré par rapport aux règles de numérotation crées pour le tunnel SIP. Si le numéro correspond aux règles de numérotation alors une session avec le tunnel sera établie.