VoIP loomaaed – Varustamine

Sissejuhatus

Kord kord üldjuhul heaks kiitis katse IP telefonide kasutusele võtmiseks meie büroos. Kuna minu kogemus selles vallas oli minimaalne, äratas ülesanne minus tohutut huvi ja ma süvenesin erinevate aspektide uurimisse. Uurimise lõppedes otsustasin jagada oma teadmisi — lootuses, et need leiavad kellegi jaoks kasutust. Nii et...

Algandmed

IP-ATS-ina valiti ja paigaldati Asterisk. Telefonipark koosneb Cisco 7906g, Panasonic UT-KX123B, Grandstream GXP1400 ja Dlink DPH-150S(E)/F3, Yealink T19 ja T21 seadmetest. Selline varieeruvus tuleneb sellest, et eksperimentaalses etapis otsustati proovida veidi erinevat, et saada oma arvamus hinna/kvaliteedi/mugavuse suhte osas.

Ülesanne

Selle seadistamine maksimaalselt lihtsaks ja ühtlustatuks. Kõik telefonid peavad olema sünkroneeritud ajaga, omama aadressiraamatut, mis laaditakse alla serverilt ja pakkuma administraatorile seadistustele juurdepääsu.

Selle ülesande lahendamine on lihtne — rakendada telefonide automaatset seadistamist, nn Provisioning. Tegelikult on juttu just sellest, kuidas ma selle suurepärase funktsiooni ellu viisin.

tftpd, dhcpd seadistamine

Telefonide seadistuste jagamiseks valisin tftp kui universaalse variandi, mida toetavad kõik platvormid ning mis on lihtne seadistada ja haldada.

Spetsiaalset seadistust tftp jaoks ei olnud vajalik. Paigaldasin tavalise tftpd ja panin kõik vajalikud failid selle juurkatalooge.
Seadistuste failid paigutati tootja järgi kataloogidesse. Tõsi, Cisco seade ei pääsenud oma kausta, seega pidin hoidma selle juuris.

Telefonidele tftp-serveri asukoha määramiseks kasutasin option-66. Lisaks jagasin nad tootja järgi eraldi klassidesse. Iga klass sai oma aadressisegmendi ja individuaalse katalooge seadistustefailide jaoks. Muide, D-link seadmete puhul tuli tootjad MAC-aadresside põhjal välja selgitada, kuna nad ei edasta tootja teavet dhcp-päringus.

dhcpd.conf fragment

# Указываем необходимые опции 
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 eraldama üldisest basseinist. Muud juhul ei tahtnud nad kuidagi oma «sipelgapesasse» minna.
Alamvõrgu seadistuste näidis

alams 10.1.1.0 netmask 255.255.255.0 {
        valikud 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 seotud teenuste taaskäivitamist suundusid telefonid kindlalt seadistuste saamiseks ettenähtud tftp-serverisse. Jääb ainult neid sinna paigutada.

Cisco 7906

Need seadmed said mulle tehasepakendis. Pidin neid ümber programmeerima, et need asterisk’iga sobiksid. Aga see on eraldi lugu. Antud juhul seadistamiseks lõin vastavalt juhistele tftp-serveri juures faili SEPAABBCCDDEEFF.cnf.xml. Kus AABBCCDDEEFF on seadme MAC-aadress.

Cisco telefonide seadistamise kohta on juba korduvalt kirjutatud, seega jätn lihtsalt töötava seadistustefile.
Seaded cisco jaoks

true
 SIP
 root
 ADMIN_PWD

 
 D-M-Y
 Keskmine Vaikne Aeg
     
         
             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
 

 Kasutaja #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

 Estonian_Estonia
 et_EE
 
 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 plaanite osta selle seeria telefoni, olge ettevaatlikud, automaatne seadistamine toetatakse ainult seadmetes 150S/F3. Seadmest 150S/F2, mis minule kätte sattus, sellist funktsionaalsust ei leidnud.

Konfiguratsioonifail võib olla kas xml-formaadis või tavalise tekstifailina. Xml-i jaoks on üks nõue: oluline silt peab olema rea alguses, vastasel juhul ignoreerib parser seda ja vastava parameetri väärtus ei muutu.

Telefoni seadistamiseks kasutatakse kahte faili. f0D00580000.cfg — kõigi telefonide seadistuste talletamiseks ja 00112233aabb.cfg (MAC-aadress väikestes tähtedes) individuaalsete seadistuste jaoks. Individuaalsed seadistused, nagu arvata võib, omavad suuremat prioriteeti.

Täielik seadistusloend sisaldab üle tuhande rea, et mitte artiklit ülerahvastada, kirjeldan minimaalset vajalikku seadistuste kogumit.

Kohustuslik on juurelement VOIP_CONFIG_FILE ja selle sisse sisestatult version. Seadistused rakenduvad ainult siis, kui faili versioon on kõrgem kui seadmes olevate seadistuste versioon. Selle väärtuse saab teada telefoni veebiliidese kaudu hooldusosakonnas (süsteemihaldus). Tehase seadistustega telefonide puhul on mõlemas olukorras see 2.0002. Lisaks peab individuaalsete failide versioon olema suurem üldfaili versioonist.

Käin esimesena välja failiga, mis sisaldab üldkonfiguratsiooni kõigi telefonide jaoks. Sisuliselt talletab see kõik seadistused, individuaalne fail vastutab vaid telefoninumbri ja ekraanil kuvatava teksti eest.

Allpool toodud kahes plokis seadistatakse ajatsooni ja aja sünkroonimise parameetrid, algne port RTP jaoks ja lülitatakse sisse võrgu sild WAN ja LAN portide vahel.

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 „kõnelevaid“, et neid põhjalikult ei kirjeldataks.
SIP ühele reale

5060


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

Kaugjuhtimise 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

Telefoniseaded

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,kaaslane,kolleeg

Kõik muud seaded jäävad „vaikimisi“. Nüüd aktsepteerib iga Dlink telefon, mis on võrku ühendatud, kohe kõigile ühiste parameetrite kogumit. Individuaalsete seadete määramiseks seadme jaoks on vajalik eraldi fail. Sellest tuleb ainult märkida vajalikud seaded eraldi kasutaja jaoks.
kasutaja seaded

2.0006



SIP1
Kasutaja #117
117
5060
117
SIP_PWD
3600
1
5060
117
SIP_PWD

Panasonic UT-KX123B

Need seadmed saavad seadistused mõnevõrra teistsugusele skeemile. Konfiguratsioon salvestatakse tekstifailidesse. Konfiguratsioonifaili maksimaalne suurus on 120 KB. Ükskõik kui palju faile on, ei tohi nende kogusuurus ületada 120 KB.
Konfiguratsioonifail koosneb rida-realt, millele kehtivad allpool loetletud tingimused:

  • Esimesena peab alati olema kommentaarirea, mis sisaldab järgmist sümbolite järjestust (44 baiti):
    # Panasonic SIP Phone Standard Format File #
    Selle järjestuse heksadesimaalne 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
    Kuidas vältida muude sümbolite juhuslikku muutmist, soovitatakse alustada konfiguratsioonifaili järgmise read:
    # Panasonic SIP Phone Standard Format File # DO NOT CHANGE THIS LINE!
  • Konfiguratsioonifailid peavad lõppema tühja reaga.
  • 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 baitide piiri;
    • tühjad read;
    • kommentaariread, mis algavad sümboliga "#";
  • Iga parameetri rida salvestatakse vormis XXX="yyy" (XXX: parameetri nimi, yyy: selle väärtus). Väärtus peab olema ümbritsetud jutumärkides.
  • Parameetri ridade jagamine mitmeks realiseks ei ole lubatud. See toob kaasa konfiguratsioonifaili töötlemise tõrke ja seeläbi ka initsialiseerimise tõrke.
  • Mõne parameetri väärtused tuleb määrata eraldi iga liini jaoks. Parameeter, millel on nimeliseks sufiks "_1", on mõeldud liini 1 jaoks; "_2" – liini 2 jaoks jne.
  • Parameetri nime maksimaalne pikkus on 32 sümbolit.
  • Parameetri väärtuse maksimaalne pikkus on 500 sümbolit, välja arvatud jutumärgid.
  • Rea ei tohi sisaldada tühikuid, välja arvatud juhul, kui väärtus sisaldab tühikut.
  • Mõned parameetrid saavad olla "tühjad", et määrata parameetri tühi väärtus.
  • Parameetreid määratakse ilma kindla järjekorrata.
  • Kui sama parameetrit määratakse konfiguratsioonifailis rohkem kui üks kord, rakendatakse esimesena määratud väärtust.

Niivõrd tõsine nõudmiste kogum konfiguratsioonifailile oli mind täitsa kurvastanud. Minu arvates on Panasonicide kontrollimise teostamine äärmiselt ebamugav. Selle parameetri osas jääb telefon oma konkurentidele alla. serverilt Esmakordsel seadme sisselülitamisel (või pärast tehase vaikeväärtustele lähtestamist) üritab see laadida nii kutsutud toote faili (antud juhul on see KX-UT123RU.cfg), milles peaksid sisalduma teed muudele konfiguratsioonifailidele.
Toote fail
CFG_STANDARD_FILE_PATH="tftp://10.1.1.50/panasonic/{mac}.cfg"# Panasonic SIP Phone Standard Format File # DO NOT CHANGE THIS LINE!

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"
Pärast seda kuvab telefon ekraanil teate edukast ettevalmistamisest ning ootab, kuni seda ei taaskäivitata. Ta alustab pärast taaskäivitamist määratud konfiguratsioonifailide töötlemist.

Failis master.cfg on soovitatav määrata üldised seaded kõigi telefonide jaoks. Nagu Dlinki puhul, mainin ainult mõningaid parameetreid. Ülejäänud parameetrite nimetused ja nende väärtused leiate tootja dokumentatsioonist veebisaidilt.

master.cfg
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_PRODUCT_FILE_PATH="tftp://10.1.1.50/panasonic/KX-UT123RU.cfg"
CFG_MASTER_FILE_PATH="tftp://10.1.1.50/panasonic/master.cfg"
Pärast seda kuvab telefon ekraanil teate edukast ettevalmistamisest ning ootab, kuni seda ei taaskäivitata. Ta alustab pärast taaskäivitamist määratud konfiguratsioonifailide töötlemist.

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

Seadme individuaalses konfiguratsioonifailis 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 seaded salvestatakse ühte xml-faili nimega cfg{mac}.xml. Või tavalisest tekstifailist nimega cfg{mac}. See telefon küsib ainult individuaalset konfiguratsioonifaili, seetõttu ei ole seadeid võimalik optimeerida koosseisufaili väljatõstmist. Veel üks Grandstream'i seadistuse eripära on parameetrite nimetus. Kõik need on numbritega ja tähistatakse kui P###. Näiteks:

P1650 – vastutab veebiliidese eest telefoni haldamiseks (0 – HTTPS, 1 – HTTP)
P47 – SIP-serveri aadress ühendamiseks.

Kui konfiguratsioon on salvestatud tekstifailis, ei nõua parameetrid mingit grupeerimist ja need võivad olla igas järjekorras. Read, mis algavad #, peetakse kommentaarideks.

Kui seaded on esitatud xml-formaadis, peavad need olema sisestatud sõlme , mis omakorda peab olema sisestatud . Kõik parameetrid salvestatakse vastava sildi kujul, mille sees on parameetri väärtus.
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 seadistustsükleid seadmetele ja ühiseid mudeleid. Minu puhul pidin paigutama üldised parameetrid failidesse y000000000031.cfg ja y000000000034.cfg vastavalt. Individuaalsed seadistustsüklid nimetatakse MAC-aadressi järgi: 00112233aabb.cfg.

Yealinkide seadistused salvestatakse tekstivormingus. Kohustuslikud nõuded on ainult faili versioon esimese rea olemasolu, vormingus #!version:1.0.0.1.

Kõik parameetrid salvestatakse kujul parameeter = väärtus. Kommentaarid peavad algama sümboliga "#". Parameetrite nimed ja nende väärtused on leitavad tootja veebisaidilt.
ü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 = Eesti
#Specify the LCD language, the valid values are: English (default), Chinese_S, Chinese_T, German, French, Turkish, Italian, Polish, Spanish and Portuguese.
lang.gui = Eesti
#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 = Test telefon
#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

Kokkuvõttes, tänu suurepärasele auto-provision funktsioonile, mis on ette nähtud mainitud telefonides, ei tekkinud uussete seadmete võrku ühendamisel mingeid probleeme. Kõik piirdus telefonide MAC-aadressi väljaselgitamise ja seadistustsükli genereerimisega šablooni järgi.

Loodan, et lugesite lõpuni ja saite kõigest kasu.

Aitäh tähelepanu eest.

Allikas: habr.com

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster