Centralita Asterisk conectada a VoIP de Ya.com Total


En las últimas semanas he estado trasteando con el servidor Asterisk, y como tengo la línea de teléfono con ya.com mediante VoIP, he conectado ambos para poder hacer llamadas desde otros clientes SIP.

La configuración la he hecho en el router Buffalo WZR-HP-AG300H, al cual le he instalado la distribución OpenWrt. Este router es una auténtica maravilla, se lo recomiendo a todo el mundo y combinado con OpenWrt es una solución potentísima.

El router de ya.com tiene deshabilitado todo el tema de VoIP, firewall, NAT, etc. y está en modo bridge, por lo que la IP pública está asignada al router Buffalo. Este es un punto importante para la VoIP, que utiliza puertos dinámicos y debe conocer su IP pública. Como los amigos de ya.com tienen bloqueado el router, para poder ponerlo en modo bridge he tenido que hacer un downgrade del firmware a la versión 1.00.001

La configuración que he usado en Asterisk para conectar con ya.com se divide en dos partes. En sip.conf se configuran las conexiones SIP tanto a los proveedores como a los clientes (teléfonos). En extensions.conf se configura el plan de numeración (las extensiones y cómo manejar los números marcados). He dado de alta también al proveedor easyvoip para las llamadas a móviles e internacionales, que sale mucho más barato que ya.com. También he incluido un cliente SIP que uso desde mi teléfono Android para poder llamar como si estuviese en casa. Para el teléfono fijo he tenido que instalar un adaptado telefónico y lo he conectado con Asterisk con el usuario telefono1 y la contraseña definida en el fichero sip.conf, he elegido el modelo Cisco PAP2T.

En el router hay que abrir los puertos en el firewall, para SIP el 5060/UDP para RTP del 10000 al 20000 UDP y para IAX2 el 4569/UDP.

Como ya.com es un poco tiquismiquis con la configuración, he tenido que que poner la opción de useragent para que parezca que es el router SMC, además el host voipd.ya.com no resuelve, por lo que hay que poner las IPs 84.78.3.62 y 84.78.3.126 a mano en el fichero /etc/hosts.

He marcado con Xs mi número de teléfono y cambiado los passwords, si vais a usar esta configuración, ¡acordaros de cambiarlos! Para conseguir el password de registro con ya.com les llamé por teléfono y me lo dieron sin problemas.

He sacado la mayor parte de la información de enlaces como estos: 1, 2, 3, 4 y de este PDF. El firmware 1.00.001 para el router de ya.com lo he subido aquí.

sip.conf

[general]
context=unauthenticated
udpbindaddr=0.0.0.0             ; IP address to bind UDP listen socket to (0.0.0.0 binds to all)
tcpenable=no                    ; Enable server for incoming TCP connections (default is no)
tcpbindaddr=0.0.0.0             ; IP address for TCP server to bind to (0.0.0.0 binds to all interfaces)
srvlookup=yes
language=es                    ; Default language setting for all users/peers
nat=no
;sipdebug=yes
register => +349XXXXXXXX@voipd.ya.com:password:9XXXXXXXX@proxy.voip.ya.com

[basic-phone](!)                ; a template
dtmfmode=rfc2833
context=phones
type=friend
host=dynamic
qualify=yes

[natted-phone](!,basic-phone)   ; another template inheriting basic-options
directmedia=no
canreinvite=no

[public-phone](!,basic-phone)   ; another template inheriting basic-options
directmedia=yes

[my-codecs](!)                    ; a template for my preferred codecs
disallow=all
allow=ilbc
allow=g729
allow=gsm
allow=g723
allow=ulaw

[ulaw-phone](!)                   ; and another one for ulaw-only
disallow=all
allow=ulaw

[yacom]
type=peer
host=voipd.ya.com
fromuser=+349XXXXXXXX
defaultuser=9XXXXXXXX
secret=<password ya.com>
context=voip_providers
fromdomain=voipd.ya.com
realm=voipd.ya.com
outboundproxy=proxy.voip.ya.com:5060
canreinvite=no
insecure=invite,port
qualify=yes
useragent=SMC/SMC-0.10.003
defaultexpirey=3600
dtmfmode=rfc2833
deny=0.0.0.0/0
permit=84.78.3.62/32
permit=84.78.3.126/32

[easyvoip]
type=peer
host=sip.easyvoip.com
fromuser=username
defaultuser=username
secret=password
context=voip_providers
qualify=yes
dtmfmode=rfc2833
deny=0.0.0.0/0
permit=77.72.174.128/32

[telefono1](natted-phone,ulaw-phone)
secret=password1
deny=0.0.0.0/0
permit=192.168.1.0/24

[android](natted-phone,ulaw-phone)
secret=password2
deny=0.0.0.0/0
permit=192.168.1.0/24

extensions.conf

[general]
static=yes
writeprotect=no
autofallthrough=no
clearglobalvars=no

[globals]
CONSOLE=Console/dsp                             ; Console interface for demo
IAXINFO=guest                                   ; IAXtel username/password
TRUNK=DAHDI/G2                                  ; Trunk interface
TRUNKMSD=1                                      ; MSD digits to strip (usually 1 or 0)

[default]
exten => s,1,NoOp(Unrouted call handler)
exten => s,n,Answer()
exten => s,n,Wait(1)
exten => s,n,Playback(tt-weasels)
exten => s,n,Hangup()

[incoming_calls]
exten => s,1,Wait(0)
exten => s,n,NoOp(${CALLERID(num)}) ; trazar el caller-id en la consola
exten => s,n,Dial(SIP/telefono1&SIP/android,90,Ttr)
exten => s,n,Hangup()

[outgoing_calls]
exten => _6XXXXXXXX,1,NoOp(easyvoip call: ${EXTEN})
exten => _6XXXXXXXX,n,Dial(SIP/${EXTEN}@easyvoip,90,Ttr)
exten => _6XXXXXXXX,n,Hangup()

exten => _X.,1,NoOp(yacom call: ${EXTEN})
exten => _X.,n,Set(CALLERID(all)="+349XXXXXXXX" <sip:+349XXXXXXXX@voipd.ya.com>)
exten => _X.,n,Dial(SIP/${EXTEN}@yacom,90,Ttr)
exten => _X.,n,Hangup()

exten => s,1,NoOp(yacom call: ${EXTEN})
exten => s,n,Set(CALLERID(all)="+349XXXXXXXX" <sip:+349XXXXXXXX@voipd.ya.com>)
exten => s,n,Dial(SIP/${EXTEN}@yacom,90,Ttr)
exten => s,n,Hangup()

[international_calls]
exten => _+.,1,NoOp(International call)
exten => _+.,n,Goto(00${EXTEN:1},1) ; Change + to 00

exten => _00.,1,NoOp(easyvoip call: ${EXTEN})
exten => _00.,n,Dial(SIP/${EXTEN}@easyvoip,90,Ttr)
exten => _00.,n,Hangup()

exten => _00346.,1,NoOp(easyvoip call: ${EXTEN})
exten => _00346.,n,Dial(SIP/${EXTEN}@easyvoip,90,Ttr)
exten => _00346.,n,Hangup()

exten => _0034.,1,NoOp(easyvoip call: ${EXTEN})
exten => _0034.,n,Set(CALLERID(all)="+349XXXXXXXX" <sip:+349XXXXXXXX@voipd.ya.com>)
exten => _0034.,n,Dial(SIP/${EXTEN}@yacom,90,Ttr)
exten => _0034.,n,Hangup()

[internal]
exten => 100,1,NoOp()
exten => 100,n,Dial(SIP/telefono1)
exten => 100,n,Hangup()

exten => 101,1,NoOp()
exten => 101,n,Dial(SIP/android)
exten => 101,n,Hangup()

exten => 500,1,NoOp(Echo test application)
exten => 500,n,Echo()
exten => 500,n,Hangup()

[voip_providers]
include => incoming_calls
include => outgoing_calls
include => international_calls

[phones]
include => internal
include => voip_providers

[unauthenticated]
voip