Hola,

Vamos a repasar cómo podemos interconectar dos servidores Asterisk usando el protocolo IAX2. Para este laboratorio hemos usado dos servidores con las siguientes características.

Server A.
Asterisk versión 1.6.2
IP: 192.168.1.210
Host: pbx.fware.pro

Server B.
Asterisk version 1.4.27
IP: 192.168.1.220
Host: go.fware.pro

La configuración para Server A en /etc/asterisk/iax.conf debe ser la siguiente:

[sourcecode language=»text»]
register => go:123456@192.168.1.220

[pbx]
type=friend
host=dynamic
secret=123456
trunk=yes
context=to-external
deny=0.0.0.0/0.0.0.0
permit=192.168.1.0/255.255.255.0
disallow=all
allow=alaw
allow=ulaw
[/sourcecode]
La configuración para el Server B en /etc/asterisk/iax.conf debe ser la siguiente:

[sourcecode language=»text»]
register => pbx:123456@192.168.1.210

[go]
type=friend
host=dynamic
secret=123456
trunk=yes
context=default
deny=0.0.0.0/0.0.0.0
permit=192.168.1.0/255.255.255.0
disallow=all
allow=ulaw
allow=alaw
[/sourcecode]

Después de grabar las configuraciones debemos recargar el entorno de iax2 en cada uno de los Server.

Server A.
[sourcecode language=»text»]
[root@pbx ~]# asterisk –rvvv
pbx*CLI> iax2 reload
[/sourcecode]

Server B.
[sourcecode language=»text»]
[root@go ~]# asterisk –rvvv
go*CLI> iax2 reload
[/sourcecode]

Luego hay que revisar en las dos consolas de asterisk si los equipos se han registrado exitosamente.

Server A.
[sourcecode language=»text»]
pbx*CLI> iax2 show registry
Host dnsmgr Username Perceived Refresh State
192.168.1.220:4569 N go 192.168.1.210:4569 60 Registered
1 IAX2 registrations.
pbx*CLI>
[/sourcecode]

Server B.
[sourcecode language=»text»]
go*CLI> iax2 show registry
Host dnsmgr Username Perceived Refresh State
192.168.1.210:4569 N pbx 192.168.1.220:4569 60 Registered
go*CLI>
[/sourcecode]

Luego que los dos servidores estén interconectados, hay que configurar el archivo /etc/asterisk/extensions.conf dependiendo del flujo que se le desee dar a las llamadas. Teniendo en cuenta esto el contexto que le demos a la extensión es muy importante ya que el servidor asterisk recibirá las llamadas del trunk y las va tramitar con las reglas del contexto mencionado. Para entender mejor el tema vamos a exponer nuestro caso.

Queremos que el Server B tenga al Server A como Carrier hacia la PSTN, y que todas las llamadas salientes estén precedidas por el número 9, es decir que para poder llamar a la PSTN los usuarios del Server B deben marcar 9XXXXXXX donde las XXXXXXX indican el número a marcar en la PSTN. El contexto en Server A para las llamadas externas se llama to-external esto debe quedar registrado en la extensión que creamos en el /etc/asterisk/iax.conf de Server A.

Con lo cual debemos incluir en el /etc/asterisk/extensions.conf de Server B la siguiente sentencia.

[sourcecode language=»text»]
exten => _9.,1,Dial(IAX2/go/${EXTEN:1},90,tr)
exten => _9.,n,Hangup()
[/sourcecode]

_9. Indica que va levantar el trunk para todos los números que precedan el número 9.
IAX2/go lo envía a nuestro trunk en Server A.
/${EXTEN:1} es una variable que lee lo que marcas en el teléfono que será lo que envías por el trunk, el :1 quiere decir que le quitara el 9 que precede el número para que al momento de llegar al contexto de Server A lo puedo transferir hacia la PSTN sin problema.