VoIP zoologisk park — Provisioning

Inledning

En gĂ„ng godkĂ€nde ledningen ett experiment för att implementera IP-telefoni pĂ„ vĂ„rt kontor. Eftersom min erfarenhet inom detta omrĂ„de var mycket begrĂ€nsad vĂ€ckte uppgiften mitt stora intresse och jag fördjupade mig i att studera olika aspekter av frĂ„gan. NĂ€r jag hade lĂ€rt mig klart beslutade jag mig för att dela med mig av de kunskaper jag hade fĂ„tt — i hopp om att de kan vara till nytta för nĂ„gon. SÄ 

Ursprungliga data

Asterisk valdes och implementerades som IP-PBX. Telefonparken bestÄr av Cisco 7906g, Panasonic UT-KX123B, Grandstream GXP1400 och Dlink DPH-150S(E)/F3, Yealink T19 och T21. Denna variation beror pÄ att det i experimentet beslutades att testa lite av varje för att bilda sig en uppfattning om förhÄllandet mellan pris/kvalitet/bekvÀmlighet.

Uppgift

Möjligtvis förenkla och standardisera processen för att konfigurera nya apparater. Alla telefoner ska vara synkroniserade tidmÀssigt och ha en telefonbok som laddas frÄn servern och ge administratören tillgÄng till instÀllningarna.

Lösningen pĂ„ detta problem Ă€r enkel — implementera automatisk konfiguration av telefonerna, sĂ„ kallad Provisioning. Egentligen kommer det att handla om min implementation av denna fantastiska funktion.

Konfigurering av tftpd, dhcpd

För att dela instÀllningarna till telefonerna valde jag tftp som ett universellt alternativ, som stöds av alla plattformar och Àr lÀtt att konfigurera och hantera.

Ingen specifik konfiguration för tftp var nödvÀndig. Jag installerade den vanliga tftpd och placerade alla nödvÀndiga filer i dess rotkatalog.
InstÀllningsfilerna placerades i kataloger enligt tillverkare. Men Cisco-enheten ville inte nÄ sin mapp, sÄ jag var tvungen att lagra den i roten.

För att ange telefonernas plats för tftp-servern anvÀnde jag option-66. Dessutom delade jag dem i separata klasser efter tillverkare. Varje klass fick sitt eget adresssegment och en individuell mapp för konfigurationsfiler. För övrigt var jag tvungen att berÀkna D-link-enheterna utifrÄn MAC-adresser, eftersom de inte tillhandahÄller information om tillverkaren i DHCP-förfrÄgan.

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

Telefonerna tvingades uteslutas frÄn den vanliga poolen. Annars ville de inte gÄ till sin "groda".
Exempel pÄ instÀllningar för 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;
        }
}

Efter omstart av alla berörda tjÀnster riktades telefonerna sÀkert mot den tilldelade tftp-servern för instÀllningar. Det Äterstod bara att placera dem dÀr.

Cisco 7906

Dessa enheter fick jag i fabrikens förpackning. Jag var tvungen att flasha om dem för att fÄ dem att fungera med Asterisk. Men det Àr en annan historia. I det specifika fallet skapade jag, enligt instruktionerna, en fil i roten av tftp-servern som heter SEPAABBCCDDEEFF.cnf.xml. DÀr AABBCCDDEEFF Àr enhetens MAC-adress.

Det har redan skrivits mycket om instÀllningar för Cisco-telefoner, sÄ jag kommer bara att lÀmna en fungerande fil med instÀllningar.
InstÀllningar för cisco

true
 SIP
 root
 ADMIN_PWD

 
 D-M-Y
 Centrala Stillahavstiden
     
         
             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
 

 AnvÀndare #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

Om du just nu planerar att köpa en telefon i den hÀr serien, var uppmÀrksam pÄ att automatisk konfiguration endast stöds i apparaterna 150S/F3. Jag har inte upptÀckt den funktionen i apparaten 150S/F2 som kom i min hand.

Konfigurationsfilen kan vara antingen i xml-format eller i vanlig text. För xml finns ett krav: taggen mÄste vara i början av raden, annars kommer parsern att ignorera den och vÀrdet för motsvarande parameter Àndras inte.

TvĂ„ filer anvĂ€nds för att konfigurera telefonen. f0D00580000.cfg — för att lagra instĂ€llningarna för alla telefoner och 00112233aabb.cfg (MAC-adressen i smĂ„ bokstĂ€ver) för individuella instĂ€llningar. Individuella instĂ€llningar har naturligtvis högre prioritet.

