Asterisk IAX

De NCad Wiki
Aller à la navigation Aller à la recherche

.:[ Asterisk IPBX ]:.

Installation >> Utiliser un forfait SIP >> MySQL >> Boîte Vocale >> Synthax
Inter-Asterisk eXchange | MOH Musique d'Attente

Cet {{{1}}} est en cours de rédaction.

Présentation

Le protocol IAX

IAX est un protocole de communication propre à l'échange de données entre plusieurs serveurs Asterisk.

Fonctionnement

Dans une architecture composée d'un seul serveur Asterisk, tous les postes sont enregistrés sur ce même serveur et peuvent se joindre entre eux. Si un second serveur est déployé, les postes du serveur A ne pourront pas joindre les poste du serveur B car ils sont enregistrés sur un serveur différent. Dans ce cas, il faut établir deux truncks : le premier du server A vers le serveur B et le second du serveur B vers le serveur A. Ainsi, les deux serveur pourront s'échanger les appels. Pour mettre en place un trunck inter-Asterisk, il faut utiliser le protocol IAX qui peut être géré dans le fichier de configuration /etc/asterisk/iax.conf.

Etude de cas

Cahier des charges

ASTERISK IAX.JPG

Configuration du serveur A

Pour être acheminé du serveur A au serveur B et réciproquement, les serveurs doivent disposer :

  • d'un compte trunck pour chacun des serveurs;
  • d'une ligne register pour s'authentifier sur le serveur.

Création du compte trunck pour la connexion du serveur A

Ce compte va permettre au serveur B d'acheminer les appels à destination du serveur A. La ligne register permet d'établir le compte trunck avec le serveur B qui va être crée par la suite. Ainsi le serveur B autorisera la serveur A à transmettre également ses appels.

[general]
autokill=yes
register => servera:password@192.168.104.112

[serverb] ; compte trunck
type=friend
host=dynamic
trunk=yes
secret=password
context=planinterne
deny=0.0.0.0/0.0.0.0
permit=192.168.104.112/255.255.255.255

Adaptation du dialplan

[general]
static=yes
writeprotect=no
autofallthrough=yes
clearglobalvars=no
priorityjumping=no
language=fr

[globals]
CONSOLE=Console/dsp
IAXINFO=servera
TRUNK=Zap/g2
TRUNKMSD=1

[telephone] ; contexte des postes internes
include => planinterne
include => planserverb
[planinterne]
; appels internes
exten => _7XXX,1,Answer()
exten => _7XXX,n,Dial(SIP/${EXTEN})
exten => _7XXX,n,Hangup()

[planserverb]
; appels sur le serveur b
exten => _2XXX,1,Answer()
exten => _2XXX,n,Dial(IAX2/serverb/${EXTEN})
exten => _2XXX,n,Hangup()

On crée deux nouveaux contextes :

  • telephone : qui sera affecté aux postes téléphoniques depuis le fichier /etc/sip.conf et qui regroupe les contextes [planinterne] et [planserverb];
  • planservb : transfert les appels dont le numéro commence par 2 suivit de 4 chiffre au serveur b. Ceci correspond au plan de numérotation interne du serveur b.

Configuration du serveur B

Création du compte trunck pour la connexion du serveur B

[general]
autokill=yes
register => serverb:password@192.168.104.146

[servera] ; compte trunck
type=friend
host=dynamic
trunk=yes
secret=password
context=planinterne
deny=0.0.0.0/0.0.0.0
permit=192.168.104.146/255.255.255.255

Dialplan du serveur B

[general]
static=yes
writeprotect=no
autofallthrough=yes
clearglobalvars=no
priorityjumping=no
language=fr

[globals]
CONSOLE=Console/dsp
IAXINFO=serverb
TRUNK=Zap/g2
TRUNKMSD=1

[telephone] ; contexte des postes internes
include => planinterne
include => planservera

[planinterne]
; appels internes
exten => _2XXX,1,Answer()
exten => _2XXX,n,Dial(SIP/${EXTEN})
exten => _2XXX,n,Hangup()

[planservera]
; appels sur le serveur a
exten => _7XXX,1,Answer()
exten => _7XXX,n,Dial(IAX2/servera/${EXTEN})
exten => _7XXX,n,Hangup()