VoIP zoo — Provisioning

Introduzione

Un giorno la direzione ha approvato un esperimento per l'implementazione della telefonia IP nel nostro ufficio. Poiché la mia esperienza in questo campo era minimale, il compito ha suscitato in me un enorme interesse e mi sono immerso nello studio di vari aspetti della questione. Alla fine dell'immersione ho deciso di condividere le conoscenze acquisite, sperando che possano essere utili a qualcuno. E così...

Dati di origine

Come IP-PBX è stata scelta e implementata Asterisk. Il parco telefonico è composto da dispositivi Cisco 7906g, Panasonic UT-KX123B, Grandstream GXP1400 e Dlink DPH-150S(E)/F3, Yealink T19 e T21. Questa varietà è dovuta al fatto che nell'ambito dell'esperimento si è deciso di provare un po' di tutto, per formare un'opinione sul rapporto prezzo/qualità/comodità.

Compito

Semplificare e unificare al massimo il processo di configurazione dei nuovi dispositivi. Tutti i telefoni devono essere sincronizzati nel tempo, avere una rubrica telefonica, caricata da server e fornire accesso alle impostazioni per l'amministratore.

La soluzione a questo problema è semplice: implementare la configurazione automatica dei telefoni, il cosiddetto Provisioning. In realtà, parlerò della mia implementazione di questa fantastica funzione.

Configurazione tftpd, dhcpd

Per distribuire le impostazioni ai telefoni ho scelto tftp come opzione universale, supportata da tutte le piattaforme, facile da configurare e gestire.

Non è stata necessaria una configurazione specifica per tftp. Ho installato tftpd predefinito e ho collocato tutti i file necessari nella sua directory principale.
Ho sistemato i file di configurazione in cartelle in base al produttore del telefono. Tuttavia, il dispositivo Cisco non si è collegato alla sua cartella, quindi ho dovuto conservarlo nella directory principale.

Per indicare ai telefoni la posizione del server tftp, ho utilizzato l'opzione 66. Inoltre, li ho suddivisi in classi separate in base al produttore. Ogni classe ha ricevuto un segmento di indirizzi e una cartella individuale per i file di configurazione. A proposito, i dispositivi D-link sono stati identificati in base agli indirizzi MAC, poiché non forniscono informazioni sul produttore nella richiesta dhcp.

Frammento 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/";
        }

I telefoni sono stati costretti a essere esclusi dal pool generale. Altrimenti non volevano proprio passare nel loro 'ribollitoio'.
Esempio di configurazione della subnet

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;
        }
}

Dopo il riavvio di tutti i servizi coinvolti, i telefoni si sono dirigiti con sicurezza verso il server tftp assegnato per le impostazioni. Resta solo da posizionarli lì.

Cisco 7906

Questi apparecchi mi sono stati forniti in imballaggio originale. Ho dovuto ricollegarli per farli funzionare con Asterisk. Ma questa è un'altra storia. Nel caso specifico, per configurare l'apparecchio, ho creato, secondo le istruzioni, un file SEPAABBCCDDEEFF.cnf.xml nella radice del server tftp. Dove AABBCCDDEEFF è l'indirizzo MAC dell'apparecchio.

È stato già scritto più volte sulla configurazione dei telefoni Cisco, quindi lascerò semplicemente il file di configurazione funzionante.
Impostazioni per cisco

true
 SIP
 root
 ADMIN_PWD

 
 D-M-Y
 Centrale del Pacifico Standard Time
     
         
             10.1.1.4
              Unicast
          
     
 

   
 10.1.1.50
 
 2000
 5060
 5061
 
 10.1.1.50
   
 

 Disabilita


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
 Telefono 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
 

 Utente #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

 Russo_Federazione_Russa
 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

Se stai per acquistare un telefono di questa serie, fai attenzione, l'autoconfigurazione è supportata solo nei dispositivi 150S/F3. Nel dispositivo 150S/F2 che ho ricevuto, non ho trovato questa funzionalità.

Il file di configurazione può essere sia in formato xml che in testo semplice. Per xml, c'è un'unica richiesta: il tag deve essere all'inizio della riga, altrimenti il parser lo ignorerà e il valore del parametro corrispondente non verrà modificato.

Per configurare il telefono vengono utilizzati due file. f0D00580000.cfg — per memorizzare le impostazioni di tutti i telefoni e 00112233aabb.cfg (indirizzo MAC in minuscolo) per le impostazioni individuali. Le impostazioni individuali, ovviamente, hanno una priorità maggiore.