Det finns över tusen rader av instÀllningar, för att inte överbelasta artikeln, kommer jag att beskriva det minimala nödvÀndiga setet av instÀllningar.

Obligatoriska Àr rot-noden VOIP_CONFIG_FILE och den inbÀddade noden version. InstÀllningarna kommer endast att tillÀmpas om versionen av filen Àr högre Àn de aktuella instÀllningarna i apparaten. Detta vÀrde kan kontrolleras via telefonens webbgrÀnssnitt i avsnittet underhÄll (systemhantering). För telefoner med fabriksinstÀllningar Àr detta i bÄda fallen 2.0002. Dessutom mÄste versionen av den individuella filen vara högre Àn versionen av den gemensamma filen.

Först presenterar jag filen med den allmÀnna konfigurationen för alla telefoner. I princip lagrar den alla instÀllningar, den individuella filen kommer endast att ansvara för telefonnumret och texten pÄ skÀrmen.

I de tvÄ blocken som anges nedan stÀlls parametrarna för tidszon och tidsynkronisering in, den initiala porten för RTP stÀlls in och nÀtverksbron mellan WAN- och LAN-portarna pÄ apparaten aktiveras.

Fragment nr 1

DHCP
2
1
1
0
VOIP
10000
200
10.1.1.4
1


0
60
12
1500


1
1

Parameter names are sufficiently "descriptive" not to require detailed explanations.
SIP for a single line

5060


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

Settings for remote management

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

Phone settings

123
123

0
112
Company
5
1
30
0

1
0,,1
0
0
1


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


friend,home,work,business,classmate,colleague

All other settings will remain "default". Now, any Dlink phone connected to the network will immediately accept the common set of parameters. To set individual parameters for the unit, a separate file is needed. It should only specify the necessary settings for the individual subscriber.
subscriber settings

2.0006



SIP1
AnvÀndare #117
117
5060
117
SIP_PWD
3600
1
5060
117
SIP_PWD

Panasonic UT-KX123B

Dessa enheter fÄr sina instÀllningar via en nÄgot annan metod. Konfigurationen lagras i textfiler. Den maximala storleken för konfigurationsfilen Àr 120 KB. Oavsett antalet filer fÄr den totala storleken inte överstiga 120 KB.
Konfigurationsfilen bestÄr av ett set med rader, pÄ vilka följande villkor gÀller:

  • Den första raden Ă€r alltid en kommentar som inkluderar följande sekvens av tecken (44 byte):
    # Panasonic SIP Phone Standard Format File #
    Det hexadecimala representationen av denna sekvens:
    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
    För att förhindra oavsiktlig Àndring av den etablerade teckensekvensen rekommenderas det att börja konfigurationsfilen med raden:
    # Panasonic SIP Phone Standard Format File # DO NOT CHANGE THIS LINE!
  • Konfigurationsfiler mĂ„ste avslutas med en tom rad.
  • Varje rad ska avslutas med sekvensen "".
  • Den maximala radlĂ€ngden Ă€r 537 byte, inklusive sekvensen "".
  • Följande rader ignoreras:
    • rader som överskrider grĂ€nsen pĂ„ 537 byte;
    • tomma rader;
    • kommentarerader som börjar med tecknet "#";
  • Raden för varje parameter skrivs in i formen XXX="yyy" (XXX: parameter namn, yyy: dess vĂ€rde). VĂ€rdet ska omges av citattecken.
  • Att dela upp parameterstrĂ€ngen pĂ„ flera rader Ă€r inte tillĂ„tet. Detta kommer att leda till ett fel i konfigurationsfilens behandling och dĂ€rmed ett misslyckande vid initieringen.
  • VĂ€rden för vissa parametrar mĂ„ste anges separat för varje linje. En parameter med suffixet "_1" i namnet Ă€r en parameter för linje 1; "_2"— för linje 2 osv.
  • Den maximala lĂ€ngden pĂ„ parameter namnet Ă€r 32 tecken.
  • Den maximala lĂ€ngden pĂ„ parameter vĂ€rdet Ă€r 500 tecken, exklusive tecken för citattecken.
  • Mellanslag i en rad Ă€r inte tillĂ„tna, förutom nĂ€r vĂ€rdet inkluderar ett mellanslag.
  • VĂ€rden för vissa parametrar kan anges som "tomma" för att stĂ€lla in ett tomt parameter-vĂ€rde.
  • Parametrar anges utan nĂ„got specifikt ordningsföljd.
  • Om samma parameter anges mer Ă€n en gĂ„ng i konfigurationsfilen, tillĂ€mpas vĂ€rdet som anges först.

En sÄ strikt uppsÀttning krav pÄ konfigurationsfilen gjorde mig faktiskt besviken. Enligt min Äsikt Àr hanteringen av servern panasonic-telefoner extremt obekvÀm. För denna parameter ligger telefonen betydligt efter andra.
Vid första pÄslaget (eller efter en ÄterstÀllning till fabriksinstÀllningar) försöker den ladda den sÄ kallade produktfilen (i detta fall KX-UT123RU.cfg), dÀr vÀgarna till de övriga konfigurationsfilerna ska finnas.
Produktfil# 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»

DÀrefter kommer telefonen att visa ett meddelande om att förberedelsen har genomförts framgÄngsrikt och kommer att vÀnta pÄ att den ska startas om. Efter omstarten kommer den att börja behandla sina konfigurationsfiler.

I filen master.cfg rekommenderas att ange gemensamma instÀllningar för alla telefoner. Som med Dlink kommer jag bara att nÀmna nÄgra parametrar. Namnen pÄ övriga parametrar och deras vÀrden kan hittas i dokumentationen pÄ tillverkarens webbplats.
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=""

I den individuella konfigurationsfilen för enheten kvarstÄr traditionellt endast abonnentinstÀllningarna.
aabbccddeeff.cfgDISPLAY_NAME_1=«AnvÀndare #168»

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

Grandstream GXP-1400

InstÀllningarna för dessa telefoner lagras i en och samma xml-fil som heter cfg{mac}.xml. Alternativt i en vanlig textfil med namnet cfg{mac}. Denna telefon begÀr endast den individuella konfigurationsfilen, sÄ det gÄr inte att optimera instÀllningarna genom att flytta dem till en gemensam fil. En annan sÀrdrag hos Grandstream-instÀllningarna Àr namngivningen av parametrarna. Alla Àr numrerade och betecknas som P###. Till exempel:

P1650 – ansvarar för webbgrĂ€nssnittet för att hantera telefonen (0 – HTTPS, 1 – HTTP)
P47 – SIP-serveradressen för anslutning.

Om konfigurationen lagras i en textfil krÀver inte parametrarna nÄgon gruppering och kommer i vilken ordning som helst. Rader som börjar med # betraktas som kommentarer.

Om instÀllningarna presenteras i xml-format mÄste de vara inbÀddade i en nod , som i sin tur mÄste vara inbÀddad i . Alla parametrar skrivs i form av motsvarande taggar med parametervÀrdet inuti.
Exempel pÄ instÀllningar

1
    
    109
    
    109
    
    109
    
    SIP_PWD
    
    AnvÀndare# 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 och T21

Enheterna av dessa modeller stöder individuella konfigurationsfiler för enheter och gemensamma för modeller. I mitt fall var jag tvungen att placera gemensamma parametrar i filerna y000000000031.cfg och y000000000034.cfg. Individuella konfigurationsfiler namnges enligt MAC-adressen: 00112233aabb.cfg.

InstÀllningar för Yealink-enheter lagras i textformat. De enda obligatoriska kraven Àr att den första raden innehÄller versionsnumret i formatet #!version:1.0.0.1.

Alla parametrar skrivs i form av parameter = vÀrde. Kommentarer ska börja med symbolen "#". Namnen pÄ parametrar och deras vÀrden finns i dokumentationen pÄ tillverkarens webbplats.
gemensamma instÀllningar#!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 = Ryska
#Specify the LCD language, the valid values are: English (default), Chinese_S, Chinese_T, German, French, Turkish, Italian, Polish, Spanish and Portuguese.
lang.gui = Ryska
#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 = Telefonkatalog
features.remote_phonebook.flash_time = 3600

individuella instÀllningar#!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 = AnvÀndare 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

Tack vare den fantastiska funktionen auto-provision, som finns i de telefoner jag har nÀmnt, uppstod det inga problem med att ansluta nya enheter till nÀtverket. Allt handlade om att ta reda pÄ telefonens MAC-adress och generera konfigurationsfilen utifrÄn en mall.

Jag hoppas att du har lÀst till slutet och fÄtt nytta av det lÀsta.

Tack för uppmÀrksamheten.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster