VoIP dyrepark — Provisioning

Innledning

En gang godkjente ledelsen et eksperiment med implementering av IP-telefoni pĂ„ vĂ„rt kontor. Siden min erfaring pĂ„ dette omrĂ„det var minimal, vekket oppgaven i meg en stor interesse, og jeg begynte Ă„ dykke ned i ulike aspekter av temaet. Etter Ă„ ha fullfĂžrt dykkinga bestemte jeg meg for Ă„ dele de tilegnede kunnskapene - i hĂ„p om at de kan vĂŠre til nytte for noen. SÄ 

Kildedata

Asterisk ble valgt og implementert som IP-PBX. Telefonparken bestÄr av enheter som Cisco 7906g, Panasonic UT-KX123B, Grandstream GXP1400, Dlink DPH-150S(E)/F3, Yealink T19 og T21. Denne variasjonen skyldes at det i lÞpet av eksperimentet ble besluttet Ä prÞve litt av hvert for Ä danne meg et inntrykk av forholdet mellom pris/kvalitet/brukervennlighet.

Oppgave

Maksimalt forenkle og standardisere prosessen med Ä sette opp nye enheter. Alle telefoner mÄ vÊre tidsynkronisert, ha en telefonbok som hentes fra serveren og gi administrator tilgang til innstillingene.

LÞsningen pÄ dette problemet er enkel - implementere automatisk konfigurering av telefonene, kjent som Provisioning. Det er egentlig om min implementering av denne fantastiske funksjonen det skal handle.

Konfigurering av tftpd, dhcpd

For Ă„ distribuere innstillingene til telefonene valgte jeg tftp som et universelt alternativ, stĂžttet av alle plattformer, lett Ă„ konfigurere og administrere.

Spesifikk konfigurering for tftp var ikke nĂždvendig. Jeg installerte standard tftpd og plasserte alle nĂždvendige filer i rotkatalogen.
Konfigurasjonsfilene ble plassert i katalogene i henhold til produsenten av telefonen. Dog klarte ikke enheten fra Cisco Ä finne sin mappe, sÄ jeg mÄtte oppbevare filene i roten.

For Ä angi telefonenes plassering av tftp-serveren, benyttet jeg option-66. I tillegg delte jeg dem inn i separate klasser etter produsent. Hver klasse fikk sitt eget adresseomrÄde og individuell mappe for konfigurasjonsfiler. For Þvrig mÄtte enhetene fra D-link identifiseres etter MAC-admitter, siden de ikke gir produsentinformasjon i dhcp-forespÞrselen.

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

Telefonene mÄtte tvinges ut av den felles puljen. Ellers ville de ikke gÄ til sitt "grog b."
Eksempel pÄ nettverksinnstillinger

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

Etter at alle involverte tjenester ble restartet, begynte telefonene Ä sikkert sÞke innstillinger pÄ den tildelte tftp-serveren. Det gjensto bare Ä plassere dem der.

Cisco 7906

Disse apparatene kom til meg i fabrikkinnpakning. Jeg mÄtte blitse dem for Ä fÄ dem til Ä fungere med asterisk. Men det er en annen historie. I dette spesifikke tilfellet, for Ä konfigurere apparatet, opprettet jeg i roten av tftp-serveren filen SEPAABBCCDDEEFF.cnf.xml. Hvor AABBCCDDEEFF er MAC-adressen til apparatet.

Det har allerede blitt skrevet mye om konfigurasjonen av Cisco-telefoner, sÄ jeg vil bare legge igjen en fungerende fil med innstillingene.
Innstillinger for cisco

true
 SIP
 root
 ADMIN_PWD

 
 D-M-Y
 Sentral Stillehavstidsone
     
         
             10.1.1.4
              Unicast
          
     
 

   
 10.1.1.50
 
 2000
 5060
 5061
 
 10.1.1.50
   
 

 Deaktivere


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
 

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

 Russisk_Russland
 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

Hvis du planlegger Ä kjÞpe en telefon i denne serien, vÊr oppmerksom pÄ at automatisk oppsett kun stÞttes i 150S/F3. PÄ 150S/F2, som jeg har hatt, fant jeg ikke denne funksjonen.

Konfigurasjonsfilen kan vÊre i bÄde XML-format og vanlig tekstformat. For XML er det ett krav: taggen mÄ vÊre i starten av linjen; ellers vil parseren ignorere den, og verdien av den aktuelle parameteren vil ikke bli endret.

To filer brukes til Ă„ konfigurere telefonen. f0D00580000.cfg — for Ă„ lagre innstillingene for alle telefonene og 00112233aabb.cfg (MAC-adresse i smĂ„ bokstaver) for individuelle innstillinger. Individuelle innstillinger har naturligvis hĂžyere prioritet.

Det totale antallet innstillinger er over tusen linjer; for ikke Ă„ overlemske artikkelen, vil jeg beskrive det minimumssettet av innstillinger som er tilstrekkelig.

Den obligatoriske er rotknuten VOIP_CONFIG_FILE og den nestede noden version. Innstillingene vil bare bli brukt hvis versjonen av filen er hÞyere enn de nÄvÊrende innstillingene pÄ apparatet. Denne verdien kan finnes via telefonens webgrensesnitt i vedlikeholdsseksjonen (systemadministrasjon). For telefoner med fabrikkinnstillinger er dette i begge tilfeller 2.0002. I tillegg mÄ versjonen av den individuelle filen vÊre hÞyere enn versjonen av den generelle filen.

FÞrst presenterer jeg filen med den generelle konfigurasjonen for alle telefoner. I hovedsak lagrer den alle innstillingene, mens den individuelle filen bare vil hÄndtere telefonnummeret og teksten pÄ skjermen.

I de to blokkene som er presentert nedenfor, settes innstillinger for tidssone og tidsynkronisering, startport for RTP, og det aktiveres en nettverksbro mellom WAN og LAN-portene pÄ apparatet.

Fragment nr. 1

DHCP
2
1
1
0
VOIP
10000
200
10.1.1.4
1


0
60
12
1500


1
1

Navnene pÄ konfigurasjonsparametrene er lette Ä forstÄ, sÄ de trenger ikke en grundig beskrivelse.
SIP for én linje

5060


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

Innstillinger for ekstern styring

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

Telefonsinnstillinger

123
123

0
112
Firma
5
1
30
0

1
0,,1
0
0
1


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


venn,hjem,arbeid,forretning,kamerat,kolllega

Alle andre innstillinger forblir som "standard". NÄ vil enhver Dlink-telefon som er koblet til nettverket, umiddelbart ta imot det felles settet med parametere. For Ä sette individuelle parametere for enheten, trengs en egen fil. I den mÄ du kun spesifisere de nÞdvendige innstillingene for den enkelte abonnenten.
abonnentinnstillinger

2.0006



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

Panasonic UT-KX123B

Disse enheter mottar innstillingene pÄ en litt annen mÄte. Konfigurasjonen lagres i tekstfiler. Den maksimale stÞrrelsen pÄ konfigurasjonsfilen er 120 KB. Uavhengig av antall filer, skal den totale stÞrrelsen ikke overskride 120 KB.
Konfigurasjonsfilen bestÄr av et sett med linjer, som er underlagt fÞlgende betingelser:

  • Den fĂžrste linjen er alltid en kommentarlinje som inneholder fĂžlgende sekvens av tegn (44 byte):
    # Panasonic SIP Phone Standard Format File #
    Det hexadesimale representasjonen av denne sekvensen:
    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
    For Ă„ forhindre utilsiktet endring av den etablerte sekvensen av tegn, anbefales det Ă„ starte konfigurasjonsfilen med en linje:
    # Panasonic SIP Phone Standard Format File # DO NOT CHANGE THIS LINE!
  • Konfigurasjonsfiler mĂ„ avsluttes med en tom linje.
  • Hver linje mĂ„ avsluttes med sekvensen "".
  • Den maksimale lengden pĂ„ en linje er 537 byte, inkludert sekvensen "".
  • FĂžlgende linjer ignoreres:
    • linjer som overskrider grensen pĂ„ 537 byte;
    • tomme linjer;
    • kommentarlinjer som begynner med symbolet "#";
  • Hver parameterlinje skrives i formen XXX="yyy" (XXX: parameternavn, yyy: verdi). Verdien mĂ„ vĂŠre omsluttet av doble anfĂžrselstegn.
  • Oppdeling av parameterlinjen i flere linjer er ikke tillatt. Dette vil fĂžre til en behandlingsfeil i konfigurasjonsfilen, noe som resulterer i en krasj ved initiering.
  • Noen parameterverdier mĂ„ angis separat for hver linje. Parametere med suffiks "_1" i navnet er for linje 1; "_2"— for linje 2, osv.
  • Den maksimale lengden pĂ„ et parameternavn er 32 tegn.
  • Den maksimale lengden pĂ„ parameterverdien er 500 tegn, unntatt for doble anfĂžrselstegn.
  • Whitespace in a line is not allowed except when the value includes a space character.
  • Some parameter values can be specified as 'empty' to set the parameter to an empty value.
  • Parameters are specified without a specific order.
  • If the same parameter is specified more than once in the configuration file, the first specified value will be used.

Such a serious set of requirements for the configuration file frankly disappointed me. In my opinion, the implementation of interaction with serveren the management of Panasonic phones is extremely inconvenient. In this respect, the phone is significantly inferior to others.
When the device is first powered on (or after a factory reset), it attempts to load the so-called product file (in this case, KX-UT123RU.cfg), which should contain the paths to the other configuration files.
Product file# 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"

After this, the phone will display a message on the screen indicating that the preparation has been successfully completed and will wait until it is rebooted. After rebooting, it will start processing its designated configuration files.

In the master.cfg file, it is recommended to specify general settings for all phones. As with Dlink, I will list only some parameters. The names of the other parameters and their values can be found in the documentation on the manufacturer's website.
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 individuelle konfigurasjonsfilen for enheten, forblir det tradisjonelt bare abonnentinnstillinger.
aabbccddeeff.cfgDISPLAY_NAME_1=«Bruker #168»

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

Grandstream GXP-1400

Innstillingene for disse telefonene lagres i en enkelt xml-fil med navnet cfg{mac}.xml. Alternativt i en vanlig tekstfil med navnet cfg{mac}. Denne telefonen ber kun om den individuelle konfigurasjonsfilen, sÄ det er ikke mulig Ä optimalisere innstillingene ved Ä flytte dem til en felles fil. En annen egenskap ved Grandstream-konfigurasjonen er navngivningen av parameterne. Alle er nummerert og betegnes som P###. For eksempel:

P1650 – styrer webgrensesnittet for telefonadministrasjon (0 – HTTPS, 1 – HTTP)
P47 – SIP-serveradresse for tilkobling.

Hvis konfigurasjonen lagres i en tekstfil, krever ikke parameterne noen gruppering og kan stÄ i hvilken som helst rekkefÞlge. Linjer som begynner med # betraktes som kommentarer.

I tilfelle innstillingene presenteres i xml-format, mÄ de vÊre innebygd i noden , som igjen mÄ vÊre innebygd i . Alle parametere skrives som tilsvarende tagger med parameterverdien inni.
Eksempel pÄ innstilling

1
    
    109
    
    109
    
    109
    
    SIP_PWD
    
    Bruker# 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 og T21

Utstyret i disse modellene stÞtter individuelle konfigurasjonsfiler for enheter og felles for modellene. I mitt tilfelle mÄtte jeg plassere de felles parametrene i filene y000000000031.cfg og y000000000034.cfg henholdsvis. De individuelle konfigurasjonsfilene navngis i henhold til MAC-adressen: 00112233aabb.cfg.

Innstillingene for yealink lagres i tekstformat. Av obligatoriske krav er det kun nÞdvendig Ä ha versjonen av filen pÄ fÞrste linje, i formatet #!version:1.0.0.1.

Alle parametere skrives som parameter = verdi. Kommentarer mÄ begynne med symbolet "#". Navnene pÄ parametrene og deres verdier kan finnes i dokumentasjonen pÄ produsentens nettsted.
fellesinnstillinger#!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 = Russisk
#Specify the LCD language, the valid values are: English (default), Chinese_S, Chinese_T, German, French, Turkish, Italian, Polish, Spanish and Portuguese.
lang.gui = Russisk
#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

individuelle innstillinger#!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 = Bruker 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

Til slutt, takket vÊre den fantastiske auto-provision-funksjonen pÄ de nevnte telefonene, oppsto det ingen problemer med Ä koble til nye enheter i nettverket. Alt handlet om Ä finne MAC-adressen til telefonen og generere konfigurasjonsfilen etter mal.

Jeg hÄper at du har lest helt til slutten og fÄtt nytte av det som ble skrevet.

Takk for oppmerksomheten.

Kilde: habr.com

KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere đŸ”„ KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster