Provisionamiento automático de Linksys PAP2 y Sipura SPA-2000

Actualización 28-04-2008: He sacado un nuevo script para provisionamiento de teléfonos SPA-9xx, aunque también sirve para los PAP2, y otros dispositivos de Linksys y Sipura.

Actualizacion: Echad un vistazo a este anuncio

Si solamente gestionas uno o dos adaptadores, no hay gran problema… pero imagínate una instalación con cantidades considerables… ¿Cómo gestionar la configuración de todos esos dispositivos, sin tener que entrar por web en cada uno de ellos y repetir los mismos pasos?

En su configuración por defecto, o después de un reset (marcando ****, seguido de la palabra RESET (73738), y confirmando con 1), el dispositvo realiza las siguientes acciones:

  1. Intenta obtener una direccion mediante DHCP. En la respuesta, el servidor puede suministrar más parámetros, además de la propia dirección IP. Por ejemplo, el servidor TFTP.
  2. Si obtiene información de dicho servidor TFTP, intentará descargarse el fichero /init.cfg. Este archivo contiene la primera parte del aprovisionamiento. En él, especificaremos la URL de donde tiene que descargarse la configuración definitiva. Sera de la forma http://servidor/ruta/config-$MA.php.
  3. Posteriormente se descarga la configuración de la URL indicada, con la salvedad de que sustituye $MA por la dirección mac propia. De esta forma podremos identificarlos, y darles una configuración única a cada uno.

Para llegar a este punto, necesitamos:

  • Un servidor DHCP.
  • Un servidor TFTP, con su fichero init.cfg.
  • Un servidor Web.
  • Scripts en PHP (por ejemplo) que generen la configuración para cada dispositivo.

Configuración del servidor DHCP

Vamos a suponer que estamos trajando en la red 192.168.0.XXX. El rango de direcciones que asignaremos a los clientes será del 192.168.0.100 al 192.168.0.200. El servidor (Asterisk, NTP, DHCP) estará en 192.168.0.1

Editamos /etc/dhcpd.conf

default-lease-time 600;
max-lease-time 600;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option routers 192.168.0.254;
option domain-name-servers 80.58.0.33,80.58.32.97;
option domain-name      "asterisk.pbx";
option nntp-server      192.168.0.1;
ddns-update-style ad-hoc;
option tftp-server-name = "192.168.0.1";

subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.100 192.168.0.200;
host ATA1 {
hardware ethernet 00:12:17:11:22:33;
fixed-address 192.168.0.20;
}
}

Las entradas host dentro de subnet no son necesarias, pero es muy útil asignar direcciones específicas a cada ATA, para tenerlos siempre localizados. Como veis, especificamos la dirección MAC del dispositivo, y la dirección IP que va a tener. Esta última no tiene por qué estar dentro del rango (100-200)

Reiniciamos el servicio y comprobamos que funcione. En /var/lib/dhcp/dhcp.leases irán apareciendo las direcciones que va asignando el servidor.

Configuración del servidor TFTP

En realidad requiere poca configuración. En general vienen configurados por la distribución para servir los ficheros desde /tftpboot/. Ahi es donde crearemos nuestro fichero init.cfg, el primero que obtendrán los ATA.

init.cfg

<flat-profile>

<Profile_Rule ua="na">http://192.168.0.1/config/pap2.php?mac=$MA</Profile_Rule>
<Resync_Periodic ua="na">10</Resync_Periodic>
<Resync_Error_Retry_Delay ua="na">10</Resync_Error_Retry_Delay>
<Resync_Fails_On_FNF ua="na">Yes</Resync_Fails_On_FNF>

</flat-profile>

El parámetro “Profile_Rule” indica al dispositivo de dónde descargarse la configuración. El resto de opciones nos aseguran que se descargará “pronto” esa configuración, menos de 10 segundos, para que estén disponibles lo antes posible.

Configuración del servidor Web

No voy a entrar en detalles en este punto. Necesitamos habilitar el soporte PHP en el servidor. Supondremos que los documentos están en /var/www/html

Scripts

Aquí está el meollo de la cuestión. El script pap2.php genera la configuración en formato XML. Lo hace en dos pasos:

  1. Lee los valores generales, que se aplican a todos los dispositivos.
  2. Lee los valores específicos, según la MAC. Estos son generalmente los datos de autenticación (usuario, contraseña, …). Estos valores sobreescriben los generales.
  3. Genera el fichero de configuración final.

Colgamos el fichero pap2.php para que esté disponible a los clientes. Lo pondremos en /var/www/html/config/. Por defecto, este script buscará los ficheros de configuración en /etc/linksys/. Para cambiarlos, tendréis que editar el fichero y cambiar esta linea:

$configdir="/etc/linksys/";

En /etc/linksys/pap2-default.cfg tendremos la configuración global

En /etc/linksys/pap2-001217112233.cfg tendremos la configuración específica para el dispositivo con direccion MAC=00:12:17:11:22:33.

Los ficheros de configuracion

El fichero esta compuesto por lineas. Cada linea corresponde a un parametro y su valor, separado por los dos puntos (:). El valor es el mismo que pondríais en el interfaz web.

En el fichero pap2-defaultcfg están reflejados todos los parametros que se ven en el interfaz web, administración (advanced view). Seguramente haya más parámetros, pero no tengo acceso a ninguna documentación al respecto. Esta información no es accesible a todo el público, sino que tienes que ser un gran proveedor de voz sobre ip (por ejemplo Vonage, que vende ATA’s de LinkSys que solo funcionan con su servicio).

He definido una serie de parámetros por defecto:

Provision_Enable:Yes
Resync_On_Reset:Yes
Resync_Random_Delay:2
Resync_Periodic:600
Resync_Error_Retry_Delay:100
Forced_Resync_Delay:3600

Estos parametros controlan la frecuencia con la que los dispositivos buscan cambios en la configuración. En general, si la última descarga fue correcta, cada 10 minutos, y si hubo algun error, cada minuto y medio más o menos (100segundos).

En el nombre del parámetro, todos los espacios se sustituyen por guión bajo (_). Además, si es un parámetro específico para una línea (Linea 1/Linea 2), se le añade al final _1_ o _2_. Por ejemplo: SIP_Port_1_:5061

Es necesario que estén presentes tanto el fichero global como el específico para que la configuración se genere correctamente

Descargar

Version v1.0 (29-11-2005): sipura-provisioning-v10tar.gz (4Kb)

Escrito por julianjm el 18/12/2005. |
Tags:

28 Comments »

  1. pap2 no funciona
    Vivo en suecia ,alli configure el pap2 y va de maravilla,en principio deberia funcionar en cualquier parte del mundo con tan solo conectarlo a cualquir banda ancha o no?
    Pues bien me he trasladado a España , aqui lo conecto y no pasa nada,estoy en casa de un amigo que tiene un aparato para recibir internet no se si es un modem o que.. esto es un motorola SB 5100 la red viene por la conexion de la tele y tiene un puerto libre para el PAP2

    Hice un reset al PAP2 recibo la IP via ****110# y no encuentra la direccion en la red para configurarlo. Que puedo hacer?

    Comment by jairo SPAIN — 7 August 2006 @ 1:17

  2. DHCP
    Hola Jairo,

    Lo que me parece es que el router de tu amigo no tiene un servidor de DHCP habilitado.

    Tienes dos opciones:

    1) Activar DHCP en el router

    2) Revisar la configuración de su ordenador, averiguar qué red está usando (192.168.0.0, por ejemplo), y configura de forma manual el PAP2 (no recuerdo ahora mismo los códigos a introducir) con una IP que no esté en uso. (Dirección IP, máscara de red, gateway).

    Julián J. Menéndez

    Comment by julianjm SPAIN — 8 August 2006 @ 12:32

  3. Linksys
    Hola de que forma se le puede poner al un equipo linksysque en ves de buscar el init.cfg en /init.cfg lo haga en una direccion especifica

    tftp://algo.com/config/init.cfg

    y que por mas que se lo resetee eso quede guardado

    Comment by Desconocido ARGENTINA — 13 September 2006 @ 0:57

  4. init.cfg
    Si lo averiguas avisa jeje.

    Seguramente se pueda, pero esa información no la pone linksys al alcance de cualquiera, sino de sus mejores clientes (lease vonage).

    Julián J. Menéndez

    Comment by julianjm SPAIN — 15 September 2006 @ 10:32

  5. actualizacion
    Julian la ultima actualizacion ya fue en noviembre del año pasado, no hay algo nuevo mas…?????

    buen articulo

    Comment by Desconocido PERU — 15 September 2006 @ 18:19

  6. actualizacion?
    Qué echas en falta, quien quiera que seas ;)

    Julián J. Menéndez

    Comment by julianjm SPAIN — 26 September 2006 @ 14:20

  7. Static IP
    Hola Julian.
    Lo primero de todo, enhorabuena por tu trabajo y gracias por compartirlo.
    En relación con la ip que se asigna al PAP2, ¿se podría establecer dicha ip en el fichero de configuración correspondiente?, en vez de usar un DHCP.
    Por ejemplo, la configuración del PAP2 con la MAC 001217112233, tendría el fichero de configuración pap2-001217112233.cfg con el siguiente contenido:

    Proxy_1_:192.168.0.1
    Display_Name_1_:Julian
    User_ID_1_:201
    Password_1_:passforext201
    Static_IP:192.168.0.23

    ¿Se asignaría de esta manera la IP estática?
    ¿Habría que añadir algo para desactivar el dhcp? (desconozco la sintaxis, DHCP:off)

    Un saludo

    Comment by aalmodovar SPAIN — 29 September 2006 @ 12:10

  8. Pequeña modificacion
    Deberias cambiar la opcion de DHCP para que no la tomara. Si se deja activada, aunque le indiques una IP de forma manual, prevalece el DHCP. Solo te faltaria añadir la linea siguiente:

    DCHP:no

    El resto de los parametros parece que estan correctos, aunque te recomiendo que le añadas la puerta de enlace (Gateway), la mascara de subred (NetMask) y las DNS (Primary_DNS y Secondary_DNS).

    Un saludo!

    Comment by Santi SPAIN — 2 October 2006 @ 9:13

  9. Pequeño problema en pap2-default.cfg
    Hola! Quería comentar un pequeño fallo que he encontrado en el fichero de configuración por defecto (pap2-default.cfg).

    El fallo es que hay muchos parámetros que están duplicados. Es decir, un mismo parámetro aparece en dos ocasiones, y esto ocurre bastantes veces.

    Esto provoca lo siguiente: la primera vez que aparece el parámetro se le asigna un valor, pero la segunda vez que aparece, al estar en blanco, “elimina” el valor introducido anteriormente, quedando el parámetro con la configuración por defecto.

    He intentado eliminar los duplicados, pero es una locura repasar las más de 850 lineas que tiene en principio (y diría que sobran, al menos, 200 líneas). Si alguien sabe como simplificar el proceso, le estaré muy agradecido.

    Un saludo y gracias!

    Comment by vanquish SPAIN — 2 October 2006 @ 9:31

  10. Falta añadir un par de cosas
    Hola. En principio esa configuración que indicas parece correcta. Solo falta añadir la siguiente línea:

    DHCP:no

    Si no se añade, el DCHP queda activado por defecto, superponiendo su configuración a la manual. También te recomiendo añadir la puerta de enlace (Gateway), la máscara de subred (NetMask) y las DNS (Primary_DNS y Secondary_DNS).

    Un saludo!

    Comment by vanquish SPAIN — 2 October 2006 @ 9:34

  11. error duplicados
    Hola Vanquish,

    Es cierto, acabo de mirar y existen varios duplicados… En cuanto tenga un rato lo corrijo (además estoy de mudanza y aún no tengo ADSL en casa).

    Gracias!

    Julián J. Menéndez

    Comment by julianjm SPAIN — 4 October 2006 @ 11:23

  12. Ahora una duda
    Hola de nuevo! Tambien he visto una pequeña particularidad que no se como solventar. Si en el fichero de configuracion por defecto (pap2-default.cfg) se le indica una nueva direccion de provisionamiento del tipo http://direccion_ip/pap2.php?mac=MA al mirar la configuracion a traves de la web, solo aparece el http y nada mas. Hay que poner la direccion de alguna forma en especial?

    En cuanto a los duplicados, si me orientas puedo tratar de adelantar algo de trabajo.

    Un saludo y gracias!

    Comment by vanquish SPAIN — 24 October 2006 @ 11:24

  13. Cierto… de momento prueba
    Cierto… de momento prueba a utilizar %3D en lugar del caracter :

    Julián J. Menéndez

    Comment by julianjm SPAIN — 25 October 2006 @ 14:33

  14. No funciona
    He probado a ponerlo como me has comentado, pero lo coge tal cual y no funciona. La unica solucion que he encontrado de momento es poner la direccion sin el “http://”. Por si sirve de algo, el servidor lo tengo bajo Linux y el editor que suelo utilizar es el VI.

    Un saludo!

    Comment by vanquish SPAIN — 31 October 2006 @ 11:05

  15. Para eliminar rapidamente
    Para eliminar rapidamente los duplicados se puede hacer:
    cat pap2-default.cfg | sort |uniq

    y te devuelve solo los no repetidos

    Saludos

    Comment by Desconocido SPAIN — 1 December 2006 @ 13:31

  16. Ser arregla fácilmente
    Ser arregla fácilmente con:

    cat pap2-default.cfg | sort | uniq

    Comment by Desconocido SPAIN — 1 December 2006 @ 14:00

  17. bug in
    Hi, I have tested this program but in php 5.0 dont work. I solved this problem using php 4.0. :)

    Comment by Alex de Oliveira Silva BRAZIL — 4 December 2006 @ 13:44

  18. Julian, el link al archivo no funciona, lo puedes reparar,, gracias..

    Saludos

    Comment by alou CHILE Windows XP Internet Explorer 6.0 — 2 February 2007 @ 14:14

  19. Solucionado. Gracias por el aviso.

    Comment by julianjm SPAIN Windows XP Mozilla Firefox 2.0.0.1 — 2 February 2007 @ 19:02

  20. Jarr!!!! enhorabuena por este pedazo de post que me ha salvado muchas horas de curro!!!

    Tremendo de verdad mil gracias.

    Os pego los cambios que le he puesto al default para la configuración española que me ha dado bastante, pero bastante curro:

    Dial_Tone:425@-19;10(*/0/1)
    Busy_Tone:425@-19;10(.48/.48/1)
    Ring_Back_Tone:425@-19;*(1/4/1)
    Ring_Waveform:Sinusoid
    Ring_Frequency:35
    Ring_Voltage:70
    Hook_Flash_Timer_Min:.07
    básicamente es para que se oiga al descolgar como en españa y no como en usa, para que al hacer ring-ring suene como debe y no como si fuera tartaja y para que funcione la R.
    De paso también viene bien menter el proxy en el default, para no tener que repetirlo en todos los ficheritos de cada pap:
    Proxy_1_:192.168.0.189
    Proxy_2_:192.168.0.189

    y aqui va mi dial plan, para usar en españa, el *8 para el pickup de asterisk, y sin marcar 0 para llamar fuera.
    Dial_Plan_1_:([6-9]xxxxxxxx|112S0|0xx|118xx|00xxxxxxxx.|*xx|xx|1xxx|*8S0)
    Dial_Plan_2_:([6-9]xxxxxxxx|112S0|0xx|118xx|00xxxxxxxx.|*xx|xx|1xxx|*8S0)

    Comment by millaguie SPAIN Ubuntu Linux Mozilla Firefox 1.5.0.9 — 13 March 2007 @ 18:19

  21. Gracias millaguie por las sugerencias ;)

    Comment by julianjm SPAIN Windows XP Mozilla Firefox 2.0.0.2 — 13 March 2007 @ 20:28

  22. Hola, buscando por la web llege a este sitio, muy interesante, pero algo no tengo bien en claro ya que mi caso es el siguiente:

    Tengo un Linksys Pap2-VN, cual quisiera poder bloquearlo pero no quisiera con un archivo xml ya que a sido utilizado anteriormente y han desbloqueado mis equipos, bueno quisiera ahora probar con un archivo .cfg, pero no encuentro los parametros exactos de configuracion para saber donde puedo colocarle la clave al user. Osea solo yo quisiera ver los parametros de como crear, espero su ayuda muchas gracias.

    Comment by Jose Moreno PERU Windows XP Internet Explorer 6.0 — 25 July 2007 @ 22:35

  23. Si alguien me puede ayudar, soy de colombia y un PAP2 que habia configurado hace un par de meses, esta ahora con el siguiente problema, haber si me ayudan, el led de encendido se encuentra titiliando de color rojo, el otro led de la Banda ancha esta encendido de verde, le pido la direccion IP por ****110# y no arroja nada, es decir, me es imposible entrar a ese equipo…

    Gracias por si me desean ayudar

    Comment by Daniel Peláez COLOMBIA Windows Vista Mozilla Firefox 2.0.0.6 — 16 September 2007 @ 21:11

  24. Cuando hice provisioning a 5 equipos linksys pap2 les cuento que 2 equipos se me bloquearon por completo y cuando los enciendo el led de power se queda en rojo y no inicializa.

    Gracias,

    Comment by Javier Sauma Q BOLIVIA Windows XP Internet Explorer 7.0 — 31 March 2008 @ 20:23

  25. Javier, no puedes reiniciarlos? Marcando **** desde el teléfono, y luego pulsando RESET (73738)…

    Comment by julianjm SPAIN Ubuntu Linux Mozilla Firefox 2.0.0.12 — 6 April 2008 @ 8:45

  26. hola yo tengo un problemita, trabajo con linsksys pap2, para llamadas a celualr en colombia y tasmbien llamadas nacionales e internacionales, pero con las llamadas a celular tengo un problemita, cuando uno marca timbra y timbra, y no reconoce el sistema de voz, osea a la cuarta timbrada se va a buzon pero en el linksys sigue timbrando, ahi no hay problema aunque mejor que se oiga el correo de voz, pero cuando el celular esta apagado de uan vez comienza a tarificar pero segun ahi timbro, necesito saber que sera, por que no se reconoce el correo de voz, por que sigue timbrando, si alguien me puede colaborar con esto es de suma urgencia.

    Comment by SINDY PRIETO COLOMBIA Windows XP Internet Explorer 6.0 — 3 June 2008 @ 19:51

  27. Te sugiero revisar el DTMF Tx Method en tu línea 1 o 2, ve si se soluciona el problema utiizando las diferentes opciones (auto, AVT, etc) Si no es eso es un problema de tu proveedor VOIP.

    Comment by Javier Sauma Q BOLIVIA Windows XP Internet Explorer 7.0 — 9 June 2008 @ 23:29

  28. Hola , pues del problema aquel, parece que ya se soluciono, pero igualmente sigo con un problema, lo que pasa es que aveces llaman, y marcan un celular (la mayoria de veces pasa con movistar) o cualquier numero y como les contesta el buzon cuelgan muy rapido para que no les cobre la llamada, pero el telefono comienza a timbrar, y si tu miras el linksys, este sigue titilando como si estuvieras hablando, y el telefono comienza a timbrar, y cuando reviso la pagina de mi proveedor me ha descontado mas minutos siendo que solo se desconto uno, osea el que supuestamente entro a buzon, para que deje de timbrar me toca apagar el modem del internet, porque si apago el linksys o desconecto la linea sigue titilando, es como sis e quedara pegada la llamada. Si me pudieras colaborar con ese inconveniente te agradeceria mucho.

    Comment by SINDY PRIETO COLOMBIA Windows XP Internet Explorer 6.0 — 24 June 2008 @ 22:05

RSS feed for comments on this post. | TrackBack URI

XHTML ( Puedes usar estas etiquetas): <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong> .