Introduzione
Un giorno la direzione ha approvato un esperimento per l'introduzione della telefonia IP nella nostra azienda. Poiché la mia esperienza in questo campo era minima, il compito ha suscitato in me un enorme interesse e mi sono immerso nello studio di vari aspetti della questione. Alla fine di questo approfondimento, ho deciso di condividere le conoscenze acquisite, nella speranza che possano essere utili a qualcuno. Quindi…
Dati di origine
Come centrale telefonica IP è stato scelto e implementato Asterisk. Il parco telefoni è composto da dispositivi Cisco 7906g, Panasonic UT-KX123B, Grandstream GXP1400 e Dlink DPH-150S(E)/F3, Yealink T19 e T21. Tale varietà è dovuta al fatto che nell'ambito dell'esperimento è stata presa la decisione di provare un po' di tutto, per formare un'opinione sul rapporto qualità/prezzo/comodità.
Compito
Massimizzare la semplificazione e l'unificazione del processo di configurazione di nuovi dispositivi. Tutti i telefoni devono essere sincronizzati nel tempo, avere una rubrica telefonica, caricabile da сервера e fornire accesso alle impostazioni per l'amministratore.
La soluzione a questo problema è semplice: implementare la configurazione automatica dei telefoni, il cosiddetto Provisioning. Di fatto, parlerò della mia implementazione di questa meravigliosa funzione.
Configurazione di tftpd, dhcpd
Per la distribuzione delle impostazioni ai telefoni ho scelto tftp come opzione universale, supportata da tutte le piattaforme, facile da configurare e gestire.
Non è stata necessaria alcuna configurazione specifica per tftp. Ho installato tftpd di default e ho posizionato tutti i file necessari nella sua directory principale.
Ho posizionato i file di configurazione in cartelle in base al produttore del telefono. Tuttavia, il dispositivo Cisco non è mai riuscito ad accedere alla propria cartella, quindi ho dovuto conservarli nella radice.
Per indicare ai telefoni la posizione del server tftp, ho utilizzato l'opzione 66. Inoltre, li ho suddivisi in classi separate per produttore. Ogni classe ha ricevuto un proprio segmento di indirizzi e una cartella individuale per i file di configurazione. A proposito, per i dispositivi D-link ho dovuto calcolare gli indirizzi MAC, poiché non forniscono informazioni sul produttore nella richiesta dhcp.
Un frammento di 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 hanno dovuto essere esclusi forzatamente dal pool generale. Altrimenti, non volevano assolutamente andare nel loro "stagno di rane".
Esempio di configurazione della sottorete
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 hanno iniziato a cercare con fiducia le impostazioni sul loro server TFTP. Mancava solo di posizionarli lì.
Cisco 7906
Questi dispositivi mi sono arrivati in confezione originale. Ho dovuto riprogrammarli per farli funzionare con Asterisk. Ma questa è un'altra storia. In questo caso, per configurare il dispositivo, ho creato nel root del server TFTP il file SEPAABBCCDDEEFF.cnf.xml, dove AABBCCDDEEFF è l'indirizzo MAC del dispositivo.
Di configurazioni per i telefoni Cisco se ne è già parlato più volte, quindi lascerò semplicemente il file di configurazione funzionante.
Impostazioni per cisco
true
SIP
root
ADMIN_PWD
D-M-Y
Central Pacific Standard Time
10.1.1.4
Unicast
10.1.1.50
2000
5060
5061
10.1.1.50
Disable
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
Cisco Phone
2
false
15000
10
true
false
16384
32766
9
10.1.1.50
5060
2
3
false
3
4
5
true
true
false
true
User #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
Russian_Russian_Federation
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, la configurazione automatica è supportata solo nei dispositivi 150S/F3. Nel dispositivo 150S/F2, che ho avuto in mano, non ho trovato questa funzionalità.
Il file di configurazione può essere sia nel formato xml che in formato testo standard. Per l'xml c'è un requisito: il tag deve essere all'inizio della riga, altrimenti il parser lo ignorerà e il valore del parametro corrispondente non verrà modificato.
Per la configurazione del telefono si utilizzano due file. f0D00580000.cfg — per memorizzare le impostazioni di tutti i telefoni e 00112233aabb.cfg (l'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 minimo di impostazioni necessario.
Obbligatori sono il nodo radice VOIP_CONFIG_FILE e il nodo annidato version. Le impostazioni verranno applicate solo se la versione del file è superiore a quella delle attuali impostazioni nell'apparecchio. È possibile conoscere questo valore tramite l'interfaccia web del telefono nella sezione della manutenzione (gestione di sistema). Per i telefoni con impostazioni di fabbrica, in entrambi i casi, è 2.0002. Inoltre, la versione del file individuale deve essere superiore alla versione del file comune.
Per prima cosa, fornirò il file con la configurazione generale per tutti i telefoni. In sostanza, contiene tutte le impostazioni, mentre il file individuale risponderà solo al numero di telefono e alla scritta sullo schermo.
Nei due blocchi riportati sotto, si impostano i parametri del fuso orario e della sincronizzazione dell'orario, la porta iniziale per RTP e si attiva il bridge di rete tra le porte WAN e LAN dell'apparecchio.
Fragmento №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 chiari 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 gestione remota
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 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,collega
Tutte le altre impostazioni rimarranno «di default». Ora qualsiasi telefono Dlink connesso alla rete assumerà immediatamente il set di parametri comune a tutti. Per impostare parametri individuali per il dispositivo è necessario un file separato. In esso è sufficiente indicare solo le impostazioni necessarie per il 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 configurazioni in modo 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 complessiva non deve superare i 120 KB.
Il file di configurazione è composto da un insieme di righe, su 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 evitare modifiche accidentali alla sequenza di caratteri impostata, si consiglia di 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, compresa 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 ogni parametro è registrata nella forma XXX="yyy" (XXX: nome del parametro, yyy: suo valore). Il valore deve essere racchiuso tra virgolette doppie.
- La suddivisione di una riga di parametri in più righe non è consentita. Ciò porterà a un errore nell'elaborazione del file di configurazione e, di conseguenza, a un errore di inizializzazione.
- I valori di alcuni parametri devono essere specificati separatamente per ogni linea. Un parametro con il 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 consentiti, tranne nei casi in cui il valore include il carattere di spazio.
- I valori di alcuni parametri possono essere specificati come "vuoti" per impostare un valore vuoto del parametro.
- I parametri possono essere specificati in qualsiasi ordine.
- Se lo stesso parametro è specificato nel file di configurazione più di una volta, viene utilizzato il valore specificato per primo.
Un insieme di requisiti così rigoroso per il file di configurazione mi ha sinceramente deluso. A mio avviso, l'interazione con server il sistema di gestione dei telefoni Panasonic è estremamente scomoda. In questo parametro, il telefono è significativamente inferiore agli altri.
Al primo avvio del dispositivo (o dopo un ripristino alle impostazioni di fabbrica), esso prova a caricare il cosiddetto file prodotto (in questo caso KX-UT123RU.cfg), che deve contenere i percorsi degli 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 questo, il telefono visualizzerà un messaggio di successo e attenderà fino a quando non verrà riavviato. Solo dopo il riavvio inizierà a elaborare i file di configurazione assegnati.
Nel file master.cfg è consigliato specificare le impostazioni comuni 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=«»
XMLAPP_LDAP_USERID=""
XMLAPP_LDAP_USERPASS=""
Nel file di configurazione individuale del dispositivo, per tradizione, vengono mantenute solo le impostazioni dell'utente.
aabbccddeeff.cfgDISPLAY_NAME_1=«User #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
Le impostazioni di questi telefoni sono memorizzate in un singolo file xml chiamato cfg{mac}.xml. Oppure in un normale file di testo chiamato cfg{mac}. Questo telefono richiede solo un file di configurazione individuale, quindi non è possibile ottimizzare le impostazioni estraendole 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 gestire il 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 # vengono considerate commenti.
Nel caso in cui le impostazioni siano in formato xml, devono essere annidate nel nodo , che a sua volta deve essere annidato in . Tutti i parametri sono registrati come tag corrispondenti con il valore del parametro all'interno.
Esempio di configurazione
1
109
109
109
SIP_PWD
User# 109
10.1.1.50
2
10.1.1.50
0
ADMIN_PWD
USER_PWD
it
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
I dispositivi di questi modelli supportano file di configurazione individuali per i dispositivi e file 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 denominati in base all'indirizzo MAC: 00112233aabb.cfg.
Le impostazioni per i Yealink sono memorizzate in formato di testo. L'unico requisito obbligatorio è la presenza nella prima riga della versione del file, nel formato #!version:1.0.0.1.
Tutti i parametri sono registrati nella forma 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 generali#!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 =
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 test
#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
Alla fine, grazie alla straordinaria funzione di auto-provisioning prevista nei telefoni di cui ho parlato, non ci sono stati problemi nella connessione di nuovi dispositivi alla rete. Si è trattato solo di identificare l'indirizzo MAC del telefono e generare il file di configurazione secondo un modello.
Spero che abbiate letto fino alla fine e che abbiate tratto beneficio da quanto scritto.
Grazie per l'attenzione.
Fonte: habr.com
