0% encontró este documento útil (0 votos)
72 vistas11 páginas

Howto Asterisk

Este documento describe los pasos para configurar Asterisk en Debian Lenny para proporcionar servicios de telefonía IP. Inicialmente se crea un usuario Asterisk y se descargan e instalan los fuentes de Asterisk y sonidos. Luego se configuran los archivos para establecer la centralita, extensiones SIP, correo de voz, protocolos IAX2 y plan de marcado. Finalmente, se explican los detalles de configuración como rangos de extensiones y contextos para llamadas locales e internacionales.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
72 vistas11 páginas

Howto Asterisk

Este documento describe los pasos para configurar Asterisk en Debian Lenny para proporcionar servicios de telefonía IP. Inicialmente se crea un usuario Asterisk y se descargan e instalan los fuentes de Asterisk y sonidos. Luego se configuran los archivos para establecer la centralita, extensiones SIP, correo de voz, protocolos IAX2 y plan de marcado. Finalmente, se explican los detalles de configuración como rangos de extensiones y contextos para llamadas locales e internacionales.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 11

Configurando Asterisk en Debian Lenny

por Anibal Trutié Rodríguez


UCP - Hoguín.
Suponiendo que ya tenemos instalada y configurada nuestra debian lenny veámos paso a paso como
configurar nuestra centralita de telefonía ip para brindar este servicio a nuestros usuarios.

Necesitaremos los sources de asterisk y los sonidos en español que podemos descargar del siguiente
Link y manos a la obra

Lo primero será crear el usuario que usará el daemon asterisk en nuestro sistema y para ello:
adduser --system --disabled-login --disabled-password --home=/var/spool/asterisk asterisk
addgroup --system asterisk
adduser asterisk asterisk

Luego copiaremos el source de asterisk “asterisk-1.8.4.1.tar.gz” para el directorio “/root/” , lo


descompactamos y entramos en el directorio:
tar -xvpzf asterisk-1.8.4.1.tar.gz
cd asterisk-1.8.4.1

Ahora nos toca copiar todos los sonidos “asterisk-core-sounds-es-*-current.tar.gz” para el source
que en este caso quedaría en el siguiente directorio “/root/asterisk-1.8.4.1/sounds”.
El paso siguiente sería instalar las dependencias usando un script que ya nos proporcionan en el
source, ya estando dentro ejecutamos:
contrib/scripts/install_prereq install

Teniendo las dependencias instaladas vamos a configurar antes de compilar los fuentes, si usaremos
ldap para guardar la información de las extensiones le diremos que compile el módulo
“res_config_ldap”
./configure --prefix=/usr --bindir=/bin --sbindir=/sbin --sysconfdir=/etc --localstatedir=/var --libdir=/lib
--with-res_config_ldap

si no pretendemos usar ldap entonces no necesitamos pasarle el paremetro --with-res_config_ldap


Lo siguiente es compilar los sources e instalarlos en nuestro sistema ejecutando:
make
make install
make samples
make config

y por ultimo nos queda dar los permisos al usuario asterisk en los directorios donde trabajará con
sus bases de datos
chown -R asterisk.asterisk /var/log/asterisk/ /var/lib/asterisk/ /var/spool/asterisk/

P or último nos tocaría crear las llaves rsa para dundi y para ello vamos al directorio
“/var/lib/asterisk/keys” y ejecutamos:
cd /var/lib/asterisk/keys
astgenkey -n voip.ho.rimed.cu
Y
Sustituyan voip.ho.rimed.cu por el nombre dns de su servidor voip, y listo, ya tenemos asterisk
instalado ahora tenemos que configurarlo para prestar servicio a nuestros usuarios.
Configurando:
Para configurar nuestra pequeña central tenemos varios datos que representaremos en rojo en los
archivos de configuración y sustituiremos por nuestros datos reales en nuestra central, en estos
ejemplos encontramos los datos para la central en la provincia Holguín.

Otra cosa que debemos tener bien claro es el rango de extensiones que tendrá publicadas nuestra
central en la red dundi, estos datos si no lo conoces contacte a los administradores en rimed.

/etc/asterisk/asterisk.conf

[directories](!)
astetcdir => /etc/asterisk
astmoddir => /lib/asterisk/modules
astvarlibdir => /var/lib/asterisk
astdbdir => /var/lib/asterisk
astkeydir => /var/lib/asterisk
astdatadir => /var/lib/asterisk
astagidir => /var/lib/asterisk/agi-bin
astspooldir => /var/spool/asterisk
astrundir => /var/run/asterisk
astlogdir => /var/log/asterisk

[options]
systemname = voip.ho.rimed.cu
runuser = asterisk
rungroup = asterisk
documentation_language = es_ES

[compat]
pbx_realtime=1.6
res_agi=1.6
app_set=1.6

/etc/asterisk/modules.conf

[modules]
autoload=yes
;preload => res_config_ldap.so
load => res_musiconhold.so
noload => pbx_lua.so
noload => pbx_ael.so
noload => pbx_gtkconsole.so
noload => chan_alsa.so
noload => chan_console.so

Como ven aquí vamos a decirle a asterisk que no cargue algunos modulos que no necesitamos para
su funcionamiento en nuestra red, y para los que usamos ldap tenemos la linea:
;preload => res_config_ldap.so
que debemos descomentar para que cargue el modulo para leer los datos de las extensiones que
crearemos en nuestra base de datos ldap.
/etc/asterisk/sip.conf

[general]
context=local
allowoverlap=no
udpbindaddr=0.0.0.0
tcpenable=no
tlsenable=no
srvlookup=no
disallow=all
allow=speex
allow=gsm
nat=yes
directmedia=no
language=es
useragent=VoIp PBX Server
videosupport=yes
domain= voip.ho.rimed.cu
fromdomain= voip.ho.rimed.cu
rtcachefriends=yes
jbenable = yes
jbforce = no
jbmaxsize = 250

[8120110]
type=friend
context=rimed
secret=password
callerid="Anibal Trutie"
host=dynamic

[8120111]
type=friend
context=local
secret=password
callerid="Usuario restringido"
host=dynamic

En el fichero “sip.conf” es donde se crean las extensiones que se usarán con los teléfonos ip y los
softphone, en esta configuración dejamos creadas de ejemplo dos extensiones, como pueden ver en
la ext “8120110” tenemos el parametro “context” donde definimos el contexto en el plan de
marcado en este caso rimed por lo tanto podrá hacer llamadas a ext en otros servidores de la red ya
que dicho contexto incluye las busquedas dundi de ext en otros servidores de la red, en el parametro
“secret” definimos su contraseña y en el “callerid” pondremos la identificación de la ext que será
mostrada en el display de los teléfonos ip cuando se les llame. La ext “8120110” como pertenece al
contexto local solo podrá hacer llamadas a las ext en el mismo servidor.

Tenga en cuenta que solo hemos habilitado dos codec para la transmision de audio
allow=speex
allow=gsm
usamos gsm buscando compatibilidad y redimiento ya que es uno de los que menos ancho de banda
consume, aproximadamente unos 13kb/s , el codec speex tambien lo habilitamos ya que este
consume menos que gsm, se puede usar en softphone como x-lite pero no es compatible con los
teléfonos ip y en softphone como el ekiga para linux no estan bien soportados.
/etc/asterisk/voicemail.conf

[general]
format=wav49|gsm|wav
attach=no
attachfmt=wav49
maxsecs=300
minsecs=5
skipms=3000
maxsilence=4
silencethreshold=128
maxlogins=3
charset=UTF-8
fromstring=Correo de Voz
[email protected]
emailsubject=Mensaje de ${VM_CALLERID}.
emailbody=${VM_NAME}:\n\n\tUsted ha recibido un mensaje (${VM_DUR} min) en su buzón de voz $
{VM_MAILBOX}\nenviado por ${VM_CALLERID} con fecha ${VM_DATE}\n\n\t\t\t--- Nodo Provincial
VoIp.ho.rimed.cu ---\n
emaildateformat=%d/%m/%Y a las %r
sendvoicemail=yes

[voicemail]
8020110 => 8888,Anibal Trutié,[email protected],,|attach=yes|delete=yes
8020111 => 8888,Usuario Restringido,[email protected],,|attach=yes|delete=yes

En este archivo es donde configuramos los buzones de voz, este ejemplo esta configurado para que
los mensajes nos lleguen a nuestra dirección de correo electrónico, no todas las extensiones
necesitan tener activado el buzon de voz por lo que solo configuraremos las que necesitemos.

/etc/asterisk/iax.conf

[general]
language=es
bandwidth=low
disallow=all
allow=gsm
jitterbuffer=yes
forcejitterbuffer=yes
maxjitterbuffer=250
autokill=yes

[dundi]
type=friend
dbsecret=dundi/secret
context=local

El protocolo “iax2” solo lo usaremos para la transmisión entre servidores asterisk por lo que
usaremos como un estandar el codec gsm, en este archivo es donde configuramos el usuario dundi
que usara el servidor para dichas transmisiones.
/etc/asterisk/extensions.conf

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

[globals]

[macro-Sip]
exten => s,1,Dial(SIP/${ARG1},22)
exten => s,n,Goto(s-${DIALSTATUS},1)
exten => s-BUSY,1,Playback(vm-nobodyavail)
exten => s-BUSY,n,Playback(vm-goodbye)
exten => s-BUSY,n,HangUp()
exten => s-NOANSWER,1,VoiceMail(${ARG1}@voicemail)
exten => s-NOANSWER,n,HangUp()
exten => _s-.,1,Playback(ss-noservice)
exten => _s-.,n,VoiceMail(${ARG1}@voicemail)
exten => _s-.,n,Playback(vm-goodbye)
exten => _s-.,n,HangUp()

[dundi-ext]
switch => DUNDi/dundi-ext

[dundi-inc]
exten => _8120[0-2]XX,1,NoOp()
exten => 8129999,1,NoOp()

[local]
exten => i,1,Playback(vm-invalid)
exten => i,n,HangUp()
exten => 8129999,1,Playback(demo-congrats)
exten => 8129999,n,Hangup()
exten => _812XXXX,1,Ringing()
exten => _812XXXX,n,Macro(Sip,${EXTEN})
exten => _XXXX,1,Ringing()
exten => _XXXX,n,Macro(Sip,812${EXTEN})
exten => t,1,Playback(vm-goodbye)
exten => t,n,HangUp()

[rimed]
include => local
include => dundi-ext

En este fichero es donde se configura el plan de marcado, en el contexto “dundi-inc” es donde


espeficamos los rangos de ext que serán mapeados a los otros servidores dundi, a las ext locales que
pertenesca a estos rangos se les podrán hacer llamadas desde otros servidores asterisk.
Cuando se define un numero especifico se hace de la siguiente forma
exten => 8129999,n,NoOp()
Cuando definimos rangos lo hacemos con una expresión de la forma
exten => _8120[0-2]XX,1,NoOp() ; aquí se define desde 8120000 hasta 8120299
comenzando por el simbolo underscore “ _ “ y pondemos usar los comodines siguientes:
X sustituye un numero en el rango de 0 a 9
Z sustituye un numero en el rango de 1 a 9
N sustituye un numero en el rango de 2 a 9
. sustituye cualquier numero, vendría siendo igual que * en los comodines comúnes
[0-3] sustituye un numero en el rango de 0 a 3
[0-357-9] aquí le decimos que pueden ser cualquier de los numeros 0, 1, 2, 3, 5, 7, 8, 9
/etc/asterisk/dundi.conf

[general]
department=Informatica y Comunicaciones
organization=Nodo Provincial UCP Holguin
locality=Holguin
stateprov=Holguin
country=CU
[email protected]
bindaddr=0.0.0.0
port=4520
entityid=00:18:51:17:e3:27
cachetime=3600
ttl=32
autokill=yes
storehistory=yes

[mappings]
dundi-ext => dundi-inc,0,IAX2,dundi:${SECRET}@voip.ho.rimed.cu/${NUMBER},nopartial

[86:c1:ea:b9:ef:af]
model = symmetric
host = voip.rimed.cu
inkey = voip.rimed.cu
outkey = voip.ho.rimed.cu
include = all
permit = all
qualify = yes

En el archivo dundi.conf es donde le decimos a nuestro dundi los servidores a los cuales hacerle
consultas buscando extensiones al hacer una llamada, en dejamos todas la información de nuestro
servidor y creamos una conexión para cada servidor a conectarnos en la red, en este ejemplo
creamos una conexión con el servidor de rimed y los parametros a tener en cuenta son:
entityid=00:18:51:17:e3:27
es donde definimos la identidad de nuestro servidor para la cual usamos el numero mac de la
interface de red, si necesitan cambiar de pc el servidor asterisk no cambien la identificación ya que
habra que hacerlo en cada servidor que establesca conexión con ustedes y habría que cambiar todas
las configuraciones. Las configuraciones para la conexión con los servidores conocidos las pongo
en la página final de este documento, el que iré actualizando a medida que se conecten los demás.
Cada bloque de conexión con otro servidor comienza por la identidad del servidor remoto:
[86:c1:ea:b9:ef:af]
model = symmetric
host = voip.rimed.cu
inkey = voip.rimed.cu
outkey = voip.ho.rimed.cu
include = all
permit = all
qualify = yes

para cada conexión “inkey”es la llave rsa publica del servidor remoto “voip.rimed.cu.pub” y
“outkey” es la llave rsa privada de nuestro servidor, en este caso “voip.ho.rimed.cu.key”, Las llaves
rsa se crean en pares ( xxxx.key <=> xxxx.pub ) es otra cosa a tener en cuenta a la hora de migrar el
servicio hacia otra pc, ya que la llave xxxx.pub que es la que publicaremos para que depositen en
los demás servidores solo sirve con la xxxx.key que se creo junto con ella, por lo tanto solo vamos a
crearla la primera ves, tambien tengan en cuenta que las llaves xxxx.pub de los demas servidores
tenemos que depositarlas en nuestro servidor dentro de “/var/lib/asterisk/keys”
Comandos básicos:
Iniciar, reiniciar y detener asterisk
/etc/init.d/asterisk start
/etc/init.d/asterisk restart
/etc/init.d/asterisk stop
Entrar en la consola de asterisk “CLI”y recargar la configuración:
asterisk -r
CLI> reload

Comprobar la conexión dundi entre servidores


CLI> dundi show peers
EID Host Port Model AvgTime Status
00:1d:60:60:bc:bc 192.168.159.78 (S) 4520 Symmetric Unavail OK (48 ms)
00:18:51:9d:1e:2a 192.168.159.168 (S) 4520 Symmetric Unavail OK (65 ms)
00:1e:8c:c8:28:1c 100.0.0.6 (S) 4520 Symmetric Unavail OK (52 ms)
86:c1:ea:b9:ef:af 192.168.31.53 (S) 4520 Symmetric Unavail OK (33 ms)
4 dundi peers [4 online, 0 offline, 0 unmonitored]
Hacer una consulta en busca de una extensión dundi
CLI> dundi lookup 8080100@dundi-ext
1. 0 IAX2/dundi:[email protected]/8080100 (EXISTS)
from 00:1d:60:60:bc:bc, expires in 3600 s
DUNDi lookup completed in 356 ms

CLI> dundi lookup 8060100@dundi-ext


1. 0 IAX2/dundi:[email protected]/8060100 (EXISTS)
from 00:18:51:9d:1e:2a, expires in 3600 s
DUNDi lookup completed in 85 ms

Comprobar la conexión con el servidor ldap


CLI> realtime show ldap status
Connected to 'ldap://192.168.159.18', baseDN ou=voip,dc=ucp,dc=ho,dc=rimed,dc=cu with username
cn=admin,dc=ucp,dc=ho,dc=rimed,dc=cu for 21 hours, 56 minutes, 50 seconds.

Mostrar la ayuda
CLI> core show help
! Execute a shell command
agent logoff Sets an agent offline
agent show Show status of agents
agent show online Show all online agents
agi dump html Dumps a list of AGI commands in HTML format
agi exec Add AGI command to a channel in Async AGI
agi set debug [on|off] Enable/Disable AGI debugging
agi show commands [topic] List AGI commands or specific help
...
Configuración LDAP:
/etc/asterisk/res_ldap.conf

[_general]
protocol= 3
url = ldap://ldap.ho.rimed.cu
basedn = ou=voip,dc=ucp,dc=ho,dc=rimed,dc=cu
user = cn=asterisk,dc=ucp,dc=ho,dc=rimed,dc=cu
pass = password

[sip]
name = cn
host = AstAccountHost
port = AstAccountPort
type = AstAccountType
context = AstAccountContext
callerid = AstAccountCallerID
fullcontact = AstAccountFullContact
useragent = AstAccountUserAgent
md5secret = AstAccountRealmedPassword
defaultuser = AstAccountDefaultUser
regseconds = AstAccountExpirationTimestamp
ipaddr = AstAccountIPAddress
lastms = AstAccountLastQualifyMilliseconds
additionalFilter=(objectClass=AsteriskSIPUser)

[voicemail]
mailbox = cn
context = AstVoicemailContext
password = AstVoicemailPassword
fullname = AstAccountCallerID
email = AstVoicemailEmail
pager = AstVoicemailPager
options = AstVoicemailOptions
additionalFilter = (objectClass=AsteriskVoiceMail)

/etc/asterisk/extconfig.conf

[settings]
sipusers => ldap,"ou=voip,dc=ucp,dc=ho,dc=rimed,dc=cu",sip
sippeers => ldap,"ou=voip,dc=ucp,dc=ho,dc=rimed,dc=cu",sip
voicemail => ldap,"ou=voip,dc=ucp,dc=ho,dc=rimed,dc=cu",voicemail
Ejemplos en ldif de extensiones:
Extension del contexto rimed con buzón de voz (voicemail)

dn: cn=8120112,ou=voip,dc=ucp,dc=ho,dc=rimed,dc=cu
cn: 8120112
objectClass: account
objectClass: top
objectClass: AsteriskExtension
objectClass: AsteriskSIPUser
objectClass: AsteriskVoiceMail
AstAccountName: 8120112
AstAccountType: friend
AstAccountHost: dynamic
AstAccountContext: rimed
AstAccountCallerID: Anibal Trutie
AstAccountRealmedPassword: {md5}password
AstVoicemailPassword: 9999
AstVoicemailContext: voicemail
AstVoicemailEmail: [email protected]
AstVoicemailOptions: attach=yes|delete=yes

Usuario del contexto local sin buzón de voz (voicemail)

dn: cn=8120113,ou=voip,dc=ucp,dc=ho,dc=rimed,dc=cu
cn: 8120112
objectClass: account
objectClass: top
objectClass: AsteriskExtension
objectClass: AsteriskSIPUser
AstAccountName: 8120113
AstAccountType: friend
AstAccountHost: dynamic
AstAccountContext: rimed
AstAccountCallerID: Usuario restringido
AstAccountRealmedPassword: {md5}password

Para generar el hash de las contraseñas lo hacemos de la siguiente forma:


echo -n "8120112:voip.ho.rimed.cu:password" | md5sum
b5e10b71b18e758a7f4bd067546e8753 -

La Sintaxis es <extension>:<dominio>:<password>

El usuario ldap “asterisk” tiene que tener permisos para modificar muchos de los atributos a los que
hace referencia el archivo anterior, le damos permiso en el la base donde se almacena el voip.
/etc/ldap/slapd.conf

access to attrs=AstAccountSecret,AstVoicemailPassword
by dn="cn=admin,dc=ucp,dc=ho,dc=rimed,dc=cu" write
by dn="cn=asterisk,dc=ucp,dc=ho,dc=rimed,dc=cu" write
by * none

access to dn.subtree="ou=voip,dc=ucp,dc=ho,dc=rimed,dc=cu"
by dn="cn=admin,dc=ucp,dc=ho,dc=rimed,dc=cu" write
by dn="cn=asterisk,dc=ucp,dc=ho,dc=rimed,dc=cu" write
by * read
Conexiones con servidores conocidos:
Las llaves rsa xxxx.pub de estos servidores estan publicadas en este Link
/etc/asterisk/dundi.conf

[86:c1:ea:b9:ef:af]
model = symmetric
host = voip.rimed.cu
inkey = voip.rimed.cu
outkey = voip.xx.rimed.cu
include = all
permit = all
qualify = yes

[00:18:51:17:e3:27]
model = symmetric
host = voip.ho.rimed.cu
inkey = voip.ho.rimed.cu
outkey = voip.xx.rimed.cu
include = all
permit = all
qualify = yes

[00:1e:8c:c8:28:1c]
model = symmetric
host = voip.ij.rimed.cu
inkey = voip.ij.rimed.cu
outkey = voip.xx.rimed.cu
include = all
permit = all
qualify = yes

[00:18:51:9d:1e:2a]
model = symmetric
host = voip.vc.rimed.cu
inkey = voip.vc.rimed.cu
outkey = voip.xx.rimed.cu
include = all
permit = all
qualify = yes

[00:1a:92:b4:52:7a]
model = symmetric
host = voip.sc.rimed.cu
inkey = voip.sc.rimed.cu
outkey = voip.xx.rimed.cu
include = all
permit = all
qualify = yes

[00:1d:60:60:bc:bc]
model = symmetric
host = voip.ss.rimed.cu
inkey = voip.ss.rimed.cu
outkey = voip.xx.rimed.cu
include = all
permit = all
qualify = yes
CONTINÚA DEBAJO
[00:26:18:34:b6:ef]
model = symmetric
host = voip.lt.rimed.cu
inkey = voip.lt.rimed.cu
outkey = voip.xx.rimed.cu
include = all
permit = all
qualify = yes

También podría gustarte