1. Soluciones Ingeniosas
con VoIP
Alberto Sagredo Castro
www.voipnovatos.es
Voip2day
14 Noviembre 2008
2. 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
3. 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 usando Ethernet.
• Etc...
Alberto Sagredo Castro
4. 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
5. 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
6. Soluciones Ingeniosas con VoIP
Usar PSTNs remotamente
Solución:
• Seleccionar en el adaptador poder realizar llamadas
sin estar registrado. Ya que la conexión sera punto a
punto sin Proxy.
Alberto Sagredo Castro
7. Soluciones Ingeniosas con VoIP
Usar PSTNs remotamente
Solución:
• Configurar apartados de Dialplans y PSTN
Alberto Sagredo Castro
8. Soluciones Ingeniosas con VoIP
Usar PSTNs remotamente
Solución:
• Configurar pasarela a VoIP
Alberto Sagredo Castro
9. Soluciones Ingeniosas con VoIP
Usar PSTNs remotamente
Opciones:
• Seguridad. PIN de acceso a PSTN. Autenticación
SIP....
Alberto Sagredo Castro
10. Soluciones Ingeniosas con VoIP
Usar PSTNs remotamente
Configuración Teléfono Maestro
• Considerar puerto local de cada línea.
• Considerar puerto local de cada línea.
Alberto Sagredo Castro
11. Soluciones Ingeniosas con VoIP
Usar PSTNs remotamente
Configuración Teléfono Maestro
• Dialplan para llamar automáticamente al Esclavo
Alberto Sagredo Castro
12. 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
13. 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.
Alberto Sagredo Castro
14. Soluciones Ingeniosas con VoIP
SIP URIs con IPs dinámicas
Solución:
• Configurar registro CNAME apuntando a dominio
DYNDNS
Alberto Sagredo Castro
15. 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
16. 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
17. 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
18. 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
19. 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
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
20. 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
21. 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
22. 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
23. 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
24. 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
25. 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
26. Soluciones Ingeniosas con VoIP
Interfono con adaptador VoIP
Solución:
• Configurar Line1 y Line 2 con dos USERID
conocidos.
Alberto Sagredo Castro
27. 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
29. 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
30. 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
31. 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
;dropcount=
;maxjitterbuffer=
;maxjitterinterps=
canreinvite=no
trunkfreq=20
language=es
rtcachefriends=yes
rtupdate=no
rtautoclear=600
Alberto Sagredo Castro
32. Soluciones Ingeniosas con VoIP
Cluster Asterisk con DUNDI
Solución:
• Configurar extensions.conf para hacer uso de
realtime y dundi.
[dundi-extens]
switch=>DUNDI/extensiones
[default]
switch=>RealTime/@extensions
Alberto Sagredo Castro
33. 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
34. 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
35. 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
36. 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
37. Soluciones Ingeniosas con VoIP
Cluster Asterisk con DUNDI
Solución:
Configuración de sip.conf para Realtime :
• Realtime
…..
[general]
context = ext-local
allow=all
regcontext=sipregistration
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
38. 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
39. 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
40. 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
41. 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
42. 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 quot;squot; quot;SIP+D2Uquot; quot;quot; _sip._udp.dominio.com.
Alberto Sagredo Castro
43. 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 s, 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 doble de peticiones que sip.
_sip._udp.dominio.com. 300 IN SRV 0 10 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
44. 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 quot;squot; quot;SIP+D2Tquot; quot;quot; _sip._tcp.dominio.com.
dominio.com. IN NAPTR 0 0 quot;squot; quot;SIPS+D2Tquot; quot;quot; _sips._tcp.dominio.com.
Alberto Sagredo Castro
45. Soluciones Ingeniosas con VoIP
Balanceo y Failover con DNS SRV
Solución:
• Configuración de DNS SRV en Terminales VoIP
Alberto Sagredo Castro
46. 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
47. Soluciones Ingeniosas con VoIP
SPA 400 con Asterisk
Requisitos:
• Asterisk.
• Linksys SPA 400.
• Líneas analógicas.
• Conocimientos sobre dialplan Asterisk.
Alberto Sagredo Castro
48. 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
49. 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
51. 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
52. 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
53. 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
54. 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