Introducción
Una vez, la dirección aprobó un experimento para implementar telefonía IP en nuestra oficina. Dado que mi experiencia en este campo era mínima, la tarea despertó un gran interés en mí y me sumergí en el estudio de diversos aspectos del tema. Al final de mi inmersión, decidí compartir los conocimientos adquiridos, con la esperanza de que a alguien le resulten útiles. Así que...
Datos de entrada
Se eligió e implementó Asterisk como la central telefónica IP. El parque de teléfonos consiste en dispositivos Cisco 7906g, Panasonic UT-KX123B, Grandstream GXP1400 y Dlink DPH-150S(E)/F3, Yealink T19 y T21. Esta variedad se debe a que, en el marco del experimento, se tomó la decisión de probar un poco de todo para formar una opinión sobre la relación precio/calidad/comodidad.
Tarea
Simplificar y unificar al máximo el proceso de configuración de nuevos dispositivos. Todos los teléfonos deben estar sincronizados en el tiempo, tener una agenda telefónica que se cargue desde servidores y proporcionar acceso a la configuración para el administrador.
La solución a esta tarea es simple: implementar la configuración automática de los teléfonos, conocida como Provisioning. De hecho, de eso hablaré en relación a mi implementación de esta maravillosa función.
Configuración de tftpd, dhcpd
Para distribuir la configuración a los teléfonos, elegí tftp como opción universal, compatible con todas las plataformas, fácil de configurar y gestionar.
No se necesitó configuración específica para tftp. Instalé el tftpd estándar y coloqué todos los archivos necesarios en su directorio raíz.
Coloqué los archivos de configuración en carpetas de acuerdo con el fabricante del teléfono. Sin embargo, el dispositivo de Cisco nunca accedió a su carpeta, así que tuve que almacenarlo en la raíz.
Para indicar a los teléfonos la ubicación del servidor tftp, utilicé option-66. Además, los dividí en clases separadas según el fabricante. Cada clase recibió su propio segmento de direcciones y una carpeta individual para los archivos de configuración. Por cierto, los dispositivos de D-link tuvieron que ser identificados por sus direcciones MAC, ya que no proporcionan información sobre el fabricante en la solicitud dhcp.
Fragmento de dhcpd.conf
# Указываем необходимые опции
option option-66 code 66 = text;
class "panasonic" {
match if substring (option vendor-class-identifier,0,9) = "Panasonic";
option option-66 "10.1.1.50/panasonic/";
}
class "cisco" {
match if substring (option vendor-class-identifier,0,36) = "Cisco Systems, Inc. IP Phone CP-7906";
option option-66 "10.1.1.50/cisco/";
}
class "grandstream" {
match if substring (option vendor-class-identifier,0,11) = "Grandstream";
option option-66 "10.1.1.50/grandstream/";
}
class "dlink" {
match if (binary-to-ascii (16,8,":",substring(hardware,1,4)) = "c8:d3:a3:8d") or
(binary-to-ascii (16,8,":",substring(hardware,1,4)) = "90:94:e4:72");
option option-66 "10.1.1.50/dlink/";
}
class "yealink" {
match if substring (option vendor-class-identifier,0,7) = "Yealink";
option option-66 "10.1.1.50/yealink/";
}
Los teléfonos tuvieron que ser excluidos manualmente del grupo general. De lo contrario, no querían ir a su 'rancho'.
Ejemplo de configuración de subred
subnet 10.1.1.0 netmask 255.255.255.0 {
option routers 10.1.1.1;
pool {
deny members of "cisco";
deny members of "panasonic";
deny members of "dlink";
range 10.1.1.230 10.1.1.240;
}
pool {
allow members of "cisco";
range 10.1.1.65 10.1.1.69;
}
pool {
allow members of "panasonic";
range 10.1.1.60 10.1.1.64;
}
pool {
allow members of "dlink";
range 10.1.1.55 10.1.1.59;
}
}
Después de reiniciar todos los servicios involucrados, los teléfonos se dirigieron con confianza al servidor tftp asignado para obtener su configuración. Solo quedaba colocarlos allí.
Cisco 7906
Estos dispositivos vinieron en su paquete de fábrica. Tuve que reprogramarlos para hacerlos compatibles con Asterisk. Pero esa es otra historia. En este caso, para configurar el dispositivo, según las instrucciones, creé en la raíz del servidor tftp el archivo SEPAABBCCDDEEFF.cnf.xml. Donde AABBCCDDEEFF es la dirección MAC del dispositivo.
Ya se ha escrito sobre la configuración de los teléfonos Cisco varias veces, así que simplemente dejaré el archivo de configuración funcional.
Configuraciones para cisco
true
SIP
root
ADMIN_PWD
D-M-Y
Hora Estándar Central del Pacífico
10.1.1.4
Unicast
10.1.1.50
2000
5060
5061
10.1.1.50
Deshabilitar
120
true
x-cisco-serviceuri-cfwdall
x-cisco-serviceuri-pickup
x-cisco-serviceuri-opickup
x-cisco-serviceuri-gpickup
x-cisco-serviceuri-meetme
x-cisco-serviceuri-abbrdial
false
2
true
true
2
2
0
true
false
6
10
180
3600
5
120
120
5
500
4000
70
true
None
1
false
true
false
false
none
101
3
avt
3
false
false
Teléfono Cisco
2
false
15000
10
true
false
16384
32766
9
10.1.1.50
5060
2
3
false
3
4
5
true
true
false
true
Usuario #103
103
103
SIP_PWD
$num
5060
184
0
dialplan.xml
*0#
true
2
false
false
1
0
1
0
0
0
1
0
1,7
09:00
12:00
01:00
1
2
10.1.1.50
0
100
50
0
0
5
1
10.1.1.50
0
0
0
0
0
0
1
1
1143565489-a3cbf294-7526-4c29-8791-c4fce4ce4c37
Ruso_Rusia_Federación
ru_RU
utf-8
1
0
http://10.1.1.50/provisioning/cisco-services.xml
http://10.1.1.50/provisioning/cisco-services.xml
96
0
96
2
0
0
3804
<!-- 10.1.1.50 -->
false
1
D-Link DPH-150S/F3
Si estás a punto de comprar un teléfono de esta serie, ten cuidado, la auto-configuración solo es compatible con los dispositivos 150S/F3. En el dispositivo 150S/F2 que tengo, no encontré esa funcionalidad.
El archivo de configuración puede estar en formato xml o texto plano. Para xml, hay un requisito: la etiqueta debe estar al principio de la línea, de lo contrario, el parser la ignorará y el valor del parámetro correspondiente no cambiará.
Para configurar el teléfono se utilizan dos archivos. f0D00580000.cfg — para el almacenamiento de la configuración de todos los teléfonos y 00112233aabb.cfg (dirección MAC en minúsculas) para la configuración individual. Las configuraciones individuales, por supuesto, tienen mayor prioridad.
El conjunto completo de configuraciones cuenta con más de mil líneas; para no abrumar el artículo, describiré un conjunto mínimo y necesario de configuraciones.
Obligatorio es el nodo raíz VOIP_CONFIG_FILE y el nodo anidado, version. Las configuraciones se aplicarán solo si la versión del archivo es superior a la de las configuraciones actuales en el dispositivo. Puedes conocer este valor a través de la interfaz web del teléfono en la sección de mantenimiento (gestión del sistema). Para teléfonos con configuraciones de fábrica, en ambos casos es 2.0002. Además, la versión del archivo individual debe ser mayor que la del archivo general.
Primero proporcionaré el archivo con la configuración general para todos los teléfonos. En esencia, almacena todas las configuraciones, el archivo individual solo se encargará del número de teléfono y de la inscripción en la pantalla.
En los dos bloques que se presentan a continuación, se establecen los parámetros de zona horaria y sincronización de tiempo, el puerto inicial para RTP y se activa el puente de red entre los puertos WAN y LAN del dispositivo.
Fragmento nº 1
DHCP 2 1 1 0 VOIP 10000 200 10.1.1.4 1 0 60 12 1500 1 1
Los nombres de los parámetros de configuración son lo suficientemente "elocuentes" como para no ser descritos en detalle.
SIP para una línea
5060 SIP1 10.1.1.50 5060 3600 1 10.1.1.50 1 0 G711A,G711U,G722
Configuraciones de control remoto
23 80 0 443 1 0 Item1 10.1.1.152 10.1.1.160 Account1 admin ADMIN_PWD 10 Account2 guest GUEST_PWD 5
Configuraciones del teléfono
123 0 112 Company 5 1 30 0 1 0,,1 0 0 1 XML-PBook1 Phonebook http://10.1.1.50/provisioning/dlink-phonebook.xml : 0 0 friend,home,work,business,classmate,colleague
Todas las demás configuraciones quedarán "por defecto". Ahora, cualquier teléfono Dlink conectado a la red aceptará inmediatamente el conjunto de parámetros común a todos. Para establecer parámetros individuales para un dispositivo, se necesita un archivo separado. Solo es necesario indicar las configuraciones requeridas para el abonado específico.
configuraciones del abonado
2.0006 SIP1 Usuario #117 117 5060 117 SIP_PWD 3600 1 5060 117 SIP_PWD
Panasonic UT-KX123B
Estos dispositivos reciben configuraciones de una manera ligeramente diferente. La configuración se almacena en archivos de texto. El tamaño máximo del archivo de configuración es de 120 KB. Independientemente de la cantidad de archivos, su tamaño total no debe exceder los 120 KB.
El archivo de configuración consta de un conjunto de líneas, a las que se aplican las siguientes condiciones:
- La primera siempre es una línea de comentario, que incluye la siguiente secuencia de caracteres (44 bytes):
# Panasonic SIP Phone Standard Format File #
La representación hexadecimal de esta secuencia:
23 20 50 61 6E 61 73 6F 6E 69 63 20 53 49 50 20 50 68 6F 6E 65 20 53 74 61 6E 64 61 72 64 20 46 6F 72 6D 61 74 20 46 69 6C 65 20 23
Para evitar la modificación accidental de la secuencia de caracteres establecida, se recomienda comenzar el archivo de configuración con la línea:
# Panasonic SIP Phone Standard Format File # DO NOT CHANGE THIS LINE! - Los archivos de configuración deben terminar con una línea en blanco.
- Cada línea debe terminar con la secuencia "".
- La longitud máxima de una línea es de 537 bytes, incluida la secuencia "".
- Las siguientes líneas se ignoran:
- líneas que superan el límite de 537 bytes;
- líneas en blanco;
- líneas de comentarios que comienzan con el símbolo "#";
- La línea de cada parámetro se escribe en la forma XXX="yyy" (XXX: nombre del parámetro, yyy: su valor). El valor debe ir entre comillas dobles.
- No se permite dividir la línea de parámetros en varias líneas. Esto resultará en un error al procesar el archivo de configuración y, en consecuencia, en una falla durante la inicialización.
- Los valores de algunos parámetros deben especificarse por separado para cada línea. Un parámetro con el sufijo "_1" en el nombre es el parámetro para la línea 1; "_2" es para la línea 2, etc.
- La longitud máxima del nombre de un parámetro es de 32 caracteres.
- La longitud máxima del valor de un parámetro es de 500 caracteres, excepto los caracteres de comillas dobles.
- No se permiten espacios en la cadena, excepto cuando el valor incluye un carácter de espacio.
- Se pueden especificar valores para algunos parámetros como 'vacíos' para establecer un valor vacío del parámetro.
- Los parámetros se especifican sin un orden definido.
- Si se especifica el mismo parámetro más de una vez en el archivo de configuración, se aplicará el valor especificado primero.
Este conjunto de requisitos para el archivo de configuración, francamente, me ha decepcionado. En mi opinión, la implementación de la gestión de los el servidor teléfonos Panasonic es extremadamente incómoda. En este aspecto, el teléfono pierde significativamente frente a los demás.
Al encender el dispositivo por primera vez (o después de restablecer a la configuración de fábrica), intenta cargar el llamado archivo de producto (en este caso es KX-UT123RU.cfg), que debe contener las rutas a los demás archivos de configuración.
Archivo de producto# Panasonic SIP Phone Standard Format File # DO NOT CHANGE THIS LINE!
CFG_STANDARD_FILE_PATH=«tftp://10.1.1.50/panasonic/{mac}.cfg»
CFG_PRODUCT_FILE_PATH=«tftp://10.1.1.50/panasonic/KX-UT123RU.cfg»
CFG_MASTER_FILE_PATH=«tftp://10.1.1.50/panasonic/master.cfg»
Después de esto, el teléfono mostrará un mensaje en la pantalla indicando que la preparación se ha completado con éxito y esperará a que lo reinicien. Después de reiniciar, comenzará a procesar los archivos de configuración que tiene asignados.
En el archivo master.cfg, se recomienda especificar configuraciones comunes para todos los teléfonos. Al igual que en el caso de Dlink, solo indicaré algunos parámetros. Los nombres de los otros parámetros y sus valores se pueden encontrar en la documentación en el sitio web del fabricante.
master.cfg############################################################
# System Settings #
############################################################
## Login Account Settings
ADMIN_ID=«admin»
ADMIN_PASS=«ADMIN_PWD»
USER_ID=«user»
USER_PASS=«USER_PWD»
## System Time Settings
NTP_ADDR=«10.1.1.4»
TIME_ZONE=«660»
DST_ENABLE=«N»
DST_OFFSET=«60»
DST_START_MONTH=«3»
DST_START_ORDINAL_DAY=«2»
DST_START_DAY_OF_WEEK=«0»
DST_START_TIME=«120»
DST_STOP_MONTH=«10»
DST_STOP_ORDINAL_DAY=«2»
DST_STOP_DAY_OF_WEEK=«0»
DST_STOP_TIME=«120»
LOCAL_TIME_ZONE_POSIX=""
## Syslog Settings
SYSLOG_ADDR=«10.1.1.50»
SYSLOG_PORT=«514»
SYSLOG_EVENT_SIP=«6»
SYSLOG_EVENT_CFG=«6»
SYSLOG_EVENT_VOIP=«6»
SYSLOG_EVENT_TEL=«6»
## Provisioning Settings
OPTION66_ENABLE=«Y»
OPTION66_REBOOT=«N»
PROVISION_ENABLE=«Y»
CFG_STANDARD_FILE_PATH=«tftp://10.1.1.50/panasonic/{mac}.cfg»
CFG_PRODUCT_FILE_PATH=«tftp://10.1.1.50/panasonic/KX-UT123RU.cfg»
CFG_MASTER_FILE_PATH=«tftp://10.1.1.50/panasonic/master.cfg»
############################################################
# Network Settings #
############################################################
## IP Settings
CONNECTION_TYPE=«1»
HOST_NAME=«UT123»
DHCP_DNS_ENABLE=«Y»
STATIC_IP_ADDRESS=""
STATIC_SUBNET=""
STATIC_GATEWAY=""
USER_DNS1_ADDR=""
USER_DNS2_ADDR=""
## DNS Settings
DNS_QRY_PRLL=«Y»
DNS_PRIORITY=«N»
DNS1_ADDR=«10.1.1.1»
DNS2_ADDR=""
## HTTP Settings
HTTPD_PORTOPEN_AUTO=«Y»
HTTP_VER=«1»
HTTP_USER_AGENT=«Panasonic_{MODEL}/{fwver} ({mac})»
HTTP_SSL_VERIFY=«0»
CFG_ROOT_CERTIFICATE_PATH=""
## XML Application Settings
XML_HTTPD_PORT=«6666»
XMLAPP_ENABLE=«Y»
XMLAPP_USERID=""
XMLAPP_USERPASS=""
XMLAPP_START_URL=""
XMLAPP_INITIAL_URL=" "
XMLAPP_INCOMING_URL=""
XMLAPP_TALKING_URL=""
XMLAPP_MAKECALL_URL=""
XMLAPP_CALLLOG_URL=""
XMLAPP_IDLING_URL=""
XMLAPP_LDAP_URL=«»
XMLAPP_LDAP_USERID=""
XMLAPP_LDAP_USERPASS=""
En el archivo de configuración individual del dispositivo, por tradición, solo se mantienen los ajustes del abonado.
aabbccddeeff.cfgDISPLAY_NAME_1=«Usuario #168»
PHONE_NUMBER_1=«168»
SIP_URI_1=«168»
LINE_ENABLE_1=«Habilitado»
PROFILE_ENABLE_1=«Habilitado»
SIP_AUTHID_1=«168»
SIP_PASS_1=«SIP_PWD»
Grandstream GXP-1400
Los parámetros de estos teléfonos se almacenan en un único archivo xml llamado cfg{mac}.xml. O en un archivo de texto normal llamado cfg{mac}. Este teléfono solo solicita el archivo de configuración individual, por lo que optimizar los ajustes al sacarlos a un archivo común no será posible. Otra característica de la configuración de los Grandstream es la nomenclatura de los parámetros. Todos están numerados y se designan como P###. Por ejemplo:
P1650 – se encarga de la interfaz web para gestionar el teléfono (0 – HTTPS, 1 – HTTP)
P47 – dirección del servidor SIP para la conexión.
Si la configuración se almacena en un archivo de texto, los parámetros no requieren ningún agrupamiento y pueden ir en cualquier orden. Las líneas que comienzan con # se consideran comentarios.
Si los ajustes se presentan en formato xml, deben estar anidados dentro del nodo , que a su vez debe estar anidado dentro de . Todos los parámetros se registran en forma de etiquetas correspondientes con el valor del parámetro dentro.
Ejemplo de configuración
1
109
109
109
SIP_PWD
Usuario# 109
10.1.1.50
2
10.1.1.50
0
ADMIN_PWD
USER_PWD
es
0
10.1.1.50/grandstream
1
TZc-11
10.1.1.4
1
http://10.1.1.50/provisioning/grandstream
30
Yealink T19 y T21
Los dispositivos de estos modelos admiten archivos de configuración individuales para dispositivos y archivos comunes para modelos. En mi caso, tuve que ubicar los parámetros generales en los archivos y000000000031.cfg y y000000000034.cfg respectivamente. Los archivos de configuración individuales se nombran de acuerdo con la dirección MAC: 00112233aabb.cfg.
La configuración para los teléfonos Yealink se almacena en formato de texto. Los únicos requisitos obligatorios son la presencia en la primera línea de la versión del archivo, en el formato #!version:1.0.0.1.
Todos los parámetros se registran como parámetro = valor. Los comentarios deben comenzar con el símbolo "#". Los nombres de los parámetros y sus valores se pueden encontrar en la documentación del sitio web del fabricante.
configuración general#!version:1.0.0.1
#Configure the WAN port type; 0-DHCP (default), 1-PPPoE, 2-Static IP Address;
network.internet_port.type = 0
#Configure the PC port type; 0-Router, 1-Bridge (default);
network.bridge_mode = 1
#Configure the access type of the web server; 0-Disabled, 1-HTTP & HTTPS(default), 2-HTTP Only, 3-HTTPS Only;
network.web_server_type = 3
#Configure the maximum local RTP port. It ranges from 0 to 65535, the default value is 11800.
network.port.max_rtpport = 10100
#Configure the minimum local RTP port. It ranges from 0 to 65535, the default value is 11780.
network.port.min_rtpport = 10000
security.user_name.admin = root
security.user_password = root:ADMIN_PWD
security.user_name.user = user
security.user_password = user:USER_PWD
#Specify the web language, the valid values are: English, Chinese_S, Turkish, Portuguese, Spanish, Italian, French, Russian, Deutsch and Czech.
lang.wui = Ruso
#Specify the LCD language, the valid values are: English (default), Chinese_S, Chinese_T, German, French, Turkish, Italian, Polish, Spanish and Portuguese.
lang.gui = Ruso
#Configure the time zone and time zone name. The time zone ranges from -11 to +12, the default value is +8.
#The default time zone name is China(Beijing).
#Refer to Yealink IP Phones User Guide for more available time zones and time zone names.
local_time.time_zone = +11
local_time.time_zone_name = Vladivostok
#Configure the domain name or the IP address of the NTP server. The default value is cn.pool.ntp.org.
local_time.ntp_server1 = 10.1.1.4
#Configure the logo mode of the LCD screen; 0-Disabled (default), 1-System logo, 2-Custom logo;
phone_setting.lcd_logo.mode = 1
#Configure the access URL and dispaly name of the remote phonebook. X ranges from 1 to 5.
remote_phonebook.data.1.url =
remote_phonebook.data.1.name = Agenda telefónica
features.remote_phonebook.flash_time = 3600
configuraciones individuales#!version:1.0.0.1
#Enable or disable the account1, 0-Disabled (default), 1-Enabled;
account.1.enable = 1
#Configure the label displayed on the LCD screen for account1.
account.1.label = Teléfono de prueba
#Configure the display name of account1.
account.1.display_name = Usuario 998
#Configure the username and password for register authentication.
account.1.auth_name = 998
account.1.password = 998
#Configure the register user name.
account.1.user_name = 998
#Configure the SIP server address.
account.1.sip_server_host = 10.1.1.50
#Specify the port for the SIP server. The default value is 5060.
account.1.sip_server_port = 5060
Como resultado, gracias a la maravillosa función de auto-provisionamiento, prevista en los teléfonos que mencioné, no hubo ningún problema al conectar nuevos dispositivos a la red. Todo se redujo a averiguar la dirección MAC del teléfono y generar el archivo de configuración por plantilla.
Espero que hayas leído hasta el final y hayas sacado provecho de lo leído.
Gracias por su atención.
Fuente: habr.com
