Uvod
Jednom je uprava odobrila eksperiment uvođenja IP telefonije u našoj tvrtki. Budući da je moje iskustvo u ovom području bilo oskudno, zadatak je probudio veliko zanimanje u meni i posvetio sam se istraživanju različitih aspekata ovog pitanja. Nakon završetka istraživanja odlučio sam podijeliti stečenog znanja - u nadi da će nekome biti od koristi. Dakle...
Izvorni podaci
Za IP-ATK odabran je i implementiran Asterisk. Park telefona sastoji se od uređaja Cisco 7906g, Panasonic UT-KX123B, Grandstream GXP1400 i Dlink DPH-150S(E)/F3, Yealink T19 i T21. Takva raznolikost rezultat je odluke da se tijekom eksperimenta isproba raznoliko, kako bi se steklo vlastito mišljenje o omjeru cijene/ kvalitete/ pogodnosti.
Zadatak
Maksimalno pojednostaviti i unificirati proces postavljanja novih uređaja. Svi telefoni moraju biti sinkronizirani po vremenu, imati adresar, preuziman s poslužitelja i pružati pristup postavkama za administratora.
Rješenje ovog zadatka je jednostavno - implementirati automatsku konfiguraciju telefona, tzv. Provisioning. O tome kako sam realizirao ovu sjajnu funkciju riječi će biti.
Postavke tftpd, dhcpd
Za distribuciju postavki telefonima odabrao sam tftp kao univerzalnu opciju, podržanu na svim platformama, koju je lako postaviti i upravljati.
Specifična postavka za tftp nije bila potrebna. Instalirao sam standardni tftpd i smjestio sve potrebne datoteke u njegovu korijensku direktoriju.
Datoteke s postavkama smjestio sam u kataloge prema proizvođaču telefona. Nažalost, uređaj iz Cisco marke nije se mogao povezati s vlastitom mapom, pa je morao biti pohranjen u korijenu.
Kako bih telefonima naveo lokaciju tftp poslužitelja, iskoristio sam option-66. Osim toga, podijelio sam ih u zasebne klase prema proizvođaču. Svaka klasa dobila je svoj vlastiti segment adresa i individualnu mapu za konfiguracijske datoteke. Što se tiče D-link uređaja, morali smo ih identificirati prema MAC adresama, budući da ne pružaju informacije o proizvođaču u dhcp zahtjevu.
Fragment 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/";
}
Telefoni su morali biti prisilno isključeni iz zajedničkog bazena. Inače se nikako nisu željeli preseliti u svoj 'žabnjaku'.
Primjer postavki podmreže
podmreža 10.1.1.0 mrežna maska 255.255.255.0 {
opcija usmjerivača 10.1.1.1;
skup {
odbij članove "cisco";
odbij članove "panasonic";
odbij članove "dlink";
raspon 10.1.1.230 10.1.1.240;
}
skup {
dopusti članove "cisco";
raspon 10.1.1.65 10.1.1.69;
}
skup {
dopusti članove "panasonic";
raspon 10.1.1.60 10.1.1.64;
}
skup {
dopusti članove "dlink";
raspon 10.1.1.55 10.1.1.59;
}
}
Nakon ponovnog pokretanja svih uključenih usluga, telefoni su se sigurno usmjerili prema postavkama na svom zadanom tftp-poslužitelju. Samo ih je trebalo tamo smjestiti.
Cisco 7906
Ovi uređaji došli su mi u tvorničkom pakiranju. Morao sam ih ponovno presložiti da ih povežem s Asteriskom. No, to je druga priča. U ovom konkretnom slučaju, za postavljanje uređaja, prema uputama, stvorio sam u korijenu tftp-poslužitelja datoteku SEPAABBCCDDEEFF.cnf.xml. Gdje je AABBCCDDEEFF – MAC-adresa uređaja.
O postavkama telefona od Cisco-a je već puno napisano, pa ću jednostavno ostaviti radnu datoteku s postavkama.
Postavke za 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
Ako tek planirate kupiti telefon iz ove serije, obratite pažnju, automatsko podešavanje podržava se samo na uređajima 150S/F3. Na uređaju 150S/F2, koji mi je došao u ruke, takvu funkcionalnost nisam pronašao.
Konfigurationska datoteka može biti u xml formatu ili običnom tekstualnom formatu. Za xml postoji jedan zahtjev: oznaka mora biti na početku retka, inače će ju parser ignorirati i vrijednost odgovarajućeg parametra se neće promijeniti.
Za podešavanje telefona koriste se dvije datoteke. f0D00580000.cfg — za pohranu postavki svih telefona i 00112233aabb.cfg (MAC adresa u malim slovima) za pojedinačne postavke. Pojedinačne postavke, naravno, imaju veći prioritet.
Cjelokupni set postavki obuhvaća više od tisuću redaka, kako ne bih pretrpavao članak, opisat ću minimalno dovoljan set postavki.
Obavezni su korijenski čvor VOIP_CONFIG_FILE i u njega ugrađeni čvor version. Postavke će se primijeniti samo ako je verzija datoteke viša od trenutnih postavki u uređaju. Otuđeriti ovu vrijednost možete putem web sučelja telefona u odjeljku maintenance (sistemsko upravljanje). Za telefone s tvorničkim postavkama, u oba slučaja, to je 2.0002. Osim toga, verzija pojedinačne datoteke mora biti veća od verzije opće datoteke.
Prvo navodim datoteku s općom konfiguracijom za sve telefone. U suštini, ona pohranjuje sve postavke, pojedinačna datoteka će odgovarati samo za broj telefona i natpis na ekranu.
U dva bloka, navedena u nastavku, postavljaju se parametri vremenske zone i sinkronizacije vremena, početni port za RTP i uključuje se mrežni most između WAN i LAN priključaka uređaja.
Fragment br. 1
DHCP 2 1 1 0 VOIP 10000 200 10.1.1.4 1 0 60 12 1500 1 1
Nazivi konfiguracijskih parametara su dovoljno "jasni" da ih ne treba detaljno opisivati.
SIP za jednu liniju
5060 SIP1 10.1.1.50 5060 3600 1 10.1.1.50 1 0 G711A,G711U,G722
Postavke daljinskog upravljanja
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
Postavke telefona
123 0 112 Tvrtka 5 1 30 0 1 0,,1 0 0 1 XML-PBook1 Imensik http://10.1.1.50/provisioning/dlink-phonebook.xml : 0 0 prijatelj,dom,rad,biznis,razredni,kollega
Sve ostale postavke ostat će "pojedinačne". Sada će se svaki Dlink telefon povezan u mrežu odmah preuzeti zajednički set parametara. Da biste postavili individualne postavke za uređaj potreban je zaseban datoteku. U njemu treba samo navesti potrebne postavke za pojedinog korisnika.
postavke korisnika
2.0006 SIP1 Korisnik #117 117 5060 117 SIP_PWD 3600 1 5060 117 SIP_PWD
Panasonic UT-KX123B
Ovi uređaji primaju postavke na nešto drugačiji način. Konfiguracija se pohranjuje u tekstualnim datotekama. Maksimalna veličina konfiguracijske datoteke iznosi 120 KB. Bez obzira na broj datoteka, njihova ukupna veličina ne smije prelaziti 120 KB.
Konfiguracijska datoteka sastoji se od skupa redaka, na koje se primjenjuju sljedeći uvjeti:
- Prvi uvijek ide redak komentara, koji uključuje sljedeću sekvencu znakova (44 bajta):
# Panasonic SIP Phone Standard Format File #
Šesnaestostruko prikazivanje ove sekvence:
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
Kako biste spriječili slučajnu promjenu postavljene sekvence znakova, preporučuje se započeti konfiguracijsku datoteku s retka:
# Panasonic SIP Phone Standard Format File # DO NOT CHANGE THIS LINE! - Konfiguracijske datoteke moraju završavati praznim redkom.
- Svaki redak mora završavati sekvencom "".
- Maksimalna duljina retka iznosi 537 bajta, uključujući sekvencu "".
- Sljedeći redci se ignoriraju:
- redci koji prelaze ograničenje od 537 bajta;
- prazni redci;
- redci komentara koji počinju sa simbolom "#";
- Svaki parametar zabilježen je u obliku XXX=«yyy» (XXX: naziv parametra, yyy: njegova vrijednost). Vrijednost mora biti uvrštena u dvostruke navodnike.
- Razdvajanje retka parametara na više redaka nije dopušteno. To će dovesti do greške u obradi konfiguracijske datoteke i rezultirat će neuspjehom inicijalizacije.
- Vrijednosti nekih parametara potrebno je navesti odvojeno za svaku liniju. Parametar sa sufiksom "_1" u nazivu je parametar za liniju 1; "_2"— za liniju 2 itd.
- Maksimalna duljina naziva parametra iznosi 32 znaka.
- Maksimalna duljina vrijednosti parametra iznosi 500 znakova, osim simbola dvostrukih navodnika.
- Razmaci u nizu nisu dopušteni osim u slučajevima kada vrijednost uključuje razmak.
- Vrijednosti nekih parametara mogu se definirati kao "prazne" kako bi se postavila prazna vrijednost parametra.
- Parametri se navode bez određenog redoslijeda.
- Ako je isti parametar naveden više od jednom u konfiguracijskoj datoteci, primjenjuje se prva navedena vrijednost.
Ovakva ozbiljna skupina zahtjeva za konfiguracijsku datoteku me, iskreno, rastužila. Po mom mišljenju, implementacija upravljanja serverom na telefonima Panasonic je izuzetno nezgodna. Po tom parametru, telefon značajno zaostaje za ostalima.
Prilikom prvog uključivanja uređaja (ili nakon vraćanja na tvorničke postavke) pokušava učitati takozvanu proizvodnu datoteku (u ovom slučaju KX-UT123RU.cfg), koja bi trebala sadržavati putanje do ostalih konfiguracijskih datoteka.
Proizvodna datoteka# 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"
Nakon toga telefon će prikazati poruku o uspješnom završetku pripreme i čekati da ga ponovno pokrenu. Samo nakon ponovnog pokretanja počinje obrađivati pripadajuće konfiguracijske datoteke.
U datoteci master.cfg preporuča se navesti zajedničke postavke za sve telefone. Kao i u slučaju Dlinka, navest ću samo neke od parametara. Imena ostalih parametara i njihove vrijednosti mogu se naći u dokumentaciji na web stranici proizvođača.
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=""
U individualnom konfiguracijskom datoteci uređaja, tradicionalno ostaju samo postavke pretplatnika.
aabbccddeeff.cfgDISPLAY_NAME_1=„Korisnik #168“
PHONE_NUMBER_1=„168“
SIP_URI_1=„168“
LINE_ENABLE_1=„Omogućeno“
PROFILE_ENABLE_1=„Omogućeno“
SIP_AUTHID_1=„168“
SIP_PASS_1=„SIP_PWD“
Grandstream GXP-1400
Parametri ovih telefona čuvaju se u jednom xml datoteci s imenom cfg{mac}.xml. Ili u običnoj tekstualnoj datoteci s imenom cfg{mac}. Ovaj telefon traži samo individualni konfiguracijski datoteke, tako da optimizacija postavki prebacivanjem u zajednički datoteku nije moguća. Još jedna karakteristika postavki Grandstreama je imenovanje parametara. Svi su numerirani i označeni kao P###. Na primjer:
P1650 – odgovara za web sučelje za upravljanje telefonom (0 – HTTPS, 1 – HTTP)
P47 – adresa SIP poslužitelja za povezivanje.
Ako se konfiguracija čuva u tekstualnoj datoteci, parametri ne zahtijevaju nikakvu grupiranje i dolaze u bilo kojem redu. Retci koji počinju s # smatraju se komentarima.
U slučaju da su postavke predstavljene u xml formatu, moraju biti ugniježdene unutar čvora , koji pak mora biti ugniježden unutar . Svi parametri se zapisuju u obliku odgovarajućih oznaka s vrijednošću parametra unutar.
Primjer postavke
1
109
109
109
SIP_PWD
Korisnik# 109
10.1.1.50
2
10.1.1.50
0
ADMIN_PWD
USER_PWD
hr
0
10.1.1.50/grandstream
1
TZc-11
10.1.1.4
1>
http://10.1.1.50/provisioning/grandstream>
30>
Yealink T19 i T21
Uređaji ovih modela podržavaju individualne konfiguracijske datoteke za uređaje i zajedničke za modele. U mom slučaju, morao sam zajedničke parametre smjestiti u datoteke y000000000031.cfg i y000000000034.cfg, redom. Individualne konfiguracijske datoteke imenuju se prema MAC adresi: 00112233aabb.cfg.
Postavke za yealink uređaje čuvaju se u tekstualnom formatu. Od obaveznih zahtjeva postoji samo prisutnost verzije datoteke u prvom redu, u formatu #!version:1.0.0.1.
Svi parametri se zapisuju u obliku parametar = vrijednost. Komentari moraju počinjati simbolom "#". Imena parametara i njihove vrijednosti mogu se pronaći u dokumentaciji na web stranici proizvođača.
opće postavke#!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 = Hrvatski
#Specify the LCD language, the valid values are: English (default), Chinese_S, Chinese_T, German, French, Turkish, Italian, Polish, Spanish and Portuguese.
lang.gui = Hrvatski
#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 = Telefonski imenik
features.remote_phonebook.flash_time = 3600
individualne postavke#!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 = Test telefon
#Configure the display name of account1.
account.1.display_name = Korisnik 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
Na kraju, zahvaljujući izvrsnoj funkciji auto-provision, predviđenoj u tim uređajima, s povezivanjem novih uređaja na mrežu nisu nastali nikakvi problemi. Sve se svodilo na otkrivanje MAC adrese telefona i generiranje konfiguracijske datoteke prema predlošku.
Nadam se da ste pročitali do kraja i izvukli korist iz onoga što ste pročitali.
Hvala na pažnji.
Izvor: habr.com
