VoIP loomine — Provisioning

Sissejuhatus

Kord kord, juhtkond heaks kiitis katse IP telefoni kasutuselevõtuks meie büroos. Kuna mu kogemus sellel alal oli nullilähedane, tekitas ülesanne minus suurt huvi ja süvenesin probleemi erinevatesse aspektidesse. Pärast süvenemist otsustasin jagada omandatud teadmisi — lootuses, et need on kellelegi kasulikud. Nii…

Algandmed

IP-ATS-ina valiti ja käivitati Asterisk. Telefonipark koosneb seadmetest Cisco 7906g, Panasonic UT-KX123B, Grandstream GXP1400 ning Dlink DPH-150S(E)/F3, Yealink T19 ja T21. Selline mitmekesisus tuleneb asjaolust, et katse raames otsustati proovida erinevaid seadmeid, et kujundada arvamus hinna/kvaliteedi/mugavuse suhtest.

Ülesanne

Maksimaalselt lihtsustada ja ühtlustada uute seadmete seadistamise protsessi. Kõik telefonid peavad olema sünkroonitud ajaga, omama telefoniraamatut, mis laaditakse sisse serverile ja võimaldama administraatori seadete juurde pääsemist.

Selle probleemi lahendus on lihtne — rakendada telefonide automaatset seadistamist, nn Provisioning. Tegelikult räägibki jutt selle suurepärase funktsiooni rakendamisest.

tftpd, dhcpd seadistamine

Telerakenduste seadistamiseks valisin tftp, kuna see on universaalne lahendus, mida kõik platvormid toetavad, ning lihtne seadistada ja hallata.

Tftp jaoks ei olnud spetsiifilisi seadistusi vaja. Paigaldasin tavalise tftpd ja asetasin kõik vajalikud failid selle juurkatalooge.
Seadistuste failid paigutasin kaustadesse vastavalt telefoni tootjale. Kahjuks ei saanud Cisco seade oma kausta, tuli hoida kõike juuris.

Telfide tftp-serveri asukoha määramiseks kasutasin option-66. Lisaks jagasin need tootja järgi eraldi klassidesse. Igal klassil oli oma aadressi segment ja individuaalne kaust konfiguratsioonifailide jaoks. Muide, D-link seadmete puhul tuli neid MAC-aadresside järgi arvutada, kuna tootjateavet nad dhcp-päringus ei edastanud.

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

Telefonid tuli sundida välja jätma üldisest basseinist. Muul juhul ei tahtnud nad kuidagi oma 'konnatiiki' minna.
Altevõrgu sesettingute näide

alus 10.1.1.0 maske 255.255.255.0 {
        valik ruuterid 10.1.1.1;
        bassein {
                keela liikmed "cisco";
                keela liikmed "panasonic";
                keela liikmed "dlink";
                vahemik 10.1.1.230 10.1.1.240;
        }
        bassein {
                luba liikmed "cisco";
                vahemik 10.1.1.65 10.1.1.69;
        }
        bassein {
                luba liikmed "panasonic";
                vahemik 10.1.1.60 10.1.1.64;
        }
        bassein {
                luba liikmed "dlink";
                vahemik 10.1.1.55 10.1.1.59;
        }
}

Pärast kõigi osaliste teenuste taaskäivitamist suundusid telefonid usaldusväärselt seadistuste juurde ettenähtud tftp-serverisse. Ainult jääb need sinna paigutada.

Cisco 7906

Need seadmed tulid mulle tehasepakendis. Tuli uuesti üles kirjutada, et sõbruneda asteriskiga. Aga see on eraldi lugu. Antud juhul, et seadet seadistada, lõin vastavalt juhistele tftp-serveri juurtas SEPAABBCCDDEEFF.cnf.xml faili. Kus AABBCCDDEEFF — seadme MAC-aadress.

Cisco telefonide seadistamise kohta on juba korduvalt kirjutatud, seega jätan lihtsalt töötava seadistusfaili.
Seadistused cisco jaoks

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

Kui kavatsete selle seeria telefoni osta, olge ettevaatlik, automaatne seadistamine on toetatud ainult seadmetes 150S/F3. Seadmest 150S/F2, mis sattus mulle käte, ei leidnud sellist funktsionaalsust.

Konfiguratsioonifail võib olla nii xml- kui ka tavalises tekstivormingus. Xml-i puhul on üks nõue: silt peab olema rea alguses, vastasel juhul ignoreerib parser seda ning vastava parameetri väärtus ei muutu.

Telefoni seadistamiseks kasutatakse kahte faili. f0D00580000.cfg — kõikide telefonide seadistuste jaoks ja 00112233aabb.cfg (MAC-aadress väikestes tähtedes) individuaalsete seadistuste jaoks. Individuaalsed seadistused omavad loomulikult kõrgemat prioriteeti.

Täielik seadistuste komplekt sisaldab rohkem kui tuhandet rida; et mitte artiklit üle koormata, kirjeldan minimaalset ja piisavat seadistuste komplekti.

Kohustuslikud on juurelement VOIP_CONFIG_FILE ja selle sees olev element version. Seaded kehtivad vaid siis, kui faili versioon on kõrgem kui seadmete praegustes seadetes. Selle väärtuse saab teada telefonide .web-liidese kaudu hooldussektori (süsteemi haldamine) kaudu. Tehase seadistustega telefonide puhul on mõlemal juhul see 2.0002. Lisaks peab individuaalse faili versioon olema üldise faili versioonist kõrgem.

Esimene on fail, mis sisaldab kõigi telefonide üldist konfiguratsiooni. Tegelikult salvestab see kõik seadistused, individuaalne fail vastutab ainult telefoninumbri ja ekraanil oleva teksti eest.

Allpool toodud kahes plokis määratakse ajatsooni ja aja sünkroniseerimise parameetrid, RTP algusport ja lülitatakse sisse võrgusild WAN ja LAN pordide vahel seadme sees.

Fragment №1

DHCP
2
1
1
0
VOIP
10000
200
10.1.1.4
1


0
60
12
1500


1
1

Konfiguratsiooni parameetrite nimed on piisavalt arusaadavad, et neid ei pea pikalt kirjeldama.
SIP ühe liini jaoks

5060


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

Kaugtuvastuse seaded

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

Telefonisätted

123
123

0
112
Ettevõte
5
1
30
0

1
0,,1
0
0
1


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


sõber,kodu,töö,äri,koolikaaslane,kolleeg

Kõik ülejäänud seaded jäävad „vaikimisi“. Nüüd aktsepteerib iga Dlink telefon, mis on võrgus, kohe kogu komplekti seadeid. Üksikute seadete määramiseks on vajalik eraldi fail. Sellesse tuleb lihtsalt märkida vajalikud seaded eraldi kasutaja jaoks.
kasutaja seaded

2.0006



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

Panasonic UT-KX123B

Needid seadmed saavad seadistused veidi teistsuguse meetodiga. Konfiguratsioon salvestatakse tekstifailidesse. Konfiguratsioonifaili maksimaalne suurus on 120 KB. Ükskõik milline on failide arv, ei tohi nende kogumaht ületada 120 KB.
Konfiguratsioonifail koosneb rida-settest, millele kehtivad järgmised tingimused:

  • Esimesena peab alati olema kommentaaririda, mis sisaldab järgmisi sümbolite jadana (44 baiti):
    # Panasonic SIP Phone Standard Format File #
    Selle jada kuhexadekaalne esitus:
    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
    Juhul, kui soovite vältida juhuslikku muudatust juba seadistatud sümbolite järjestuses, on soovitatav alustada konfiguratsioonifaili järgmistest ridadest:
    # Panasonic SIP Phone Standard Format File # DO NOT CHANGE THIS LINE!
  • Konfiguratsioonifailid peavad lõppema tühi rida.
  • Iga rida peab lõppema järjestusega "".
  • Rida maksimaalne pikkus on 537 baiti, sealhulgas järjestus "".
  • Järgmised read jäetakse tähelepanuta:
    • read, mis ületavad 537 baiti;
    • tühjad read;
    • kommentaaride read, mis algavad sümboliga "#";
  • Iga parameetri rida kirjutatakse kujul XXX="yyy" (XXX: parameetri nimi, yyy: selle väärtus). Väärtus peab olema tsiteeritud kahekordsete jutumärkidega.
  • Parameetri rea jagamine mitmeks reaks ei ole lubatud. See toob kaasa konfiguratsioonifaili töötlemise vea ja sellega seonduva initsialiseerimise ebaõnnestumise.
  • Mõnede parameetrite väärtused tuleb määrata eraldi igale read. Parameeter, mille nimetuses on sufiks "_1", on 1. read parameeter; "_2" — 2. read ja nii edasi.
  • Parameetri nime maksimaalne pikkus on 32 sümbolit.
  • Parameetri maksimaalne väärtuse pikkus on 500 sümbolit, välja arvatud topeltpüsimärkide sümbolid.
  • Reas ei tohi olla tühikuid, välja arvatud juhul, kui väärtus sisaldab tühikut.
  • Mõningate parameetrite väärtusi võib määrata "tühjana", et määrata parameetri tühi väärtus.
  • Parameetreid tuleb esitada ilma kindla järjekorrata.
  • Kui sama parameeter esitatakse konfiguratsioonifailis rohkem kui üks kord, siis rakendatakse esimesena märgitud väärtust.

See range nõudmiste kogum konfiguratsioonifailile on mind, ausalt öeldes, pettumust valmistanud. Minu arvates on suhtlemine serveriga Panasonicu telefonide juhtimisega äärmiselt ebamugav. Selle parameetri osas jääb telefon oluliselt alla teistele.
Seadme esmakordsel sisselülitamisel (või pärast tehase seadete taastamist) üritab seade laadida nii nimetatud toote faili (antud juhul on see KX-UT123RU.cfg), milles peaks olema teed teiste konfiguratsioonifailide juurde.
Tootefail# 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"

Seejärel kuvab telefon ekraanile teate ettevalmistuse õnnestumise kohta ja ootab, kuni see taaskäivitada. Alles pärast taaskäivitamist hakkab see töötlema talle määratud konfigureerimisfailid.

Failis master.cfg on soovitatav указa üldised seaded kõigi telefonide jaoks. Nagu Dlinki puhul, nimetan ainult mõned parameetrid. Ülejäänud parameetrite nimed ja nende väärtused on saadaval tootja dokumendist.
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=""

Seadmefailis jäävad tavaliselt alles ainult tellija seaded.
aabbccddeeff.cfgDISPLAY_NAME_1=«Kasutaja #168»

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

Grandstream GXP-1400

Nende telefonide parameetreid hoitakse ühes xml-failis nimega cfg{mac}.xml. Või tavalises tekstifailis nimega cfg{mac}. See telefon küsib ainult individuaalset konfiguratsioonifaili, seega ei saa seadeid optimeerida, viies need ühte ühisesse faili. Veel üks Grandstreami seade määramine on parameetrite nimetus. Kõik need on numbritega ja tähistatakse kui P###. Näiteks:

P1650 – vastutab telefoni haldamiseks mõeldud veebiliidese eest (0 – HTTPS, 1 – HTTP)
P47 – SIP-serveri aadressi jaoks ühenduse loomiseks.

Kui konfiguratsioon hoitakse tekstifailis, ei nõua parameetrid mingit grupeerimist ja võivad olla suvalises järjekorras. Ridu, mis algavad #, käsitletakse kommentaaridena.

Kui seaded on esitatud xml-formaadis, peavad nad olema paigutatud sõlme , mis omakorda peab olema paigutatud . Kõik parameetrid salvestatakse vastavate siltide kujul, kus parameetri väärtus on sees.
Seadistuse näide

1
    
    109
    
    109
    
    109
    
    SIP_PWD
    
    Kasutaja# 109

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

Yealink T19 ja T21

Nende mudelite seadmed toetavad individuaalseid seadistusfaile seadmete ja mudelite jaoks. Minu puhul pidin ühised seadistused paigutama failidesse y000000000031.cfg ja y000000000034.cfg vastavalt. Individuaalsed seadistusfailid nimetatakse vastavalt MAC-aadressile: 00112233aabb.cfg.

Yealink’i seadistused salvestatakse tekstifaili formaadis. Kohustuslik nõue on ainult faili versiooni olemasolu esimeses real, formaadis #!version:1.0.0.1.

Kõik seadistused kirjutatakse kujul parameeter = väärtus. Kommentaarid peavad algama sümboliga "#". Parameetrite nimed ja nende väärtused leiate tootja dokumentatsioonist.
üldised seadistused#!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 = Vene
#Specify the LCD language, the valid values are: English (default), Chinese_S, Chinese_T, German, French, Turkish, Italian, Polish, Spanish and Portuguese.
lang.gui = Vene
#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 = Telefoniraamat
features.remote_phonebook.flash_time = 3600

individuaalsed seadistused#!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 = Testtelefon
#Configure the display name of account1.
account.1.display_name = Kasutaja 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

Tänu nimetatud telefonidele sisseehitatud auto-provisioning funktsioonile ei tekkinud uute seadmete internetti ühendamisel mingeid probleeme. Kõik piirdus telefoni MAC-aadressi väljaselgitamise ja konfiguratsioonifaili genereerimisega mallist.

Loodan, et olete lugenud lõpuni ja saanud sellest kasu.

Aitäh tähelepanu eest.

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster