Como configurar el archivo SIP.conf, "Ejemplo de configuracion basica SIP.conf"
El archivo sip.conf contiene todo, absolutamente todo para configurar Asterisk con el protocolo SIP, sirve ademas para añadir nuevos usuarios o conectar con proveedores SIP.
un ejemplo básico del archivo sip.conf:
[general]
context=default
port=5060 ; Puerto UDP (en el que responderá el Asterisk)
bindaddr=0.0.0.0 ; (Si queremos especificar que Asterisk esté en una IP (si un equipo tiene 3 IPs por ej.) 0.0.0.0 funciona igual)
srvlookup=yes ; (Habilita servidor DNS SRV)
[skadjmovil] (Etiqueta del usuario)
type=friend
secret=welcome
qualify=yes ;(Tiempo de latencia no superior a 2000 ms)
nat=no ; (El telefono no usa NAT)
host=dynamic ; (El dispositivo se registra con una IP dinamica ó DHCP)
canreinvite=no ; (Asterisk por defecto trata de redirigir)
context=internal ; (El contexto que controla todo esto)
El fichero sip.conf comienza con una sección [general] que contiene la configuración por defecto de todos los usuarios y "peers" (proveedores). Se puede sobreescribir los valores por defecto en las configuraciones de cada usuario o peer.
Los servidores SIP escuchan en el puerto 5060 UDP. Por tanto configuramos port=5060. Si llegamos o si utilizamos SER (Sip Express Router) con Asterisk es necesario cambiar este puerto.
DNS es una forma de configurar una dirección lógica para que pueda ser resuelta. Esto permite que las llamadas sean enviadas a diferentes lugares sin necesidad de cambiar la dirección lógica. Usando el DNS SRV se ganan las ventajas del DNS mientras que deshabilitandolo no es posible enrutar llamadas en base a nombre de dominios. Conviene tenerlo activado, por tanto se pone la directiva srvlookup=yes
Cada extensión está definida por un user o usuario, un peer o proveedor o un friend o amigo y viene definida con un nombre entre corchetes [].
El tipo (type) "user" se usa para autenticar llamadas entrantes, "peer" para llamadas salientes y "friend" para ambas. En nuestro caso hemos definido una extensión pedro como "friend". Puede realizar y recibir llamadas.
Secret es la contraseña usada para la autenticación. En este caso será "welcome".
Se puede monitorizar la latencia entre el servidor Asterisk y el telefono con qualify=yes para determinar cuando el dispositivo puede ser alcanzado En este caso Asterisk considera por defecto que que un dispositivo está presente si su latencia es menor de 2000 ms (2 segundos). Se puede cambiar este valor poniendo el numero de milisegundos en vez de yes.
Si una extensión está detrás de un dispositivo que realiza NAT (Network Address Translation) como un router o firewall se puede configurar nat=yes para forzar a Asterisk a ignorar el campo información de contacto y usar la dirección desde la que vienen los paquetes.
Si ponemos host=dynamic quiere decir que el telefono se podrá conectar desde cualquier dirección IP. Podemos limitar a que dicho usuario solo pueda acceder con una IP o con un nombre de dominio. Si ponemos host=static no haría falta que el usuario se registrará con la contraseña proporcionada en "secret",
También se ha puesto canreinvite=no. En SIP los invites se utilizan para establecer llamadas y redirigir el audio o video. Cualquier invite después del invite inicial en la misma conversación se considera un reinvite.
Cuando dos usuarios han establecido la comunicación con canreinvite= yes (por defecto) los paquetes RTP de audio podrían ser enviados extremo a extremo sin pasar por el servidor Asterisk. Esto, normalmente, no suele ser conveniente en casos en los que haya NAT en alguno de los clientes. (NAT=yes).
Usando canreinvite=no se fuerza a Asterisk a estar en medio no permitiendo que los puntos finales intercambien mensajes RTP directamente.
De todos modos, existen numerosas condiciones en que Asterisk no permite el reinvite a pesar de que no pongamos esta condición ya que necesita controlar el flujo RTP. Por ejemplo: Si los clientes usan codecs diferentes, si hay opciones de Music On hold o temporizadores en la llamada, etc ...
Por último context=internal indica el contexto donde está las instrucciones para dicha extensión. Esto está relacionado con el contexto del archivo extensions.conf que marca el plan de numeración para ese contexto. Por tanto el contexto internal debe existir en el fichero extensions.conf o de lo contrario deberiamos crearlo. Varios extensiones pueden tener el mismo contexto.
Opciones avanzadas:
En las siguientes columnas tenemos las posibilidades de configuración para los tipos "user" y "peer". En el caso de "friend" valen las dos tablas ya que un "friend" es a la vez ambos
User Peer Explicación y opciones
context context Indica el contexto asociado en el dialplan para un usuario o peer
permit permit Permitir una IP
deny deny No permitir una IP
secret secret Contraseña para el registro
md5secret md5secret Contraseña encriptada con md5
dtmfmode dtmfmode El modo en el que se transmiten los tonos. Pueden ser "RFC2833" o "INFO"
canreinvite canreinvite Con "no" se fuerza a Asterisk a no permitir que los puntos finales intercambien mensajes RTP directamente.
nat nat Indica si el dispositivo está detrás de un NAT con "yes"
callgroup callgroup Define un grupo de llamadas
pickupgroup pickupgroup Define el grupo de llamadas validas para una aplicacion pickup()
language language Define las señales para un pais. Debe estar presente en el archivo indications.conf
allow allow permite habilitar un codec. Pueden ponerse varios en un mismo usuario Posibles Valores:
"allow=all" ,"allow=alaw", "allow=ulaw", "allow=g723.1" ; allow="g729" , "allow=ilbc" , "allow=gsm".
disallow disallow permite deshabilitar un codec. Puede tomar los mismos valores que allow
insecure insecure Define como manejar las conexiones con peers Tiene los siguientes valores very|yes|no|invite|port Por defecto es "no" que quiere decir que hay que autenticarse siempre.
trustpid trustpid Si la cabecera Remote-Party-ID es de confianza. Por defecto "no"
progressinband progressinband Si se deben generar señales en banda siempre. Por defecto never
promiscredir promiscredir Permite soportar redirecciones 302. Por defecto "no"
callerid Define el identificador cuando no hay ninguna otra informacion disponible
accountcode Los usuarios pueden estar asociados con un accountcode . Se usa para facturacion.
amaflags Se usa para guardar en los CDR y temas de facturación . Puede ser "default", "omit", "billing", o "documentation"
incominglimit Limite de llamadas simultaneas para un cliente
restrictcid Se usa para esconder el ID del llamante. Anticuada y en desuso
mailbox Extensión del contestador
username Si Asterisk actua como cliente SIP este es el nombre de usuario que presenta en el servidor SIP al que llama
fromdomain Pone el campo From: de los mensajes SIP
regexten
fromuser Pone el nombre de usuario en el from por encima de lo que diga el callerID
host dirección o host donde se encuentra el dispositivo remoto. Puede tomar valores:
- Una IP o un host concreto
- "dynamic" con lo que valdría cualquier IP pero necesita contraseña
- "static" vale cualquier IP pero no es necesario contraseña
mask
port Puerto UDP en el que responderá el Asterisk
qualify Para determinar cuando el dispositivo puede ser alcanzado
defaultip IP por defecto del cliente host= cuando es especificado como "dynamic"
rtptimeout Termina la llamada cuando llega a ese timeout si no ha habido tráfico rtp
rtpholdtimeout Termina la llamada cuando llega a ese timeout si no ha habido tráfico rtp "on hold"
Ejemplos:
[grandstream1]
type=friend ; es peer y user a la vez
context=micontexto ; nombre del contexto
username=grandstream1 ; suele ser el mismo que el titulo de la seccion
fromuser=grandstream1 ; sobreescribe el callerid
callerid=Jose Dos<1234>
host=192.168.0.23 ; se tiene una IP privada dentro de una LAN
nat=no ; no hay NAT
canreinvite=yes ;
dtmfmode=info ; puede ser RFC2833 o INFO
mailbox=1234@default ; mailbox 1234 en el contexto "default" del fichero voicemail.conf
disallow=all ; deshabilitamos todo
allow=ulaw ; Permitimos el codec ulaw
; listed with allow= does NOT matter!
;allow=alaw
;allow=g723.1 ; Asterisk solo soporta g723.1 a través
;allow=g729 ; Licencia g729 sól a través
[xlite1]
;Se puede activar la supresión de silencio
;Xlite manda paquetes NAT keep-alive, por tanto qualify=yes no es necesario
type=friend
username=xlite1
callerid="juan Perez " <5678>
host=dynamic ; el softphone xlite puede estar en cualquier IP
nat=yes ; X-Lite está detrás de un dispositivo NAT
canreinvite=no ; Se suele poner NO si está detrás de un dispositivo que hace NAT
disallow=all
allow=gsm ; GSM consume menos ancho de banda que alaw o ulaw
allow=ulaw
allow=alaw
[user1_snomsip]
type=friend
secret=blah ; en este caso es la contraseña para registrarse
host=dynamic
dtmfmode=inband ; las posibilidades son inband (en banda), rfc2833, o info
defaultip=192.168.0.59 ; la IP del dispositivo
mailbox=1234; Contestador para mensajes
disallow=all
allow=ulaw ; dado que se ha elegido en banda (inband) para el dtmf se debe seleccionar alaw o ulaw (G.711)
allow=alaw
[user2_pingtel]
type=friend
username=user2_pingtel
secret=blah
host=dynamic
qualify=1000 ; Se considera caido si pasa más de 1 segundo sin contestar
callgroup=1,3-4 ; Es miembro de los grupos 1,3 y 4
pickupgroup=1,3-4 ; Se puede hacer un "pickup" para los grupos 1,2 y 4
defaultip=192.168.0.60 ;IP
disallow=all
allow=ulaw
allow=alaw
allow=g729
[user3_cisco]
type=friend
username=user3_cisco
secret=blah
nat=yes ; El telefono está nateado
host=dynamic
canreinvite=no ;
qualify=200 ; Tiempo de 200 ms para recibir respuesta
defaultip=192.168.0.4
disallow=all
allow=ulaw
allow=alaw
allow=g729
[user4_cisco1]
type=friendusername=user4_cisco
fromuser=pedro ;
secret=blah
defaultip=192.168.0.4 ;
amaflags=default ; Las posibilidades son default, omit, billing o documentation
accountcode=pedro ; Para propósitos de tarificación
disallow=all
allow=ulaw
allow=alaw
allow=g729
allow=g723.1
un ejemplo básico del archivo sip.conf:
[general]
context=default
port=5060 ; Puerto UDP (en el que responderá el Asterisk)
bindaddr=0.0.0.0 ; (Si queremos especificar que Asterisk esté en una IP (si un equipo tiene 3 IPs por ej.) 0.0.0.0 funciona igual)
srvlookup=yes ; (Habilita servidor DNS SRV)
[skadjmovil] (Etiqueta del usuario)
type=friend
secret=welcome
qualify=yes ;(Tiempo de latencia no superior a 2000 ms)
nat=no ; (El telefono no usa NAT)
host=dynamic ; (El dispositivo se registra con una IP dinamica ó DHCP)
canreinvite=no ; (Asterisk por defecto trata de redirigir)
context=internal ; (El contexto que controla todo esto)
El fichero sip.conf comienza con una sección [general] que contiene la configuración por defecto de todos los usuarios y "peers" (proveedores). Se puede sobreescribir los valores por defecto en las configuraciones de cada usuario o peer.
Los servidores SIP escuchan en el puerto 5060 UDP. Por tanto configuramos port=5060. Si llegamos o si utilizamos SER (Sip Express Router) con Asterisk es necesario cambiar este puerto.
DNS es una forma de configurar una dirección lógica para que pueda ser resuelta. Esto permite que las llamadas sean enviadas a diferentes lugares sin necesidad de cambiar la dirección lógica. Usando el DNS SRV se ganan las ventajas del DNS mientras que deshabilitandolo no es posible enrutar llamadas en base a nombre de dominios. Conviene tenerlo activado, por tanto se pone la directiva srvlookup=yes
Cada extensión está definida por un user o usuario, un peer o proveedor o un friend o amigo y viene definida con un nombre entre corchetes [].
El tipo (type) "user" se usa para autenticar llamadas entrantes, "peer" para llamadas salientes y "friend" para ambas. En nuestro caso hemos definido una extensión pedro como "friend". Puede realizar y recibir llamadas.
Secret es la contraseña usada para la autenticación. En este caso será "welcome".
Se puede monitorizar la latencia entre el servidor Asterisk y el telefono con qualify=yes para determinar cuando el dispositivo puede ser alcanzado En este caso Asterisk considera por defecto que que un dispositivo está presente si su latencia es menor de 2000 ms (2 segundos). Se puede cambiar este valor poniendo el numero de milisegundos en vez de yes.
Si una extensión está detrás de un dispositivo que realiza NAT (Network Address Translation) como un router o firewall se puede configurar nat=yes para forzar a Asterisk a ignorar el campo información de contacto y usar la dirección desde la que vienen los paquetes.
Si ponemos host=dynamic quiere decir que el telefono se podrá conectar desde cualquier dirección IP. Podemos limitar a que dicho usuario solo pueda acceder con una IP o con un nombre de dominio. Si ponemos host=static no haría falta que el usuario se registrará con la contraseña proporcionada en "secret",
También se ha puesto canreinvite=no. En SIP los invites se utilizan para establecer llamadas y redirigir el audio o video. Cualquier invite después del invite inicial en la misma conversación se considera un reinvite.
Cuando dos usuarios han establecido la comunicación con canreinvite= yes (por defecto) los paquetes RTP de audio podrían ser enviados extremo a extremo sin pasar por el servidor Asterisk. Esto, normalmente, no suele ser conveniente en casos en los que haya NAT en alguno de los clientes. (NAT=yes).
Usando canreinvite=no se fuerza a Asterisk a estar en medio no permitiendo que los puntos finales intercambien mensajes RTP directamente.
De todos modos, existen numerosas condiciones en que Asterisk no permite el reinvite a pesar de que no pongamos esta condición ya que necesita controlar el flujo RTP. Por ejemplo: Si los clientes usan codecs diferentes, si hay opciones de Music On hold o temporizadores en la llamada, etc ...
Por último context=internal indica el contexto donde está las instrucciones para dicha extensión. Esto está relacionado con el contexto del archivo extensions.conf que marca el plan de numeración para ese contexto. Por tanto el contexto internal debe existir en el fichero extensions.conf o de lo contrario deberiamos crearlo. Varios extensiones pueden tener el mismo contexto.
Opciones avanzadas:
En las siguientes columnas tenemos las posibilidades de configuración para los tipos "user" y "peer". En el caso de "friend" valen las dos tablas ya que un "friend" es a la vez ambos
User Peer Explicación y opciones
context context Indica el contexto asociado en el dialplan para un usuario o peer
permit permit Permitir una IP
deny deny No permitir una IP
secret secret Contraseña para el registro
md5secret md5secret Contraseña encriptada con md5
dtmfmode dtmfmode El modo en el que se transmiten los tonos. Pueden ser "RFC2833" o "INFO"
canreinvite canreinvite Con "no" se fuerza a Asterisk a no permitir que los puntos finales intercambien mensajes RTP directamente.
nat nat Indica si el dispositivo está detrás de un NAT con "yes"
callgroup callgroup Define un grupo de llamadas
pickupgroup pickupgroup Define el grupo de llamadas validas para una aplicacion pickup()
language language Define las señales para un pais. Debe estar presente en el archivo indications.conf
allow allow permite habilitar un codec. Pueden ponerse varios en un mismo usuario Posibles Valores:
"allow=all" ,"allow=alaw", "allow=ulaw", "allow=g723.1" ; allow="g729" , "allow=ilbc" , "allow=gsm".
disallow disallow permite deshabilitar un codec. Puede tomar los mismos valores que allow
insecure insecure Define como manejar las conexiones con peers Tiene los siguientes valores very|yes|no|invite|port Por defecto es "no" que quiere decir que hay que autenticarse siempre.
trustpid trustpid Si la cabecera Remote-Party-ID es de confianza. Por defecto "no"
progressinband progressinband Si se deben generar señales en banda siempre. Por defecto never
promiscredir promiscredir Permite soportar redirecciones 302. Por defecto "no"
callerid Define el identificador cuando no hay ninguna otra informacion disponible
accountcode Los usuarios pueden estar asociados con un accountcode . Se usa para facturacion.
amaflags Se usa para guardar en los CDR y temas de facturación . Puede ser "default", "omit", "billing", o "documentation"
incominglimit Limite de llamadas simultaneas para un cliente
restrictcid Se usa para esconder el ID del llamante. Anticuada y en desuso
mailbox Extensión del contestador
username Si Asterisk actua como cliente SIP este es el nombre de usuario que presenta en el servidor SIP al que llama
fromdomain Pone el campo From: de los mensajes SIP
regexten
fromuser Pone el nombre de usuario en el from por encima de lo que diga el callerID
host dirección o host donde se encuentra el dispositivo remoto. Puede tomar valores:
- Una IP o un host concreto
- "dynamic" con lo que valdría cualquier IP pero necesita contraseña
- "static" vale cualquier IP pero no es necesario contraseña
mask
port Puerto UDP en el que responderá el Asterisk
qualify Para determinar cuando el dispositivo puede ser alcanzado
defaultip IP por defecto del cliente host= cuando es especificado como "dynamic"
rtptimeout Termina la llamada cuando llega a ese timeout si no ha habido tráfico rtp
rtpholdtimeout Termina la llamada cuando llega a ese timeout si no ha habido tráfico rtp "on hold"
Ejemplos:
[grandstream1]
type=friend ; es peer y user a la vez
context=micontexto ; nombre del contexto
username=grandstream1 ; suele ser el mismo que el titulo de la seccion
fromuser=grandstream1 ; sobreescribe el callerid
callerid=Jose Dos<1234>
host=192.168.0.23 ; se tiene una IP privada dentro de una LAN
nat=no ; no hay NAT
canreinvite=yes ;
dtmfmode=info ; puede ser RFC2833 o INFO
mailbox=1234@default ; mailbox 1234 en el contexto "default" del fichero voicemail.conf
disallow=all ; deshabilitamos todo
allow=ulaw ; Permitimos el codec ulaw
; listed with allow= does NOT matter!
;allow=alaw
;allow=g723.1 ; Asterisk solo soporta g723.1 a través
;allow=g729 ; Licencia g729 sól a través
[xlite1]
;Se puede activar la supresión de silencio
;Xlite manda paquetes NAT keep-alive, por tanto qualify=yes no es necesario
type=friend
username=xlite1
callerid="juan Perez " <5678>
host=dynamic ; el softphone xlite puede estar en cualquier IP
nat=yes ; X-Lite está detrás de un dispositivo NAT
canreinvite=no ; Se suele poner NO si está detrás de un dispositivo que hace NAT
disallow=all
allow=gsm ; GSM consume menos ancho de banda que alaw o ulaw
allow=ulaw
allow=alaw
[user1_snomsip]
type=friend
secret=blah ; en este caso es la contraseña para registrarse
host=dynamic
dtmfmode=inband ; las posibilidades son inband (en banda), rfc2833, o info
defaultip=192.168.0.59 ; la IP del dispositivo
mailbox=1234; Contestador para mensajes
disallow=all
allow=ulaw ; dado que se ha elegido en banda (inband) para el dtmf se debe seleccionar alaw o ulaw (G.711)
allow=alaw
[user2_pingtel]
type=friend
username=user2_pingtel
secret=blah
host=dynamic
qualify=1000 ; Se considera caido si pasa más de 1 segundo sin contestar
callgroup=1,3-4 ; Es miembro de los grupos 1,3 y 4
pickupgroup=1,3-4 ; Se puede hacer un "pickup" para los grupos 1,2 y 4
defaultip=192.168.0.60 ;IP
disallow=all
allow=ulaw
allow=alaw
allow=g729
[user3_cisco]
type=friend
username=user3_cisco
secret=blah
nat=yes ; El telefono está nateado
host=dynamic
canreinvite=no ;
qualify=200 ; Tiempo de 200 ms para recibir respuesta
defaultip=192.168.0.4
disallow=all
allow=ulaw
allow=alaw
allow=g729
[user4_cisco1]
type=friendusername=user4_cisco
fromuser=pedro ;
secret=blah
defaultip=192.168.0.4 ;
amaflags=default ; Las posibilidades son default, omit, billing o documentation
accountcode=pedro ; Para propósitos de tarificación
disallow=all
allow=ulaw
allow=alaw
allow=g729
allow=g723.1
Hola, le felicito por su gran aporte con respecto a este tema y por compartir conocimiento... Estoy en proceso de aprendizaje del uso de asterisk y me gustaria profundizar en el tema y por eso aprovecho a solicitarle si tiene una guia donde se pueda aprender mas del lenguaje de programacion de asterisk ya que tiene opciones y sintaxis propias que hay que manejas si se quiere aprender bien. Bueno me despido y le agradezco de antemano cualquier aporte con respecto a la solicitud.
ResponderEliminar