VoIP zoološki vrt — Provisioning

Uvod

Enkrat je vodstvo odobrilo eksperiment z uvedbo IP telefonije v našem podjetju. Ker sem imel malo izkušenj na tem področju, me je naloga zelo pritegnila in se potopil sem v raziskovanje različnih aspektov vprašanja. Po zaključku raziskovanja sem se odločil deliti pridobljeno znanje — upajoč, da bo komu v pomoč. Torej…

Izvorni podatki

Kot IP-telefon centralni sistem je bil izbran in implementiran Asterisk. Park telefonov sestavljajo naprave Cisco 7906g, Panasonic UT-KX123B, Grandstream GXP1400 in Dlink DPH-150S(E)/F3, Yealink T19 in T21. Ta raznolikost je posledica odločitve, da v okviru eksperimenta preizkusimo vse po malo, da oblikujemo svoje mnenje o razmerju cena/kakovost/udobje.

Naloga

Maximalno poenostaviti in unificirati postopek nastavitev novih naprav. Vse telefonske naprave morajo biti sinhronizirane po času, imeti telefonski imenik, ki se naloži s strežnika in omogočiti dostop do nastavitev za administratorja.

Rešitev te naloge je preprosta — uvesti samodejno nastavitev telefonov, tako imenovano Provisioning. O moji izvedbi te čudovite funkcionalnosti bo tekla beseda.

Nastavitev tftpd, dhcpd

Za razdelitev nastavitev telefonom sem izbral tftp kot univerzalno rešitev, ki jo podpirajo vse platforme, enostavno za nastavitev in upravljanje.

Specifične nastavitve za tftp niso bile potrebne. Namestil sem standardni tftpd in vse potrebne datoteke postavil v njegovo korensko mapo.
Datoteke z nastavitvami sem razporedil po mapah glede na proizvajalca telefona. Vendar pa naprava Cisco ni želela dostopati do svoje mape, zato sem jo moral hraniti v korenu.

Da bi telefonov obvestil o lokaciji tftp strežnika, sem uporabil option-66. Poleg tega sem jih razdelil v ločene razrede glede na proizvajalca. Vsak razred je prejel svoj segment naslovov in individualno mapo za konfiguracijske datoteke. Mimogrede, naprave D-link sem moral določiti po MAC-naslovih, saj informacije o proizvajalcu v dhcp-povpraševanju ne ponujajo.

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

Telefonske naprave sem moral prisilno izključiti iz skupnega bazena. Drugače niso želele zapustiti svojega "žabjega bazena".
Primer nastavitev podomrežja

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

Po ponovnem zagonu vseh vpletenih storitev so se telefoni samostojno usmerili po nastavitvah na dodeljen tftp strežnik. Zdaj jih je le še potrebno tam namestiti.

Cisco 7906

Te naprave so mi prišle v tovarniški embalaži. Morala sem jih preprogramirati, da sem jih povezala z Asteriskom. A to je že druga zgodba. V tem primeru sem za nastavitev naprave, v skladu z navodili, v korenu tftp strežnika ustvarila datoteko SEPAABBCCDDEEFF.cnf.xml. Kjer je AABBCCDDEEFF - MAC naslov naprave.

O nastavitvi telefonov Cisco je bilo že večkrat napisano, zato preprosto pustim delovno datoteko z nastavitvami.
Nastavitve 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

 Slovenian_Slovenia
 sl_SI
 
 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

Če se odločate za nakup telefona te serije, bodite previdni, saj samodejna nastavitev deluje le pri napravah 150S/F3. Pri napravi 150S/F2, ki sem jo imel v rokah, takšne funkcionalnosti nisem našel.

Konfiguracijska datoteka je lahko v formatu xml ali v običajnem besedilnem formatu. Za xml velja eno pravilo: oznaka mora biti na začetku vrstice, sicer jo parser ignorira in vrednost ustreznega parametra se ne bo spremenila.

Za nastavitev telefona se uporabljata dve datoteki. f0D00580000.cfg — za shranjevanje nastavitev vseh telefonov in 00112233aabb.cfg (MAC-naslov v majhnih črkah) za individualne nastavitve. Individualne nastavitve imajo večjo prioriteto.

Celoten sklop nastavitev obsega več kot tisoč vrstic; da ne bi zagušili članka, bom opisal minimalen nabor potrebnih nastavitev.

Obvezna sta osrednji vozlišče VOIP_CONFIG_FILE in v njem vdelano vozlišče version. Nastavitve bodo uporabljene le, če bo različica datoteke višja od trenutnih nastavitev v napravi. To vrednost lahko preverite preko .web-vmesnika telefona v razdelku maintenance (sistemskega upravljanja). Za telefone z tovarniškimi nastavitvami je v obeh primerih to 2.0002. Poleg tega mora biti različica individualne datoteke višja od različice skupne datoteke.

Najprej predstavim datoteko s skupno konfiguracijo za vse telefone. V osnovi hrani vse nastavitve, individualna datoteka pa bo odgovorna le za številko telefona in napis na zaslonu.

V dveh blokih, predstavljenih spodaj, se nastavijo parametri časovne cone in sinhronizacije časa, začetni vrata za RTP in omogoči se omrežni most med WAN in LAN priključki naprave.

Fragment№1

DHCP
2
1
1
0
VOIP
10000
200
10.1.1.4
1


0
60
12
1500


1
1

Названия параметров конфигурации достаточно ясны, чтобы не требовать подробного описания.
SIP для одной линии

5060


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

Настройки удаленного управления

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

Настройки телефона

123
123

0
112
Компания
5
1
30
0

1
0,,1
0
0
1


XML-PBook1
Телефонная книга
http://10.1.1.50/provisioning/dlink-phonebook.xml
:
0
0


друг,дом,работа,бизнес,одноклассник,коллега

Все остальные настройки останутся по умолчанию. Теперь любой телефон Dlink, подключённый к сети, сразу примет общий для всех набор параметров. Для задания индивидуальных параметров аппарата нужен отдельный файл, в котором указаны необходимые настройки для отдельного абонента.
настройки абонента

2.0006



SIP1
User #117
117
5060
117
SIP_PWD
3600
1
5060
117
SIP_PWD

Panasonic UT-KX123B

Ti aparati dobivaju postavke prema nešto drugačijem obrascu. Konfiguracija se pohranjuje u tekstualne datoteke. Maksimalna veličina konfiguracijske datoteke iznosi 120 KB. Neovisno o broju datoteka, ukupna njihova veličina ne smije prelaziti 120 KB.
Konfiguracijska datoteka sastoji se od niza redaka, na koje se primjenjuju u sljedećim uvjetima:

  • Prvi redak uvijek mora biti komentar koji uključuje sljedeću sekvencu znakova (44 bajta):
    # Panasonic SIP Phone Standard Format File #
    Šesnaestodnevni prikaz ove sekvencije:
    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čajno mijenjanje utvrđene sekvence znakova, preporučuje se da konfiguracijsku datoteku započnete redkom:
    # Panasonic SIP Phone Standard Format File # DO NOT CHANGE THIS LINE!
  • Konfiguracijske datoteke moraju se završiti praznim redkom.
  • Svaki redak mora završavati sekvencom "".
  • Maksimalna duljina retka iznosi 537 bajta, uključujući sekvencu ""
  • Sljedeći redovi se ignoriraju:
    • redovi koji premašuju ograničenje od 537 bajta;
    • prazni redovi;
    • redovi komentara koji počinju simbolom "#";
  • Redak svakog parametra zapisuje se u obliku XXX="yyy" (XXX: naziv parametra, yyy: njegova vrijednost). Vrijednost mora biti stavljena u dvostruke navodnike.
  • Razbijanje retka parametara na više redaka nije dopušteno. To će izazvati grešku obrade konfiguracijske datoteke i, posljedično, doći će do kvara 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 i tako dalje.
  • Maksimalna duljina naziva parametra iznosi 32 znaka.
  • Maksimalna duljina vrijednosti parametra iznosi 500 znakova, osim znaka dvostrukih navodnika.
  • V vrsti ne sme biti presledkov, razen če vrednost vsebuje simbol presledka.
  • Vrednosti nekaterih parametrov je mogoče določiti kot 'prazne', da se nastavi prazna vrednost parametra.
  • Parametri se določajo brez posebnega reda.
  • Če je isti parameter v konfiguracijski datoteki naveden več kot enkrat, se uporabi vrednost, navedena prva.

Taka stroga zahteva za konfiguracijsko datoteko me je, odkrito rečeno, razočarala. Po mojem mnenju je implementacija interakcije z serverom upravljanjem telefonov Panasonic izjemno nepraktična. Po tem parametru telefon bistveno zaostaja za drugimi.
Ob prvem vklopu naprave (ali po ponastavitvi na tovarniške nastavitve) poskuša naložiti tako imenovano datoteko izdelka (v tem primeru je to KX-UT123RU.cfg), v kateri morajo biti navedene poti do drugih konfiguracijskih datotek.
Datoteka izdelka# 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"

Nato telefon prikaže sporočilo o uspešni pripravi in čaka, da ga ponovno zaženejo. Šele po ponovnem zagonu bo začel obdelovati ustrezne konfiguracijske datoteke.

V datoteki master.cfg se priporočajo skupne nastavitve za vse telefone. Tako kot pri Dlink, bom navedel le nekatere parametre. Imena ostalih parametrov in njihove vrednosti lahko najdete v dokumentaciji na spletni strani proizvajalca.
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=""

V individualnem konfiguracijskem datoteke naprave, po tradiciji, ostanejo samo nastavitve naročnika.
aabbccddeeff.cfgDISPLAY_NAME_1=«Uporabnik #168»

PHONE_NUMBER_1=«168»
SIP_URI_1=«168»
LINE_ENABLE_1=«Omogočeno»
PROFILE_ENABLE_1=«Omogočeno»
SIP_AUTHID_1=«168»
SIP_PASS_1=«SIP_PWD»

Grandstream GXP-1400

Parametri teh telefonov se shranjujejo v eni xml-datoteki z imenom cfg{mac}.xml. Ali v navadni besedilni datoteki z imenom cfg{mac}. Ta telefon zahteva samo individualno konfiguracijsko datoteko, zato optimiziranje nastavitev s prenosom v skupno datoteko ne bo delovalo. Še ena značilnost nastavitve Grandstreamov je poimenovanje parametrov. Vse so številčene in označene kot P###. Na primer:

P1650 - odgovarja za spletni vmesnik za upravljanje s telefonom (0 - HTTPS, 1 - HTTP)
P47 - naslov SIP strežnika za povezovanje.

Če se konfiguracija hrani v besedilni datoteki, parametri ne zahtevajo nobene skupine in gredo v katerem koli vrstnem redu. Vrstice, ki se začnejo z #, se obravnavajo kot komentarji.

V primeru, da so nastavitve predstavljene v formatu xml, morajo biti vgrajene v vozlišče , ki mora biti vgrajeno v . Vsi parametri se zapisujejo v obliki ustreznih oznak s vrednostjo parametra znotraj.
Primer nastavitev

1
    
    109
    
    109
    
    109
    
    SIP_PWD
    
    Uporabnik# 109
    
        10.1.1.50
        2
   10.1.1.50
   0
   ADMIN_PWD
   USER_PWD
   sl
        0
        10.1.1.50/grandstream
   1
   TZc-11
   10.1.1.4
        1
        http://10.1.1.50/provisioning/grandstream
        30

Yealink T19 in T21

Aparati tehniških modelov podpirajo individualne konfiguracijske datoteke za naprave in skupne za modele. V mojem primeru sem skupne parametre postavil v datoteke y000000000031.cfg in y000000000034.cfg. Individualne konfiguracijske datoteke se imenujejo v skladu z MAC-naslovom: 00112233aabb.cfg.

Nastavitve za yealink naprave se shranjujejo v tekstovnem formatu. Edina obvezna zahteva je, da prva vrstica vsebuje različico datoteke v formatu #!version:1.0.0.1.

Vsi parametri so zapisani v obliki parameter = vrednost. Komentarji se morajo začeti s simbolom "#". Imena parametrov in njihove vrednosti lahko najdete v dokumentaciji na spletni strani proizvajalca.
opšti parametri#!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 = Slovenian
#Specify the LCD language, the valid values are: English (default), Chinese_S, Chinese_T, German, French, Turkish, Italian, Polish, Spanish and Portuguese.
lang.gui = Slovenian
#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 = Telefonni imenik
features.remote_phonebook.flash_time = 3600

individualne nastavitve#!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 = Testni telefon
#Configure the display name of account1.
account.1.display_name = Uporabnik 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 koncu, zahvaljujoč odlični funkciji auto-provision, ki je predvidena v omenjenih telefonih, ni bilo težav pri povezovanju novih naprav v omrežje. Vse se je zmanjšalo na ugotavljanje MAC-naslova telefona in generiranje konfiguracijske datoteke po predlogi.

Upam, da ste prebrali do konca in izvlekli korist iz prebranega.

Hvala na pažnji.

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster