Zoo VoIP – Provisioning

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
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=«10.1.1.50/provisioning/panasonic-phonebook.xml»
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 = 10.1.1.50/provisioning/yealink-phonebook.xml
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

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster