Introduction
Un jour, la direction a approuvé une expérience d'implémentation de la téléphonie IP dans notre entreprise. Étant donné que mon expérience dans ce domaine était minimale, cette tâche a éveillé un grand intérêt en moi et je me suis plongé dans l'étude de divers aspects du sujet. Après cette immersion, j'ai décidé de partager les connaissances acquises — avec l'espoir qu'elles puissent être utiles à quelqu'un. Alors...
Données d'origine
Pour le PBX IP, Asterisk a été choisi et déployé. Le parc de téléphones se compose d'appareils Cisco 7906g, Panasonic UT-KX123B, Grandstream GXP1400 et Dlink DPH-150S(E)/F3, Yealink T19 et T21. Cette diversité est due au fait qu'il a été décidé, dans le cadre de l'expérience, d'essayer un peu de tout pour se faire sa propre opinion sur le rapport qualité/prix/commodité.
La tâche
Maximiser la simplification et l'unification du processus de configuration des nouveaux appareils. Tous les téléphones doivent être synchronisés dans le temps, avoir un annuaire téléphonique, chargé depuis de serveurs et fournir un accès aux paramètres pour l'administrateur.
La solution à cette problématique est simple : mettre en œuvre la configuration automatique des téléphones, ce qu'on appelle le Provisioning. C'est en fait de ma mise en œuvre de cette fonction remarquable dont il s'agit.
Configuration de tftpd, dhcpd
Pour distribuer les configurations aux téléphones, j'ai sélectionné tftp comme option universelle, prise en charge par toutes les plateformes, facile à configurer et à gérer.
Aucune configuration spécifique pour tftp n'était nécessaire. J'ai installé le tftpd standard et placé tous les fichiers nécessaires dans son répertoire racine.
Les fichiers de configuration ont été organisés dans des répertoires selon le fabricant du téléphone. Cependant, l'appareil Cisco n'a jamais voulu aller dans son dossier, j'ai dû le stocker à la racine.
Pour indiquer aux téléphones l'emplacement du serveur tftp, j'ai utilisé l'option 66. De plus, je les ai classés en classes distinctes par fabricant. Chaque classe a reçu son propre segment d'adresses et un dossier individuel pour les fichiers de configuration. À noter, les appareils D-link ont dû être identifiés par leur adresse MAC, car ils ne fournissent pas d'informations sur le fabricant dans la requête dhcp.
Extrait 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/";
}
Les téléphones ont dû être exclus manuellement du pool général. Sinon, ils ne voulaient tout simplement pas partir dans leur "bassinet".
Exemple de configuration de sous-réseau
sous-réseau 10.1.1.0 masque de sous-réseau 255.255.255.0 {
option routeurs 10.1.1.1;
pool {
refuser les membres de "cisco";
refuser les membres de "panasonic";
refuser les membres de "dlink";
plage 10.1.1.230 10.1.1.240;
}
pool {
autoriser les membres de "cisco";
plage 10.1.1.65 10.1.1.69;
}
pool {
autoriser les membres de "panasonic";
plage 10.1.1.60 10.1.1.64;
}
pool {
autoriser les membres de "dlink";
plage 10.1.1.55 10.1.1.59;
}
}
Après le redémarrage de tous les services impliqués, les téléphones se sont dirigés en toute confiance vers le serveur tftp qui leur était attribué. Il ne restait plus qu'à les y placer.
Cisco 7906
Ces appareils m'ont été donnés dans leur emballage d'origine. J'ai dû les reprogrammer pour les faire fonctionner avec Asterisk. Mais c'est une autre histoire. Dans ce cas précis, pour configurer l'appareil, j'ai créé, conformément aux instructions, un fichier SEPAABBCCDDEEFF.cnf.xml à la racine du serveur tftp. Où AABBCCDDEEFF est l'adresse MAC de l'appareil.
Il a déjà été écrit plusieurs fois sur la configuration des téléphones Cisco, donc je vais simplement laisser le fichier de configuration fonctionnel.
Configurations pour cisco
true
SIP
root
ADMIN_PWD
D-M-Y
Heure normale du Pacifique central
10.1.1.4
Unicast
10.1.1.50
2000
5060
5061
10.1.1.50
Désactiver
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
Aucun
1
false
true
false
false
aucun
101
3
avt
3
false
false
Téléphone 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
Utilisateur #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
Français_France
fr_FR
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 vous envisagez d'acheter un téléphone de cette série, faites attention, l'auto-configuration n'est prise en charge que sur les appareils 150S/F3. Sur l'appareil 150S/F2 que j'ai eu entre les mains, cette fonctionnalité n'a pas été trouvée.
Le fichier de configuration peut être au format xml ou en texte ordinaire. Pour le xml, il y a une exigence : la balise doit commencer au début de la ligne, sinon le parseur l'ignorera et la valeur du paramètre correspondant ne changera pas.
Deux fichiers sont utilisés pour configurer le téléphone. f0D00580000.cfg — pour stocker les paramètres de tous les téléphones et 00112233aabb.cfg (adresse MAC en minuscules) pour les réglages individuels. Les réglages individuels ont naturellement une priorité plus élevée.
L'ensemble complet des paramètres compte plus de mille lignes, afin de ne pas alourdir l'article, je vais décrire l'ensemble minimal suffisant.
Le nœud racine est obligatoire VOIP_CONFIG_FILE et le nœud imbriqué version. Les paramètres ne seront appliqués que si la version du fichier est supérieure à celle des paramètres actuels dans l'appareil. Vous pouvez connaître cette valeur via l'interface web du téléphone dans la section maintenance (gestion système). Pour les téléphones avec les paramètres d'usine, dans les deux cas, c'est 2.0002. De plus, la version du fichier individuel doit être supérieure à celle du fichier commun.
Je commencerai par le fichier de configuration générale pour tous les téléphones. En fait, il stocke tous les paramètres, le fichier individuel ne sera responsable que du numéro de téléphone et de l'affichage à l'écran.
Dans les deux blocs ci-dessous, les paramètres de fuseau horaire et de synchronisation temporelle sont définis, le port initial pour le RTP est configuré et un pont réseau entre les ports WAN et LAN de l'appareil est activé.
Fragment №1
DHCP 2 1 1 0 VOIP 10000 200 10.1.1.4 1 0 60 12 1500 1 1
Les noms des paramètres de configuration sont suffisamment explicites pour ne pas nécessiter de description détaillée.
SIP pour une ligne
5060 SIP1 10.1.1.50 5060 3600 1 10.1.1.50 1 0 G711A,G711U,G722
Paramètres de gestion à distance
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
Paramètres du téléphone
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
Tous les autres paramètres resteront « par défaut ». Maintenant, tout téléphone Dlink connecté au réseau adoptera immédiatement l’ensemble de paramètres communs. Pour définir des paramètres individuels pour un appareil, il est nécessaire d’avoir un fichier distinct. Ce fichier doit uniquement contenir les réglages nécessaires pour chaque abonné.
paramètres de l'abonné
2.0006 SIP1 Utilisateur #117 117 5060 117 SIP_PWD 3600 1 5060 117 SIP_PWD
Panasonic UT-KX123B
Ces appareils reçoivent les paramètres selon un schéma légèrement différent. La configuration est stockée dans des fichiers texte. La taille maximale du fichier de configuration est de 120 Ko. Quel que soit le nombre de fichiers, leur taille totale ne doit pas dépasser 120 Ko.
Le fichier de configuration se compose d'un ensemble de lignes, auxquelles s'appliquent les conditions suivantes :
- La première est toujours une ligne de commentaire, incluant la séquence de caractères suivante (44 octets) :
# Panasonic SIP Phone Standard Format File #
La représentation hexadécimale de cette séquence :
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
Pour éviter toute modification accidentelle de la séquence de caractères établie, il est recommandé de commencer le fichier de configuration par la ligne :
# Panasonic SIP Phone Standard Format File # DO NOT CHANGE THIS LINE! - Les fichiers de configuration doivent se terminer par une ligne vide.
- Chaque ligne doit se terminer par la séquence "".
- La longueur maximale d'une ligne est de 537 octets, y compris la séquence "".
- Les lignes suivantes sont ignorées :
- lignes dépassant la limite de 537 octets ;
- lignes vides ;
- lignes de commentaires commençant par le caractère "#" ;
- La ligne de chaque paramètre est écrite sous la forme XXX="yyy" (XXX : nom du paramètre, yyy : sa valeur). La valeur doit être entourée de guillemets.
- Le découpage de la ligne de paramètres en plusieurs lignes n'est pas autorisé. Cela entraînera une erreur de traitement du fichier de configuration et, par conséquent, un échec de l'initialisation.
- Les valeurs de certains paramètres doivent être spécifiées séparément pour chaque ligne. Un paramètre avec le suffixe "_1" dans son nom est le paramètre pour la ligne 1 ; "_2" pour la ligne 2, etc.
- La longueur maximale du nom du paramètre est de 32 caractères.
- La longueur maximale de la valeur du paramètre est de 500 caractères, à l'exception des guillemets.
- Les espaces dans la chaîne ne sont pas autorisés, sauf lorsque la valeur comprend un caractère d'espace.
- Les valeurs de certains paramètres peuvent être spécifiées comme « vides » pour établir une valeur de paramètre vide.
- Les paramètres sont spécifiés sans ordre défini.
- Si le même paramètre est spécifié dans le fichier de configuration plus d'une fois, la valeur indiquée en premier sera appliquée.
Un ensemble aussi strict d'exigences pour le fichier de configuration m'a franchement déçu. À mon avis, l'implémentation de l'interaction avec serveur la gestion des téléphones Panasonic est extrêmement peu pratique. Sur ce paramètre, le téléphone est nettement inférieur aux autres.
Lors de la première mise sous tension de l'appareil (ou après une réinitialisation d'usine), il essaie de charger ce qu'on appelle le fichier produit (dans ce cas, c'est KX-UT123RU.cfg), qui doit contenir les chemins vers les autres fichiers de configuration.
Fichier produit# 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»
Après cela, le téléphone affichera un message indiquant que la préparation a réussi et attendra qu'il soit redémarré. Ce n'est qu'après le redémarrage qu'il commencera à traiter les fichiers de configuration qui lui sont destinés.
Dans le fichier master.cfg, il est recommandé d'indiquer les paramètres généraux pour tous les téléphones. Comme pour Dlink, je vais indiquer seulement quelques paramètres. Les noms des autres paramètres et leurs valeurs peuvent être trouvés dans la documentation sur le site du fabricant.
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=""
Dans le fichier de configuration individuel de l'appareil, seules les réglages de l'abonné restent, comme d'habitude.
aabbccddeeff.cfgDISPLAY_NAME_1=«Utilisateur #168»
PHONE_NUMBER_1=«168»
SIP_URI_1=«168»
LINE_ENABLE_1=«Activé»
PROFILE_ENABLE_1=«Activé»
SIP_AUTHID_1=«168»
SIP_PASS_1=«SIP_PWD»
Grandstream GXP-1400
Les paramètres de ces téléphones sont stockés dans un fichier xml nommé cfg{mac}.xml, ou dans un fichier texte habituel nommé cfg{mac}. Ce téléphone demande uniquement le fichier de configuration individuel, donc il n'est pas possible d'optimiser les réglages en les plaçant dans un fichier commun. Une autre particularité de la configuration des appareils Grandstream est la nomenclature des paramètres. Tous sont numérotés et désignés par P###. Par exemple :
P1650 – concerne l'interface web pour la gestion du téléphone (0 – HTTPS, 1 – HTTP)
P47 – adresse du serveur SIP pour la connexion.
Si la configuration est stockée dans un fichier texte, les paramètres ne nécessitent aucune groupement et peuvent être dans n'importe quel ordre. Les lignes commençant par # sont considérées comme des commentaires.
Si les réglages sont présentés au format xml, ils doivent être imbriqués dans le nœud , qui à son tour doit être imbriqué dans . Tous les paramètres sont enregistrés sous la forme de balises correspondantes, avec la valeur du paramètre à l'intérieur.
Exemple de configuration
1
109
109
109
SIP_PWD
Utilisateur# 109
10.1.1.50
2
10.1.1.50
0
ADMIN_PWD
USER_PWD
fr
0
10.1.1.50/grandstream
1
TZc-11
10.1.1.4
1
http://10.1.1.50/provisioning/grandstream
30
Yealink T19 et T21
Les appareils de ces modèles prennent en charge des fichiers de configuration individuels pour les appareils et des fichiers communs pour les modèles. Dans mon cas, j'ai dû placer les paramètres communs dans les fichiers y000000000031.cfg et y000000000034.cfg respectivement. Les fichiers de configuration individuels sont nommés en fonction de l'adresse MAC : 00112233aabb.cfg.
Les paramètres pour les Yealink sont stockés au format texte. La seule exigence obligatoire est la présence, dans la première ligne, de la version du fichier, au format #!version:1.0.0.1.
Tous les paramètres sont écrits sous la forme paramètre = valeur. Les commentaires doivent commencer par le symbole "#". Les noms des paramètres et leurs valeurs peuvent être trouvés dans la documentation sur le site du fabricant.
paramètres généraux#!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 = Russe
#Specify the LCD language, the valid values are: English (default), Chinese_S, Chinese_T, German, French, Turkish, Italian, Polish, Spanish and Portuguese.
lang.gui = Russe
#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 = Carnet d'adresses
features.remote_phonebook.flash_time = 3600
paramètres individuels#!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 = Téléphone de test
#Configure the display name of account1.
account.1.display_name = Utilisateur 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
En fin de compte, grâce à la fonction exceptionnelle de l'auto-provisionnement, prévue dans les téléphones mentionnés, il n'y a eu aucun problème avec la connexion de nouveaux appareils au réseau. Tout s'est résumé à la découverte de l'adresse MAC du téléphone et à la génération du fichier de configuration selon un modèle.
J'espère que vous avez lu jusqu'à la fin et que vous avez tiré profit de ce que vous avez lu.
Merci pour votre attention.
Source : habr.com
