« Asterisk IAX » : différence entre les versions
Ligne 87 : | Ligne 87 : | ||
bindaddr=0.0.0.0 | bindaddr=0.0.0.0 | ||
srvlookup=yes | srvlookup=yes | ||
[7001] | [7001] | ||
type=friend | type=friend | ||
Ligne 99 : | Ligne 99 : | ||
nat=yes | nat=yes | ||
host=dynamic | host=dynamic | ||
[7002] | [7002] | ||
type=friend | type=friend |
Version du 27 mars 2012 à 08:10
.:[ Asterisk IPBX ]:.
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
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.
Modification du fichier sip.conf
On change le contexte de chacun des postes pour qu'ils appartiennent au contexte [telephone] :
[general] bindport=5060 bindaddr=0.0.0.0 srvlookup=yes [7001] type=friend username=7001 secret=userpasswd callerid="Poste 1" <7001> host=dynamic context=telephone language=fr insecure=port nat=yes host=dynamic [7002] type=friend username=7002 secret=userpasswd callerid="Poste 2" <7002> host=dynamic context=telephone language=fr insecure=port nat=yes host=dynamic
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()