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 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="»
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 =
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