L'insieme completo delle impostazioni conta più di mille righe, per non appesantire l'articolo, descriverò il set di impostazioni minime necessarie.

Sono obbligatori il nodo radice VOIP_CONFIG_FILE e il nodo annidato versione. Le impostazioni verranno applicate solo se la versione del file è superiore a quella delle impostazioni attuali nel dispositivo. Questo valore può essere trovato attraverso l'interfaccia web del telefono nella sezione manutenzione (gestione del sistema). Per i telefoni con impostazioni di fabbrica in entrambi i casi è 2.0002. Inoltre, la versione del file individuale deve essere maggiore della versione del file generale.

Comincerò con il file di configurazione generale per tutti i telefoni. In sostanza, memorizza tutte le impostazioni, il file individuale si occuperà solo del numero di telefono e della scritta sullo schermo.

Nei due blocchi riportati di seguito vengono impostati i parametri del fuso orario e della sincronizzazione dell'orario, la porta iniziale per RTP e viene attivato il ponte di rete tra le porte WAN e LAN del dispositivo.

Fregmento№1

DHCP
2
1
1
0
VOIP
10000
200
10.1.1.4
1


0
60
12
1500


1
1

I nomi dei parametri di configurazione sono abbastanza "parlanti" da non richiedere una descrizione dettagliata.
SIP per una linea

5060


SIP1
10.1.1.50
5060
3600
1
10.1.1.50
1
0
G711A,G711U,G722

Impostazioni di controllo 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

Impostazioni del telefono

123
123

0
112
Azienda
5
1
30
0

1
0,,1
0
0
1


XML-PBook1
Rubrica
http://10.1.1.50/provisioning/dlink-phonebook.xml
:
0
0


amico, casa, lavoro, affari, compagno di classe, collega

Tutte le altre impostazioni rimarranno "di default". Ora qualsiasi telefono Dlink collegato alla rete accetterà immediatamente il set di parametri comune a tutti. Per impostare parametri individuali per il dispositivo è necessario un file separato. In esso devono essere specificate solo le impostazioni necessarie per un singolo abbonato.
impostazioni dell'abbonato

2.0006



SIP1
Utente #117
117
5060
117
SIP_PWD
3600
1
5060
117
SIP_PWD

Panasonic UT-KX123B

Questi dispositivi ricevono le impostazioni secondo uno schema leggermente diverso. La configurazione è memorizzata in file di testo. La dimensione massima del file di configurazione è di 120 KB. Indipendentemente dal numero di file, la loro dimensione totale non deve superare i 120 KB.
Il file di configurazione è composto da un insieme di righe, a cui si applicano le seguenti condizioni:

  • La prima riga è sempre un commento, contenente la seguente sequenza di caratteri (44 byte):
    # Panasonic SIP Phone Standard Format File #
    Rappresentazione esadecimale di questa sequenza:
    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
    Per prevenire modifiche accidentali della sequenza di caratteri impostata, è consigliabile iniziare il file di configurazione con la riga:
    # Panasonic SIP Phone Standard Format File # DO NOT CHANGE THIS LINE!
  • I file di configurazione devono terminare con una riga vuota.
  • Ogni riga deve terminare con la sequenza "".
  • La lunghezza massima di una riga è di 537 byte, inclusa la sequenza ""
  • Le seguenti righe vengono ignorate:
    • righe che superano il limite di 537 byte;
    • righe vuote;
    • righe di commento che iniziano con il simbolo "#";
  • La riga di ciascun parametro è scritta nella forma XXX="yyy" (XXX: nome del parametro, yyy: il suo valore). Il valore deve essere racchiuso tra virgolette.
  • La suddivisione della riga dei parametri in più righe non è consentita. Ciò porterà a un errore nell'elaborazione del file di configurazione e, di conseguenza, a un fallimento dell'inizializzazione.
  • I valori di alcuni parametri devono essere specificati separatamente per ciascuna linea. Il parametro con suffisso "_1" nel nome è un parametro per la linea 1; "_2"— per la linea 2 e così via.
  • La lunghezza massima del nome del parametro è di 32 caratteri.
  • La lunghezza massima del valore del parametro è di 500 caratteri, escluse le virgolette.
  • Gli spazi nella stringa non sono ammessi, ad eccezione dei casi in cui il valore include un carattere di spazio.
  • I valori di alcuni parametri possono essere specificati come "vuoti" per impostare un valore vuoto per il parametro.
  • I parametri possono essere specificati senza un ordine definito.
  • Se lo stesso parametro è specificato nel file di configurazione più di una volta, verrà applicato il valore specificato per primo.

Un insieme di requisiti così rigoroso per il file di configurazione mi ha sinceramente deluso. A mio avviso, l'implementazione dell'interfaccia con server la gestione dei telefoni Panasonic è estremamente scomoda. Su questo parametro, il telefono è significativamente inferiore agli altri.
All'accensione iniziale del dispositivo (o dopo un ripristino delle impostazioni di fabbrica) tenta di caricare il cosiddetto file prodotto (in questo caso KX-UT123RU.cfg), che dovrebbe contenere i percorsi agli altri file di configurazione.
File prodotto# 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"

Dopo ciò, il telefono mostrerà un messaggio sullo schermo riguardante il completamento riuscito della preparazione e attenderà un riavvio. Solo dopo il riavvio inizierà a elaborare i file di configurazione appropriati.

Nel file master.cfg è consigliabile specificare le impostazioni generali per tutti i telefoni. Come nel caso di Dlink, indicherò solo alcuni parametri. I nomi degli altri parametri e i loro valori possono essere trovati nella documentazione sul sito del produttore.
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=""

Nel file di configurazione individuale del dispositivo, per tradizione, rimangono solo le impostazioni dell'abbonato.
aabbccddeeff.cfgDISPLAY_NAME_1=«Utente #168»

PHONE_NUMBER_1=«168»
SIP_URI_1=«168»
LINE_ENABLE_1=«Abilitato»
PROFILE_ENABLE_1=«Abilitato»
SIP_AUTHID_1=«168»
SIP_PASS_1=«SIP_PWD»

Grandstream GXP-1400

I parametri di questi telefoni sono memorizzati in un unico file xml chiamato cfg{mac}.xml. Oppure in un file di testo normale chiamato cfg{mac}. Questo telefono richiede solo un file di configurazione individuale, quindi non sarà possibile ottimizzare le impostazioni spostandole in un file comune. Un'altra caratteristica della configurazione dei Grandstream è la denominazione dei parametri. Tutti sono numerati e contrassegnati come P###. Ad esempio:

P1650 – controlla l'interfaccia web per la gestione del telefono (0 – HTTPS, 1 – HTTP)
P47 – indirizzo del server SIP per la connessione.

Se la configurazione è memorizzata in un file di testo, i parametri non richiedono alcun raggruppamento e possono essere disposti in qualsiasi ordine. Le righe che iniziano con # sono considerate commenti.

Nel caso in cui le impostazioni siano presentate in formato xml, devono essere annidate nel nodo , che a sua volta deve essere annidato in . Tutti i parametri vengono registrati sotto forma di tag corrispondenti con il valore del parametro all'interno.
Esempio di configurazione

1
    
    109
    
    109
    
    109
    
    SIP_PWD
    
    Utente# 109

        10.1.1.50
        2
   10.1.1.50
   0
   ADMIN_PWD
   USER_PWD
   ru
        0
        10.1.1.50/grandstream
   1
   TZc-11
   10.1.1.4
        1
        http://10.1.1.50/provisioning/grandstream
        30

Yealink T19 e T21

Le apparecchiature di questi modelli supportano file di configurazione individuali per i dispositivi e comuni per i modelli. Nel mio caso, ho dovuto posizionare i parametri comuni nei file y000000000031.cfg e y000000000034.cfg rispettivamente. I file di configurazione individuali sono nominati secondo l'indirizzo MAC: 00112233aabb.cfg.

Le impostazioni per i telefoni yealink sono memorizzate in formato testuale. L'unico requisito obbligatorio è la presenza della versione del file nella prima riga, nel formato #!version:1.0.0.1.

Tutti i parametri sono riportati nel formato parametro = valore. I commenti devono iniziare con il simbolo "#". I nomi dei parametri e i loro valori possono essere trovati nella documentazione sul sito del produttore.
impostazioni comuni#!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 = Russo
#Specify the LCD language, the valid values are: English (default), Chinese_S, Chinese_T, German, French, Turkish, Italian, Polish, Spanish and Portuguese.
lang.gui = Russo
#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 = Rubrica
features.remote_phonebook.flash_time = 3600

impostazioni individuali#!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 = Telefono di prova
#Configure the display name of account1.
account.1.display_name = Utente 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

In definitiva, grazie alla fantastica funzione di auto-provisioning presente nei telefoni che ho menzionato, non ci sono stati problemi di connessione alla rete dei nuovi apparecchi. Si è trattato solo di scoprire l'indirizzo MAC del telefono e generare il file di configurazione secondo il modello.

Spero che tu sia riuscito a leggere fino alla fine e che tu ne abbia tratto beneficio.

Grazie per l'attenzione.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster