Enlazar dos centralitas Asterisk mediante PJSIP en un entorno seguro, como una VPN sin NAT, es una solución robusta para interconectar sedes o sistemas distribuidos. Este artículo te guiará paso a paso, desde la conceptualización hasta la implementación, utilizando ejemplos prácticos y recomendaciones para un funcionamiento óptimo.
Imagina dos oficinas, cada una con su propia centralita Asterisk, conectadas a través de una VPN punto a punto o de sitio a sitio. Al no existir NAT, ambas centralitas pueden comunicarse directamente usando sus direcciones IP privadas asignadas por la VPN, lo que simplifica la configuración y elimina problemas habituales de señalización y audio.
/etc/asterisk/pjsip.conf
y /etc/asterisk/extensions.conf
.
Define el transporte UDP (o TCP/TLS si prefieres mayor seguridad) en pjsip.conf
para que ambas centralitas escuchen en la interfaz de la VPN.
[transport-vpn]
type=transport
protocol=udp
bind=0.0.0.0:5060
Si deseas usar TLS para cifrado, ajusta el bloque:
[transport-vpn-tls]
type=transport
protocol=tls
bind=0.0.0.0:5061
method=tlsv1_2
Cada centralita debe tener configurado un endpoint que apunte a la otra. Usando autenticación por IP (permitido en entornos VPN confiables), la configuración es sencilla y segura.
[centralitaB-aor]
type=aor
contact=sip:10.10.10.2:5060
[centralitaB-endpoint]
type=endpoint
transport=transport-vpn
context=from-centralitaB
disallow=all
allow=alaw,ulaw
aors=centralitaB-aor
direct_media=no
[centralitaB-identify]
type=identify
endpoint=centralitaB-endpoint
match=10.10.10.2
[centralitaA-aor]
type=aor
contact=sip:10.10.10.1:5060
[centralitaA-endpoint]
type=endpoint
transport=transport-vpn
context=from-centralitaA
disallow=all
allow=alaw,ulaw
aors=centralitaA-aor
direct_media=no
[centralitaA-identify]
type=identify
endpoint=centralitaA-endpoint
match=10.10.10.1
Nota: El parámetro direct_media=no
garantiza que el audio pase siempre por ambas centralitas, lo que puede facilitar la depuración y el control de las llamadas.
Ahora debes definir cómo se enrutan las llamadas entre las centralitas. Por ejemplo, puedes reservar un rango de extensiones para cada sede.
extensions.conf
):[from-internal]
exten => _2XXX,1,Dial(PJSIP/${EXTEN}@centralitaB-endpoint)
[from-centralitaB]
exten => _1XXX,1,Dial(PJSIP/${EXTEN},20)
En este ejemplo, las extensiones 2XXX se marcan hacia la centralita B, mientras que las 1XXX se atienden localmente.
[from-internal]
exten => _1XXX,1,Dial(PJSIP/${EXTEN}@centralitaA-endpoint)
[from-centralitaA]
exten => _2XXX,1,Dial(PJSIP/${EXTEN},20)
asterisk -rvvv
y comandos como pjsip show endpoints
para verificar el estado de los enlaces.El enlace de dos centralitas Asterisk usando PJSIP en una red VPN sin NAT es una solución eficiente, segura y flexible para entornos empresariales modernos. Aprovecha la potencia de Asterisk y la simplicidad de PJSIP para construir una infraestructura de comunicaciones sólida y preparada para el futuro.