You are on page 1of 57

Soluciones Ingeniosas

con VoIP
Alberto Sagredo Castro
www.voipnovatos.es

Voip2day

14 Noviembre 2008
Soluciones Ingeniosas con VoIP

Índice de casos
• Usar PSTNs remotamente.
• Tener una SIP URI con IP dinámica
• Tener dos llamadas sobre la misma línea
analógicas.

• Interfono con un adaptador VoIP


• Cluster con Asterisk y DUNDI.
• Balanceo y failover con DNS SRV.
• Cisco-Linksys SPA 400 con Asterisk
Alberto Sagredo Castro
Soluciones Ingeniosas con VoIP

Usar PSTNs remotamente


Antecedentes:
• Cambio de oficina temporalmente.
• Oficina cerrada temporalmente.
• Sede en una casa prefabricada sin posibilidad de
contratar teléfono.

• Empresario que viaja y quiere llamar a precio local.


• Trasladar una línea telefónica usando Ethernet.
• Etc...
Alberto Sagredo Castro
Soluciones Ingeniosas con VoIP

Usar PSTNs remotamente


Requisitos:

• ADSL en alguna de las ubicaciones.


• Red WiFi.
• IP Fija o DNS tipo DYNDNS
• Gateway FXO que soporte IP Dialing y llamadas sin
estar registrado.

• Puerto 506x y rango RTP abierto en router de


acceso a Internet.

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

Usar PSTNs remotamente


Solución:
• Recomendable poner IP fija a los dispositivos. Para
Mapeo de puertos en router..

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

Usar PSTNs remotamente


Solución:
• Seleccionar en el adaptador poder realizar llamadas
sin estar registrado. Ya que la conexión será punto a
punto sin Proxy.

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

Usar PSTNs remotamente


Solución:
• Configurar apartados de Dialplans y PSTN

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

Usar PSTNs remotamente


Solución:
• Configurar pasarela de PSTN a VoIP

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

Usar PSTNs remotamente


Opciones:
• Seguridad: PIN de acceso a PSTN. Autenticación
SIP....

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

Usar PSTNs remotamente


Configuración Teléfono Maestro

• Considerar puerto local de cada línea.

• Habilitar llamadas sin estar registrado.

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

Usar PSTNs remotamente


Configuración Teléfono Maestro
• Dialplan para llamar automáticamente al Esclavo.
Hotdialing

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

SIP URIs con IPs dinámicas

Antecedentes:
• Necesidad de una SIP URI para que los clientes
contacten con nosotros.

• No posibilidad de gestión total de servidor DNS.


• Sólo un teléfono o PBX recibiendo dicho dominio
SIP.

• Posible recepción de SPIT (SPAM over Internet


Telephony)

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

SIP URIs con IPs dinámicas

Requisitos:
• Posibilidad de configurar registro CNAME en
dominio (sip.voipnovatos.es)

• Conexión a Internet.
• Dominio DYNDNS apuntando a la ip del router
WAN en cada momento (ip dinámica generalmente)

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

SIP URIs con IPs dinámicas

Solución:

• Configurar registro CNAME apuntando a dominio


DYNDNS

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

SIP URIs con IPs dinámicas

Solución:

• Abrir puerto 5060 y rango RTP en router de acceso


a Internet

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

SIP URIs con IPs dinámicas

Solución:
• Configurar Terminal IP para permitir INVITES
externos y configurar ID , como nombre de la URI
sip:nombre@dominio.com

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

SIP URIs con IPs dinámicas

Solución:

• Las llamadas a 100@sip.dominio.com entrarán


directamente en la línea X del terminal IP.

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

Dos llamadas sobre la misma línea


analógica
Antecedentes:

• Necesidad temporal de más llamadas inbound.


• No perder segundas llamadas sobre mísmo número.
• Etcétera....

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

Dos llamadas sobre la misma línea


analógica
Requisitos:
• DID con proveedor de telefonía por internet.
• Servicio de Desvío si ocupado con operador de
telefonía.

• Tarifa plana en llamadas nacionales.


• PBX IP
• Teléfono IP con dos o más líneas o Gateway VoIP.

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

Dos llamadas sobre la misma línea


analógica
Solución:
• Contratar , por ejemplo, con Telefónica el servicio
de desvío si ocupado:

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

Dos llamadas sobre la misma línea


analógica
Solución:
• Contratar un DID con un proveedor de Telefonía por
Internet. (Ejemplo Voxbone).

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

Dos llamadas sobre la misma línea


analógica
Solución:

• Al llamar al número fijo de Telefónica si está


ocupado por llamada en curso, nos entrará en el
dispositivo IP.

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

Interfono con adaptador VoIP


Antecedentes:

• Al descolgar el teléfono, que contacte con el otro


extremo.

• Para interconectar taller con recepción.


• Etcétera....

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

Interfono con adaptador VoIP


Requisitos:

• Gateway con facilidad de hot-dialing.


• Gateway con posibilidad de manipulación de
dígitos introducidos por sistema teléfónico.

• Conexión de red local o Internet.


• Puente para el conector Ethernet.
• Etcétera....

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

Interfono con adaptador VoIP


Solución:
• Puente para hacer creer al adaptador que tiene
conexión a red Ethernet.

• Configurar dispositivo con IP fija.


Alberto Sagredo Castro
Soluciones Ingeniosas con VoIP

Interfono con adaptador VoIP


Solución:
• Configurar Line1 y Line 2 con dos USERID
conocidos.

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

Interfono con adaptador VoIP


Solución:
• Si hemos puesto USERID 100 a Line 1 y USERID
101 a Line2. Configuraremos Dialplan como sigue.
Para Line 1:

(<#:101@127.0.0.1:5061>)

Para Line 2:

(<#:100@127.0.0.1:5060>)

• Si queremos funcionalida de teléfono Rojo. Al


descolgar se llama al otro extremo.
Para Line 1:

(S0<:101@127.0.0.1:5061>)

Para Line 2:

(S0<:100@127.0.0.1:5060>) Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

Interfono con adaptador VoIP


Solución:

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

Cluster Asterisk con DUNDI


Antecedentes:

• Cluster de varios servidores Asterisk.


• Aversión a sistemas Proxy como SIP-Router,
Kamailio o OpenSIPS.

• Etcétera....

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

Cluster Asterisk con DUNDI


Requisitos:
• Al menos dos servidores Asterisk.
• Servidor DNS SRV para balanceo de peticiones.
• Red Local.
• Manejo de dialplan de Asterisk.
• Base de datos en Realtime de Asterisk.
• Etcétera....

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

Cluster Asterisk con DUNDI


Solución:
• Configurar peer dundi en cada uno de los
iax.conf de cada servidor Asterisk
[general] [dundi]
bindport=4569
bindaddr=0.0.0.0 type=friend
context=extensiones
iaxcompat=yes context=ext-local
nochecksums=yes disallow=all
delayreject=yes
amaflags=default allow=ulaw
disallow=all allow=alaw
allow=alaw
allow=alaw ;allow=gsm
allow=alaw
allow=alaw
jitterbuffer=no
forcejitterbuffer=no
canreinvite=no
trunkfreq=20
language=es
rtcachefriends=yes
rtupdate=no
rtautoclear=600

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

Cluster Asterisk con DUNDI


Solución:
• Generar claves IAX2 con astgenkey y
ubicar claves públicas en /var/lib/asterisk/keys

• Configurar extensions.conf para hacer uso de


realtime y dundi.
[dundi-extens]
switch=>DUNDI/extensiones

[default]
switch=>RealTime/@extensions

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

Cluster Asterisk con DUNDI


Solución:
• Configurar dundi.conf en cada servidor. Tener en
cuenta que cada servidor tiene las direcciones
MAC del resto de servidores menos él.
entityid=00:11:11:11:11:11 con la mac de cada máquina
…..
entityid=00:22:22:22:22:22 ; (SERVIDOR 2)
…..
entityid=00:33:33:33:33:33 ; (SERVIDOR 3
…..
entityid= 00:44:44:44:44:44 ; (SERVIDOR 4)
…...

ttl=3
cachetime=5
autokill=yes

[mappings]
extensiones-locales=>sipregistration,0,IAX2,dundi:${SECRET}@${IPADDR}/${NUMBER},nopartial

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

Cluster Asterisk con DUNDI


Solución:
• Continuación...
[00:11:11:11:11:11 ] ; Lo identificamos por su entityid [00:33:33:33:33:33] ; Lo identificamos por su entityid
model=symmetric model=symmetric
host=213.x.x.2
host=213.x.x.3
inkey=dundikey
inkey=dundikey
outkey=dundikey
outkey=dundikey
include=extensiones-locales
include=extensiones-locales
permit=extensiones-locales
permit=extensiones-locales
qualify=yes
order=primary qualify=yes
order=primary

[00:22:22:22:22:22] ; Lo identificamos por su entityid


model=symmetric [00:44:44:44:44:44] ; Lo identificamos por su entityid
host=213.x.x.2 model=symmetric
host=213.x.x.4
inkey=dundikey inkey=dundikey
outkey=dundikey outkey=dundikey
include=extensiones-locales include=extensiones-locales
permit=extensiones-locales
permit=extensiones-locales qualify=yes
qualify=yes order=primary
order=primary

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

Cluster Asterisk con DUNDI


Solución:
• Configurar sip.conf
[general]
bindport=5060 language=en
context=extensiones rtcachefriends=yes
bindaddr=0.0.0.0 regcontext=sipregistration
srvlookup=no rtptimeout=600
pedantic=no rtpholdtimeout=300
maxexpirey=600 limitonpeers=yes
;realm= ;nat=
defaultexpirey=600 rtupdate=no
;notifymimetype= rtautoclear=600
videosupport=no ignoreregexpire=no
disallow=all
allow=all

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

Cluster Asterisk con DUNDI


Solución:
• Realtime
Carga de módulos de MySQL y Realtime:
modules.conf
…..
preload => app_addon_sql_mysql.so
preload => res_config_mysql.so
……
Configuración de extconfig.conf para Realtime en voicemail, peers, users, extensions.
…..
sipusers => mysql,nbx,sip_buddies
sippeers => mysql,nbx,sip_buddies
voicemail => mysql,nbx,voicemail_users
extensions => mysql,nbx,extensions
queues => mysql,nbx,queue_table
queue_members => mysql,nbx,queue_member_table
…..

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

Cluster Asterisk con DUNDI


Solución:
Configuración de sip.conf para Realtime :

• Realtime
…..
[general]
context = ext-local REGPBX1*CLI> show dialplan
allow=all [ Context 'sipregistration' created by 'SIP' ]
'1001' => 1. Noop(1001) [SIP]
regcontext=sipregistration '1006' => 1. Noop(1006) [SIP]
bindport=5060
rtcachefriends=yes
rtupdate=no
rtautoclear=600

…..

Configuración de res_mysql.conf para Realtime :


[general]
dbhost = bbdd.dominio.com
dbname = bbdd
dbuser = bbdd
dbpass = xxxxxx
dbport = 3306
dbsock = /var/lib/mysql/mysql.sock

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

Cluster Asterisk con DUNDI


Solución:
• Introducir datos de Realtime:
INSERT into sip_buddies (id, name, callerid, context, canreinvite, type, host, secret, nat)

VALUES ('','00001100','Emp_01_100','ext-local','no','friend','dynamic','8732yf23','yes');

INSERT INTO extensions (id,context, exten, priority,app,appdata)

VALUES ('', 'ext-local','100','1','Dial','SIP/00001${EXTEN}|20');

INSERT INTO extensions (id,context, exten, priority,app,appdata)

VALUES ('', 'ext-local','100','2','Goto','dundi-extens|00001${EXTEN}|1');

INSERT INTO extensions (id,context, exten, priority,app,appdata)

VALUES ('', 'ext-local','100','3','Gotoif','$[${DIALSTATUS}] = NOANSWER?5');

INSERT INTO extensions (id,context, exten, priority,app,appdata)

VALUES ('', 'ext-local','100','4','Voicemail','u00001${EXTEN}@ext-local-emp1');

INSERT INTO extensions (id,context, exten, priority,app,appdata)

VALUES ('', 'ext-local','100','5','Hangup','');

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

Cluster Asterisk con DUNDI


Solución:
• Comprobar que todo funciona como debe:
dundi lookup
dundi query
dundi show peers

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

Balanceo y Failover con DNS SRV

Antecedentes:

• Aversión a otros sistemas de balanceo con SIP-


ROUTER, Kamailio o OpenSIPS

• Necesidad de tener servidores para ciertos dominios


con prioridades.

• Necesidad de prioridades dependiendo de


protocolo en VoIP, SIP o UDP, SIP o TCP, SIP/TLS.

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

Balanceo y Failover con DNS SRV

Requisitos

• Servidor DNS configurable por nosotros.


• Dominio en internet.
• Varios Proxys o Servidores con Asterisk
• Registros centralizados en el sistema.
• Tiempo de registro bajo.
• Terminales que tengan soporte de DNS SRV.

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

Balanceo y Failover con DNS SRV

Solución:
; Configuración de dominio.com
$TTL 86400
@ IN SOA dns administrador (
200706247 ; Serial formato: yyyymmddn donde n es un número cualquiera
10800 ; Refresh después de tres horas
3600 ; Reintentar después de una hora
604800 ; Expirar después de una semana
86400 ) ; TTL(Time to Live) mínimo de un día

IN NS dns
dominio.com. IN A 195.222.222.222
IN MX 10 dominio.com.
dns IN CNAME dominio.com.
www IN CNAME dominio.com.
ns1 IN A 195.222.222.222
ns2 IN A 195.222.222.222

sip IN A 195.222.222.221
sip2 IN A 195.222.222.222
sip3 IN A 195.222.222.223
sip4 IN A 195.222.222.224
sip5 IN A 195.222.222.225
backup IN A 195.222.222.226

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

Balanceo y Failover con DNS SRV

Solución:
_sip._udp.dominio.com. 300 IN SRV 0 0 5060 sip.dominio.com.
_sip._udp.dominio.com. 300 IN SRV 0 0 5060 sip2.dominio.com.
_sip._udp.dominio.com. 300 IN SRV 0 0 5060 sip3.dominio.com.
_sip._udp.dominio.com. 300 IN SRV 0 0 5060 sip4.dominio.com.
_sip._udp.dominio.com. 300 IN SRV 0 0 5060 sip5.dominio.com.
_sip._udp.dominio.com. 300 IN SRV 1 0 5060 backup.dominio.com.

dominio.com. IN NAPTR 0 0 "s" "SIP+D2U" "" _sip._udp.dominio.com.

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

Balanceo y Failover con DNS SRV

Solución:
Le hemos puesto un tiempo (300) de refresco de cache, para que los terminales
vayan realizando peticiones cada 300 segundos, por si cambiáramos el DNS en
ese tiempo. Si no se pretende modificar el DNS , se pueden poner valores más
altos como 43200 (12 horas).

También se puede jugar con los valores de peso, para indicar que servidores serán
accedidos con mayor frecuencia que otros.

Si quieremos por ejemplo que sip2 reciba el 20 % de las peticiones que sip.

_sip._udp.dominio.com. 300 IN SRV 0 80 5060 sip.dominio.com.


_sip._udp.dominio.com. 300 IN SRV 0 20 5060 sip2.dominio.com.

Existe un servidor de backup, que aceptaría las peticiones en el caso de que


alguno de los demás no fuera alcanzable. En configuraciones normales, si
tenemos dos servidores, quizá nos interesaría:

_sip._udp.dominio.com. 300 IN SRV 0 0 5060 sip.dominio.com.


_sip._udp.dominio.com. 300 IN SRV 1 0 5060 sip2.dominio.com.
Alberto Sagredo Castro
Soluciones Ingeniosas con VoIP

Balanceo y Failover con DNS SRV

Solución:
Con lo que en caso de que el primer servidor no fuera alcanzable porque esté caído,
buscaría el segundo.

Destacar que aquí hemos configurado DNS SRV para UDP.

Si quisiéramos dar algún servicio de SIP sobre TCP o SIP sobre TLS, tendríamos que
configurar de acuerdo a estos servicios:

_sip._tcp.dominio.com. 300 IN SRV 0 0 5060 sip.dominio.com.


_sips._tcp.dominio.com. 300 IN SRV 0 0 5060 sip.dominio.com.

dominio.com. IN NAPTR 0 0 "s" "SIP+D2T" "" _sip._tcp.dominio.com.


dominio.com. IN NAPTR 0 0 "s" "SIPS+D2T" "" _sips._tcp.dominio.com.

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

Balanceo y Failover con DNS SRV

Solución:

• Configuración de DNS SRV en Terminales VoIP

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

SPA 400 con Asterisk


Antecedentes:

• Usar SPA 400 con Asterisk como gateway de alta


densidad de puertos FXO (4)

• Enrutar un DID analógico (puerto FXO) a un FAX.


• Elegir una línea de salida para determinadas
llamadas (Gateways GSM)

• Etcétera....

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

SPA 400 con Asterisk


Requisitos:
• Asterisk.
• Linksys SPA 400.
• Líneas analógicas.
• Conocimientos sobre dialplan Asterisk.

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

SPA 400 con Asterisk


Solución:
• Para poder encaminar llamadas entrantes
configurar SPA 400 tal y como se muestra:

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

SPA 400 con Asterisk


Solución:
• Capturando vemos un campo interesante en
los INVITES
INVITE sip:9000@192.168.1.221 SIP/2.0
From: - FXO_Port_ID_1<sip:anonymous@localhost>;tag=dc01a8c0-13c4-3d7b3c2e-13c85
-76f0918f
To: <sip:FXO_Port_ID_1@192.168.1.220>
Call-ID: 10186844-dc01a8c0-13c4-3d7b3c2d-13b8b-2f293669@localhost
CSeq: 1 INVITE
Via: SIP/2.0/UDP 192.168.1.220:5060;branch=z9hG4bK-3d7b3c2e-13cd5-5461bc1c
Max-Forwards: 70
Supported: replaces,timer,100rel
Contact: <sip:FXO_Port_ID_1@192.168.1.220:5060;transport=UDP>
Content-Type: application/SDP
Content-Length: 278

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

SPA 400 con Asterisk


Solución:
• Encaminar llamadas entrantes:
[incoming]
exten => spa400,1,Set(TOLINE=${SIP_HEADER(To)})
exten => spa400,n,Set(FROMLINE=${SIP_HEADER(From)})
exten => spa400,n,Set(TOLINE=${CUT(TOLINE,:,2)})
exten => spa400,n,Set(FROMLINE=${CUT(FROMLINE,:,2)})
exten => spa400,n,Set(INCOMINGLINE=${CUT(TOLINE,@,1)})
exten => spa400,n,Set(CLID=${CUT(FROMLINE,@,1)})
exten => spa400,n,Noop(${INCOMINGLINE})
exten => spa400,n,Noop(${CLID})
exten => spa400,n,Set(CALLERID(name)=PSTN)
exten => spa400,n,Set(CALLERID(num)=${CLID})
exten => spa400,n,Goto(incoming,${INCOMINGLINE},1)

exten => Linea-1,1,Dial(SIP/100,,tT)

exten => Linea-2,1,Dial(SIP/101,,tT)

exten => Linea-3,1,Dial(SIP/102,,tT)

exten => Linea-4,1,Dial(SIP/103,,tT)

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

SPA 400 con Asterisk


Solución:
• Encaminar llamadas salientes por un puerto
FXO determinado:

exten => 9XXXXXXXX,1,Dial(SIP/L1{EXTEN},20)


exten => 9XXXXXXXX,2,Hangup
exten => 6XXXXXXXX,1,Dial(SIP/L2{EXTEN},20)
exten => 6XXXXXXXX,2,Hangup

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

SPA 400 con Asterisk


Solución:
• Recordar que Asterisk se tiene que registrar en
la SPA 400. Por tanto sip.conf deberá
configurarse como sigue:
register=> spa400@192.168.1.109/spa400

[spa400]
type=friend
user=spa400
host=192.168.1.109
dtmfmode=rfc2833
canreinvite=no
context=from-trunk
insecure=very

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

Bibliografía
• Cisco Linksys ATA ADMIN GUIDE
• http://www.voip-info.org/storage/users/813/47813/
images/1654/DUNDi_So_Easy.pdf

• http://www.julianmenendez.es/usando-dundi-
asterisk/

• Sip Demystified. Gonzalo Camarillo. McGraw-Hill.


• http://www.cs.columbia.edu/sip/othersip.html
• http://www.astricon.net/files/usa06/Friday-
General_Conference/JR_Richardson_Whitepaper.pdf
Alberto Sagredo Castro
Soluciones Ingeniosas con VoIP

Blogs
• www.saghul.net
• www.jerocu.net
• www.sinologic.net
• www.voipnovatos.es
• blog.aliax.net
• www.asterisktron.org
• www.voip-info.org
• Tom Keating, Luca Filigheddu (a.k.a Sitófono),etc..
Alberto Sagredo Castro
Soluciones Ingeniosas con VoIP

Preguntas

Alberto Sagredo Castro


Soluciones Ingeniosas con VoIP

Gracias por la
atención

Alberto Sagredo Castro