TP 3 : RELIER DEUX SERVEURS TRIXBOX I INTRODUCTION Chaque site possède son plan de numérotation, dépendant d un identifiant, de la même manière qu une entreprise dispose généralement d un préfixe. Pour nous, chaque groupe d étudiants dispose d un identifiant nn, correspondant à son IPBX. Si nn=99 par exemple, les numéros sip composés sont par exemple 9901, 9902, 9903, etc... Un autre groupe utilise le préfixe 10 ; son plan de numérotation adresse donc les numéros SIP 1001, 1002, 1003, etc... Dans un premier temps nous mettrons en place un inter-2-sites : 2 groupes d étudiants travailleront ensemble. Autrement dit, dans l exemple précédent, depuis le site 99, on pourra appeler aussi bien le 990X qu un 100X et vice-versa. Voici l'avancement de vos travaux : Et nous voulons obtenir cela : En plus des matériels à paramétrer, il va falloir définir des "Trunk" sous Trixbox pour permettre aux deux serveurs Trixbox de communiquer. 1
Dans ce TP nous mettons en place une liaison «inter-sites». Le nom donné à cette liaison 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 : ZAP : Protocole pour les interfaces analogiques Digium (FXO & FXS). IAX2 : (Inter-Asterisk exchange) Protocole Internet supporté que sur Asterisk. SIP : (Session Initiation Protocol) Protocole Internet standard ouvert. ENUM : Protocole de routage Internet utilisant un numéro de téléphone comme clé de recherche afin de trouver la manière de joindre un contact. DUNDi : Protocole de routage Internet offrant des services de répertoire similaire à ce qui est offert par ENUM. Personnalisé : Permet d interfacer des protocoles spécifiques. Nous utiliserons le protocole IAX afin de relier les deux systèmes Asterisk. Ce 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 dans IAX2, le 2 représente la deuxième version du protocole IAX. II MODIFICATION DE LA CONFIGURATION II.1 DÉFINIR LE TRUNK DANS PBX SETTINGS Alors, que faut-il en termes 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. Pour le trunk, dans la partie peer, on entre ici les paramètres que l'autre système s'attend à recevoir. Son adresse pour le trouver, son type (ici peer). On donne aussi le "username" et mot de passe (secret) nécessaire pour s'authentification auprès de lui. Ici nous n'avons pas besoin de préciser les codecs à utiliser, car les deux serveurs Trixbox sont installés de la même manière. 2
Dans la partie user, on donne les paramètres qui permettront d'authentifier l'autre système : le user et le "secret" attendus en entrée et surtout le "dial-plan" à appliquer, c'est à dire la suite des actions à engager lorsqu'un tel appel se produit. Dans la partie registration, on rajoute sur le serveur du site 1, l'utilisateur du site2 pour autoriser les appels entrants. Une route va permettre de diriger un appel sortant vers une destination particulière, en fonction du numéro composé ("dial pattern"). Par exemple ici, on crée une route qui redirige l appel vers le trunk "site1site2" si le numéro appelé est préfixé d un 1 suivi de trois chiffres (d'où l'intérêt d'avoir fait commencer les numéros de chaque site par un préfixe). A ce stade, le serveur sera capable d appeler des appareils externes suivant les "trunks définis". On définit un "trunk" par liaison. Ces manipulations sont à réaliser sur les deux serveurs Trixbox". 3
II.2 VÉRIFICATION DE LA MISE EN PLACE DU TRUNK II.3 OBSERVATION DU CONTENU DU FICHIER "EXTENSIONS-ADDITIONNAL.CONF" [from-trunk-iax2-site1site2] include => from-trunk-iax2-site1site2-custom exten => _.,1,Set(GROUP()=OUT_2) exten => _.,n,goto(from-trunk,${exten},1) [outrt-002-site1verssite2] include => outrt-002-site1verssite2-custom exten => _1xxx,1,Macro(user-callerid,SKIPTTL,) exten => _1xxx,n,Set(_NODEST=) exten => _1xxx,n,Macro(record-enable,${AMPUSER},OUT,) exten => _1xxx,n,Macro(dialout-trunk,2,${EXTEN},,) exten => _1xxx,n,Macro(outisbusy,) ; end of [outrt-002-site1verssite2] Trixbox fait appel aux définitions déjà présentes dans son fichier de configuration pour gérer ce nouveau "trunk". II.4 OBSERVATION DU CONTENU DU FICHIER IAX_ADDITIONNAL.CONF [site1] context=from-trunk secret=1234 username=site2 type=user fromuser=site2 [site1site2] host=172.31.0.200 username=site1 secret=1234 type=peer trunk=yes qualify=yes 4
II.5 TESTER QUE LE TRUNK FONCTIONNE Vérifiez après redémarrage des services ASTERISK de part et d autre que vous pouvez appeler un téléphone du site XX depuis le site NN. Au besoin, lancez la console (asterisk -rvvvv) pour visualiser les messages de bon ou mauvais fonctionnement. III QU'EST-CE QU'UN DIAL PLAN Dans la configuration d Asterisk, un dial-plan représente la suite d actions qui se déroule pendant un appel. Toute la configuration d Asterisk passe par ces dial-plans, même si l interface Trixbox les cache à l utilisateur. Pour obtenir des fonctions plus avancées, on doit passer par la création de dialplans personnalisés. Au lieu de simplement faire sonner un appareil, on peut définir des actions particulières (par exemple, lire un message, demander une entrée à l utilisateur ). L'exemple ci-dessous définit un dial-plan personnalisé pour les appels entrants, dans l onglet "Inbound Routes" (qui ne concerne que les appels venant de l extérieur, et pas les connexions SIP à SIP) : [custom-mes] exten => _4121550.,1,Answer 1. Décrocher l appel exten => _4121550.,2,Wait(1) 2. Attendre une seconde exten => _4121550.,3,Set(fromext=${EXTEN:4}) 3. Mémoriser le numéro appelé dans la variable fromext (moins les 4 premiers chiffres) exten => _4121550.,4,SayDigits(${fromext}) 4. Dire le numéro exten => _4121550.,5,Playback(fpm-world-mix) 5. Jouer une musique exten => _4121550.,6,Hangup 6. Raccrocher l appel Chaque ligne du plan commence par l extension concernée. Ici on utilise "_4121550.", qui matche tous les numéros de la forme 4121550*. Le "_" au début de l extension signifie qu elle doit être interprétée comme une expression régulière. Les expressions utilisables sont : X N importe quel chiffre de 0 à 9 Z N importe quel chiffre de 1 à 9 N N importe quel chiffre de 2 à 9 [1237-9] N importe lequel des caractères entre crochets (ici 1,2,3,7,8,9). N importe quelle suite (un ou plus) de caractères! N importe quelle suite (zéro ou plus) de caractères, mais interprété dès que l expression correspond. On donne ensuite pour chaque commande sa priorité d exécution, et enfin la commande elle-même. 5