Auto Aprovisionamiento VoIP
Los sistemas de autoprovisioning están ya en casi todos los telefonos VoIP. En este pequeño manual o howto os enseñaremos a configurar el autoprovisioning para los teléfonos Linksys spa921 o Linksys spa922.
Las ventajas que nos dará este tipo configuración son muchísimas, tiempo, distancias, imaginad distintas delegaciones y una de las personas moviendose a poner cada telefono, puff.
El howto nos eneseñara a montar un servidor dhcp, un servidor tftp sobre Debian y de esta forma configurar desde un archivo cualquier teléfono que se nos ponga por delante:
ACLARACIONES INICIALES
El autoaprovisionamiento para grandes (mas de 10 teléfonos ya es rentable) sistemas de telefonía VoIP es imprescindible, la configuración la centralizas en un ordenador y todos los teléfonos se conectaran a este para autoconfigurarse, simplemente imaginad distintas delegaciones, sin esto seria una locura.
El autoprovisioning se podrá hacer para muchas marcas de teléfonos, yo tengo linksys spa921 así que aquí leeréis la configuración para ellos.
Para poder montar este servicio, necesitaremos tener el servidor dhcp montado en nuestra red, asumiré que no lo tenéis montado bajo linux y así lo haremos, ya que en una red solo deberíamos tener un servidor dhcp, si o tuvieseis montado con windows deberíais cambiarlo (muy buena opción).
Para el código que veréis en el howto utilizo lo siguiente: código que tecleo ( NEGRITA CURSIVA ).
Para el código que muestra la pantalla ( CURSIVA ).
OJO a los saltos de línea.
INSTALACIÓN DE SERVIDOR DHCP
Como ya sabéis el dhcp lo único que hace es dar una configuración de red al equipo que lo pida en la red donde este servicio este montado. Las opciones que tenemos para configurar bien un servidor dhcp son miles, solo veremos las necesarias para poder dar a nuestra red la configuración necesaria para todos los equipos que lo necesiten y para los teléfonos.
Comencemos instalando el servicio dhcp para ello haremos lo siguiente:
dhcp:~# apt-get install dhcp3-server
Una vez realizada la instalación del paquete pasemos a configurarlo, como siempre haremos antes una copia de seguridad del original:
dhcp:~# cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf.ORIGINAL
Yo lo que hago es borrar completamente el archivo y volver a montarlo con las opciones necesarias:
dhcp:~# echo "" > /etc/dhcp3/dhcpd.conf
Ahora modificaremos según nos convenga, yo os dejo mi archivo de configuración, luego os cuento donde podéis ver todas las opciones:
ddns-update-style none;
default-lease-time 86400; #1 Día
max-lease-time 2592000; #30 Días
authoritative;
log-facility local7;
subnet 192.168.1.0 netmask 255.255.255.0
{
range 192.168.1.155 192.168.1.254;
option domain-name-servers 192.168.1.2;
option routers 192.168.1.1;
option domain-name "dominio.local";
option netbios-name-servers 192.168.1.2;
option netbios-node-type 8; # Hybrid – WINS, then broadcast
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option tftp-server-name "192.168.1.14";
}
Al archivo luego le añadiremos más cosas, os cuento que hay aquí, el rango esta claro, desde donde voy a dar ips dinámicas y hasta donde, los domain-name-servers son mis servidores DNS (si no tenéis servidor dns local, podéis poner uno externo), la opción routers pues cual va a ser la puerta de enlace predeterminada para los equipos. La opción domain-name, poned vuestro dominio si es que lo tenéis, si tenéis equipos con sistema de microsoft es posible que os hagan faltan las opciones de netbios, una es para decirle quien sirve los nombres netbios y en que modo esta configurado (si tenéis servidor wins poner modo 8). La opción subnet y broadcast están claras. La opción tftp-server es la buena, aquí es donde Irán los teléfonos a recoger la configuración que creemos para ellos. Luego seguiremos configurando este archivo.
No me hagáis mucho caso pero creo que leí en algún sitio que la maquina que sirviese DHCP no podía ser la misma que la que sirviese TFTP, en mi caso lo tengo en maquinas diferentes, el tftp lo tengo con la maquina de asterisk y el dhcp en otra aparte con mas servicios. Si veis que no os funciona en la misma maquina contemplad esta posibilidad, si alguien lo hiciese podría confirmármelo.
A cada cambio que hagamos en el archivo de configuración del dhcp tendremos que reiniciar el servicio:
dhcp:~# /etc/init.d/dhcp3-server restart
INSTALACIÓN DE SERVIDOR TFTP
Necesitaremos ahora montar el servidor TFTP, para que los teléfonos cojan la configuración nada mas ser encendidos, es decir no tendremos que tocar ni una sola tecla del teléfono para que este coja toda la configuración que queramos.
operadora:~# apt-get install atftpd
Perfecto no lo habrá instalado y habilitado, podemos mirar si así lo ha hecho:
operadora:~# vi /etc/inetd.conf
Debemos tener algo así a mitad de archivo:
#:BOOT: TFTP service is provided primarily for booting. Most sites
# run this only on machines acting as "boot servers."
tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd –tftpd-timeout 300 –retry-timeout 5 –mcast-port 1758 –mcast-addr 239.239.239.0-255 –mcast-ttl 1 –maxthread 100 –verbose=5 /tftpboot
El archivo no os aconsejo tocarlo, fijaros lo único donde tendrá los archivos: es la ultima opción "/tftpboot"
Debemos crear el directorio:
operadora:~# mkdir /tftpboot
Vale aquí tendremos todos los archivos que necesitaran nuestros teléfonos, empecemos creando el primero, será el de las configuraciones generales para todos los teléfonos, mis teléfonos son 921, cambiad los datos según os convenga:
operadora:/# vi /tftpboot/spa921.cfg
<flat-profile>
<!– SYSTEM –>
<Admin_Passwd ua="na"></Admin_Passwd>
<User_Password ua="na"></User_Password>
<!– REGIONAL –>
<Time_Zone>GMT 02:00</Time_Zone>
<!– PROVISIONING –>
<Resync_Periodic>10</Resync_Periodic>
<Resync_Error_Retry_Delay>20</Resync_Error_Retry_Delay>
<Profile_Rule>/spa921-MAC/spa921-$MA.cfg</Profile_Rule>
<Upgrade_Rule>tftp://LA IP DE TU TFTP/spa921-5-1-5.bin</Upgrade_Rule>
<!– PHONE –>
<Text_Logo>PON AQUI TU LOGO</Text_Logo>
<!– EXT 1 –>
<Proxy_1_>LA IP DE TU ASTERISK</Proxy_1_>
<Preferred_Codec_1_>G711a</Preferred_Codec_1_>
<Use_Pref_Codec_Only_1_>yes</Use_Pref_Codec_Only_1_>
</flat-profile>
Cosas a tener en cuenta, debemos bajarnos la última actualización del firmware de nuestro teléfono para ponerlo en la opción UPGRADE RULE de arriba, yo me baje la última y cuando el teléfono se enciende, este actualiza su firmware y luego piílla la configuración.
Necesitamos crear ahora un archivo por cada teléfono que tengamos que configurar, si os fijáis arriba yo le he dicho que estos archivos esta en /spa921-MAC/ dentro del tftpboot así que crearemos ahí la carpeta y el archivo:
operadora:/# mkdir /tftpboot/spa921-MAC
Cambiadlo por una de las macs de algún teléfono que tengáis.
operadora:/# vi /tftpboot/spa921-MAC/spa921-000e08dd8d69.cfg
Os pongo las opciones que tiene mi archivo:
<flat-profile>
<Profile_Rule>/spa921-ACTUALIZACION.cfg</Profile_Rule>
<!– SYSTEM –>
<HostName>tlf_juanmi</HostName>
<!– PHONE –>
<Station_Name>Juanmi</Station_Name>
<!– EXT 1 –>
<Display_Name_1_>Juanmi</Display_Name_1_>
<User_ID_1_>NUEMRO_EXTENSION</User_ID_1_>
<Password_1_>PASSWORD_EXTENSION</Password_1_>
</flat-profile>
Aquí le he dado las opciones únicas para cada teléfono (los distinguiremos por la mac del propio) La 1ª opción es interesante, le diremos a cada teléfono donde esta su archivo de actualización spa921-ACTUALIZACION.cfg de esta forma podremos decirle a los teléfonos que actualicen tal opción si se nos olvida, en vez de cambiar y decirle que resetee de fabrica. Los cambios que hagamos a partir de la primera actualización deberán ir en spa921-ACTUALIZACION.cfg sino debéis resetear de fábrica y volverá a coger los iniciales.
El archivo de actualización debe ir en /tftboot:
operadora:/# vi /tftpboot/spa921-ACTUALIZACION.cfg
y debe contener algo parecido a los de arriba, os pongo un ejemplo:
<flat-profile>
<Voice_Mail_Number>*97</Voice_Mail_Number>
</flat-profile>
Poniendo esta opción aquí todos los teléfonos pasados 1000 segundos como mucho tendrán la nueva opción.
Os preguntareis como he sabido que opción y que nombre utilizar en cada línea, la respuesta es fácil, el señor de esta página (http://www.opensky.ca/) se creo un programita basado en python que descarga las opciones que tiene el xml del teléfono, y de ahí a improvisar ;-).
operadora:/# cd /tftpboot
operadora:/tftpboot# wget http://www.opensky.ca/~jdhildeb/software/spaconf/downloads/spaconf-0.2.tar.gz
operadora:/tftpboot# tar xvfz spaconf-0.2.tar.gz
operadora:/tftpboot# cd spaconf-0.2
Para utilizar el programa lo haremos de esta forma:
operadora:/tftpboot/spaconf-0.2# ./spaconf.py http://admin:mypassword@192.168.1.55/ fabrica_spa921
Dejad lo de amin y mypassword si no habeis puesto password. Ahí tendremos todas las opciones de nuestro teléfono(fabrica_spa921), buscad la que queráis cambiar, pongamos un ejemplo, queremos cambiar Voice_Mail_Number, busquemos dentro del archivo la cadena voice y veremos lo siguiente: phone_voice_mail_number = », si os dais cuenta lo que nos dice es que pertenece a la pestaña phone y se llama Voice Mail Number, para usarlo seguid siempre esta nomenclatura, quitarla la pestaña y ponedle la primera en mayúscula, os pongo mas ejemplos para utilizarlo bien, si hay numero seguid los ejemplos:
Según fichero spaconf ————- Opción a utilizar en el tftp
phone_voice_mail_number ————- Voice_Mail_Number
phone_text_logo ————- Text_Logo
ext_1_display_name ————- Display_Name_1_
ext_1_user_id ————- User_ID_1_
ext_1_password ————- Password_1_
La nomenclatura es un poco rara pero es así 😉
Muy bien tenéis que ir creando los archivos de cada teléfono y encended de uno en uno, podéis ver si os esta funcionando poniendo lo siguiente:
operadora:/# tail -f /var/log/daemon.log
MÁS OPCIONES PARA EL SERVIDOR DHCP
Yo por ejemplo a los teléfonos les asigno por dhcp direcciones fijas, la forma de hacer esto es añadir en /etc/dhcp3/dhcpd.conf lo siguiente:
dhcp:/# vi /etc/dhcp3/dhcpd.conf
y añadimos esto:
host tlf_juanmi {
hardware ethernet 00:0e:08:dd:87:8e;
fixed-address 192.168.1.55;
}
Para ver más opciones de configuración del servidor dhcp podéis mirar el man
dhcp:/# man dhcpd
dhcp:/# man dhcpd.conf
dhcp:/# man dhcpd-options
AGRADECIMIENTOS
Como siempre, a Alfonso de Microalcarria.
A Jason creador del programilla spaconf.
A vosotros que seguiremos mejorando esto juntos.
-
[…] En mi caso lo que quiero añadir es el tftp-server-name para que mis teléfonos IP se actualicen de forma automática, como explico en el documento de improvisa: https://www.improvisa.com/06-06-2007/auto-aprovisionamiento-voip/ […]
Warning: Use of undefined constant type - assumed 'type' (this will throw an Error in a future version of PHP) in /home/improvisa_com/web/improvisa.com/public_html/wp-content/themes/grassland/comments.php on line 30
Warning: Use of undefined constant type - assumed 'type' (this will throw an Error in a future version of PHP) in /home/improvisa_com/web/improvisa.com/public_html/wp-content/themes/grassland/comments.php on line 38