« Asterisk IAX » : différence entre les versions
Aucun résumé des modifications |
|||
(23 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
{{ Asterisk }} | {{ Asterisk }} | ||
== Présentation == | == Présentation == | ||
=== Le protocol IAX === | === Le protocol IAX === | ||
IAX est un protocole de communication propre à l'échange de données entre plusieurs serveurs | |||
Asterisk. | |||
=== Fonctionnement === | === 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 == | == Etude de cas == | ||
=== | === Maquette === | ||
[[Image:ASTERISK_IAX.JPG|center|Déploiement du protocole IAX entre deux serveurs Asterisk]] | |||
=== 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 | |||
{{Box Attention | objet=Les mots de passes utilisées doivent être identiques pour les deux serveurs aussi bien pour le compte trunck du serveur A vers B et réciproquement. }} | |||
==== 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 === | |||
Voici la configuration du serveur B. Cette dernière est calquée sur celle du serveur A. A l'exception du plan de numérotation. Les postes internes du serveur B disposeront d'un numéro composé de 4 chiffres mais débutant par 2 au lieux de 7 comme pour le serveur A. | |||
==== 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() | |||
==== Fichier sip.conf du serveur B ==== | |||
=== | [general] | ||
bindport=5060 | |||
bindaddr=0.0.0.0 | |||
srvlookup=yes | |||
[2001] | |||
type=friend | |||
username=2001 | |||
secret=userpasswd | |||
callerid="Poste 1" <2001> | |||
host=dynamic | |||
context=telephone | |||
language=fr | |||
insecure=port | |||
nat=yes | |||
host=dynamic | |||
[2002] | |||
type=friend | |||
username=2002 | |||
secret=userpasswd | |||
callerid="Poste 2" <2002> | |||
host=dynamic | |||
context=telephone | |||
language=fr | |||
insecure=port | |||
nat=yes | |||
host=dynamic | |||
[[Category:Asterisk]] |
Dernière version du 27 mars 2012 à 08:18
.:[ Asterisk IPBX ]:.
Inter-Asterisk eXchange | MOH Musique d'Attente
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
Maquette
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
|
Les mots de passes utilisées doivent être identiques pour les deux serveurs aussi bien pour le compte trunck du serveur A vers B et réciproquement. |
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
Voici la configuration du serveur B. Cette dernière est calquée sur celle du serveur A. A l'exception du plan de numérotation. Les postes internes du serveur B disposeront d'un numéro composé de 4 chiffres mais débutant par 2 au lieux de 7 comme pour le serveur A.
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()
Fichier sip.conf du serveur B
[general] bindport=5060 bindaddr=0.0.0.0 srvlookup=yes [2001] type=friend username=2001 secret=userpasswd callerid="Poste 1" <2001> host=dynamic context=telephone language=fr insecure=port nat=yes host=dynamic [2002] type=friend username=2002 secret=userpasswd callerid="Poste 2" <2002> host=dynamic context=telephone language=fr insecure=port nat=yes host=dynamic