Innledning
En gang godkjente ledelsen et eksperiment for Ă„ implementere IP-telefoni i vĂ„rt kontor. Siden min erfaring innen dette omrĂ„det var minimal, vekket oppgaven en enorm interesse i meg, og jeg dykket ned i studiet av ulike aspekter av spĂžrsmĂ„let. Etter Ă„ ha fullfĂžrt dykkinga bestemte jeg meg for Ă„ dele den kunnskapen jeg hadde tilegnet meg â i hĂ„p om at den ville vĂŠre nyttig for noen. SĂ„âŠ
Utgangsdata
Som IP-PBX ble Asterisk valgt og implementert. Telefonparken bestÄr av Cisco 7906g, Panasonic UT-KX123B, Grandstream GXP1400 og Dlink DPH-150S(E)/F3, Yealink T19 og T21. Denne variasjonen skyldes at det i forbindelse med eksperimentet ble bestemt Ä prÞve alt litt, for Ä danne seg en mening om forholdet mellom pris/kvalitet/brukervennlighet.
Oppgave
Maksimere forenklingen og standardiseringen av prosessen for konfigurasjon av nye apparater. Alle telefonene mÄ vÊre synkronisert med tiden, ha en telefonbok som lastes ned fra serveren og gi tilgang til innstillingene for administrator.
LĂžsningen pĂ„ dette problemet er enkel â Ă„ implementere automatisk konfigurasjon av telefonene, kjent som Provisioning. Det er faktisk om min implementering av denne fantastiske funksjonen det vil bli snakket.
Konfigurasjon av tftpd, dhcpd
For Ă„ distribuere innstillingene til telefonene valgte jeg tftp som et universelt alternativ, stĂžttet av alle plattformer, enkelt Ă„ konfigurere og administrere.
Spesifikk konfigurasjon for tftp var ikke nĂždvendig. Jeg installerte standard tftpd og la alle nĂždvendige filer i rotkatalogen.
Jeg plasserte konfigurasjonsfilene i katalogene i henhold til produsentens spesifikasjoner. Dessuten fikk ikke Cisco-enheten tilgang til sin egen mappe, sÄ jeg mÄtte lagre den i rotkatalogen.
For Ä spesifisere telefonene hvor tftp-serveren er plassert, brukte jeg option-66. I tillegg delte jeg dem opp i separate klasser basert pÄ produsent. Hver klasse fikk sitt eget adresseomrÄde og individuell mappe for konfigurasjonsfiler. For ordens skyld mÄtte D-link-enhetene identifiseres etter MAC-adressene, siden de ikke ga informasjon om produsenten 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 tvangsmessig ekskluderes fra den vanlige puljen. Ellers ville de ikke komme seg til sitt 'froskebrett'.
Eksempel pÄ innstillinger for subnett
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 omstart av alle involverte tjenester, begynte telefonene Ă„ sĂžke etter innstillinger fra den tildelte tftp-serveren. Bare Ă„ plassere dem der gjensto.
Cisco 7906
Disse enhetene kom til meg i fabrikkinnpakning. Jeg mÄtte reinstallere programvaren for Ä fÄ dem til Ä fungere med Asterisk. Men det er en annen historie. I dette tilfellet opprettet jeg, i henhold til instruksjonene, en fil i roten av tftp-serveren som heter SEPAABBCCDDEEFF.cnf.xml. Der AABBCCDDEEFF er MAC-adressen til enheten.
Det er allerede skrevet flere ganger om hvordan man konfigurerer Cisco-telefoner, sÄ jeg vil bare legge ved en funksjonell fil med innstillinger.
Innstillinger for 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 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
Hvis du planlegger Ä kjÞpe en telefon i denne serien, vÊr oppmerksom pÄ at automatisk oppsett kun stÞttes pÄ enhetene 150S/F3. PÄ enheten 150S/F2, som jeg har fÄtt tak i, fant jeg ikke denne funksjonaliteten.
Konfigurasjonsfilen kan vÊre i bÄde xml-format og vanlig tekstformat. For xml er det ett krav: taggen mÄ vÊre i begynnelsen av linjen, ellers vil parseren ignorere den og verdien av den tilsvarende parameteren forblir uendret.
To filer brukes for Ă„ konfigurere telefonen. f0D00580000.cfg â for lagring av innstillingene for alle telefonene og 00112233aabb.cfg (MAC-adressen i smĂ„ bokstaver) for individuelle innstillinger. Individuelle innstillinger har naturligvis hĂžyere prioritet.
Det totale settet med innstillinger bestÄr av over tusen linjer; for ikke Ä overfylle artikkelen, vil jeg beskrive et minimum av nÞdvendige innstillinger.
Obligatorisk er rotenoden VOIP_CONFIG_FILE og noden som er inne i den. versionInnstillingene vil bare bli brukt hvis filversjonen er hÞyere enn de nÄvÊrende innstillingene pÄ enheten. Du kan finne denne verdien gjennom webgrensesnittet pÄ telefonen i vedlikeholdsseksjonen (systemadministrasjon). For telefoner med fabrikkinnstillinger er denne verdien 2.0002 i begge tilfeller. I tillegg mÄ versjonen pÄ den individuelle filen vÊre hÞyere enn versjonen pÄ den generelle filen.
FÞrst gir jeg filen med den generelle konfigurasjonen for alle telefonene. I bunn og grunn lagrer den alle innstillingene; den individuelle filen vil kun ha ansvar for telefonnummeret og teksten pÄ skjermen.
I de to blokkene nedenfor settes parameterne for tidssone og tidsynkronisering, startporten for RTP, og nettverksbroen mellom WAN og LAN tilkoblingene pÄ enheten aktiveres.
Fragment #1
DHCP 2 1 1 0 VOIP 10000 200 10.1.1.4 1 0 60 12 1500 1 1
Selv navnene pÄ konfigurasjonsparametrene er klare nok til at de ikke trenger 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 fjernkontroll
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 0 112 Company 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,klassekamerat,kolega
Alle andre innstillinger vil forbli "standard". NÄ vil enhver Dlink-telefon koblet til nettverket umiddelbart ta i bruk det felles settet av parametere. For Ä angi individuelle parametere for enheten, kreves en separat fil. I denne filen mÄ bare nÞdvendige innstillinger for den enkelte abonnent angis.
innstillinger for abonnent
2.0006 SIP1 User #117 117 5060 117 SIP_PWD 3600 1 5060 117 SIP_PWD
Panasonic UT-KX123B
Disse enheter mottar innstillinger 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 overstige 120 KB.
Konfigurasjonsfilen bestÄr av et sett med linjer, som er underlagt de angitte betingelsene:
- Den fĂžrste linjen skal alltid vĂŠre en kommentar som inneholder fĂžlgende tegnsekvens (44 byte):
# Panasonic SIP Phone Standard Format File #
Den 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 tegnsekvensen, anbefales det Ă„ begynne konfigurasjonsfilen med linjen:
# Panasonic SIP Phone Standard Format File # DO NOT CHANGE THIS LINE! - Konfigurasjonsfilene mÄ avsluttes med en tom linje.
- Hver linje mÄ avsluttes med sekvensen "".
- Den maksimale lengden pÄ linjen er 537 byte, inkludert sekvensen "".
- FĂžlgende linjer ignoreres:
- linjer som overskrider grensen pÄ 537 byte;
- tomme linjer;
- kommentarlinjer som begynner med symbolet "#";
- Linjen for hver parameter skal skrives i formen XXX="yyy" (XXX: parameterens navn, yyy: dens verdi). Verdien mÄ vÊre i doble anfÞrselstegn.
- Oppdeling av parameterlinjer pÄ flere linjer er ikke tillatt. Dette vil fÞre til en feil i behandlingen av konfigurasjonsfilen og dermed til en feil ved oppstart.
- Verdiene for enkelte parametere mÄ angis separat for hver linje. En parameter med suffiks "_1" i navnet er parameteren for linje 1; "_2" er for linje 2, osv.
- Den maksimale lengden pÄ parameterens navn er 32 tegn.
- Den maksimale lengden pÄ parameterens verdi er 500 tegn, med unntak av doble anfÞrselstegn.
- Det er ikke tillatt med mellomrom i linjen, unntatt nÄr verdien inkludert mellomromssymbolet.
- Verdiene for noen parametere kan angis som "tomme" for Ă„ sette parameterens verdi til tom.
- Parametrene angis uten en bestemt rekkefĂžlge.
- Hvis den samme parameteren angis mer enn én gang i konfigurasjonsfilen, brukes verdien som er angitt fÞrst.
Et sÄ strengt sett med krav til konfigurasjonsfilen har, Êrlig talt, skuffet meg. Etter min mening er implementeringen av interaksjon med serveren administrasjonen pÄ Panasonic-telefonene ekstremt upraktisk. PÄ dette punktet er telefonen betydelig dÄrligere enn de andre.
NÄr enheten slÄs pÄ for fÞrste gang (eller etter tilbakestilling til fabrikkinnstillinger), prÞver den Ä laste inn den sÄkalte produktfilen (i dette tilfellet KX-UT123RU.cfg), som skal inneholde banene til de andre konfigurasjonsfilene.
Produktfilen# 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"
Etter dette vil telefonen vise en melding pÄ skjermen om at forberedelsen er fullfÞrt og vil vente til den blir omstartet. FÞrst etter omstart vil den begynne Ä behandle de nÞdvendige konfigurasjonsfilene.
I filen master.cfg anbefales det Ä angi fellesinnstillinger for alle telefonene. Som med Dlink, vil jeg kun spesifisere noen parametre. Navnene pÄ de andre parametrene og deres verdier kan finnes i dokumentasjonen pÄ produsentens nettsted.
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="»
XMLAPP_LDAP_USERID=""
XMLAPP_LDAP_USERPASS=""
I den individuelle konfigurasjonsfilen for enheten, som tradisjon, forblir kun abonnentinnstillingene.
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. Eller 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 konfigurasjonen av Grandstream-er er navngivningen av innstillingene. 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 innstillingene noen gruppering og kan vÊre i vilkÄrlig rekkefÞlge. Linjer som begynner med #, betraktes som kommentarer.
Hvis innstillingene presenteres i xml-format, mĂ„ de vĂŠre inneholdt i en node <config version=â1â>, som igjen mĂ„ vĂŠre inneholdt i <gs_provision version=«1»>. Alle innstillinger skrives som tilsvarende tagger med innstillingsverdien inni.
Eksempel pÄ innstilling
<?xml version="1.0" encoding="UTF-8" ?>
<gs_provision version="1">
<config version="1">
<P271>1<\/P271>
<!-- Kontonavn. Kan ikke vĂŠre tomt. -->
<P270>109<\/P270>
<!-- SIP Bruker ID -->
<P35>109<\/P35>
<!-- Autentiserings-ID -->
<P36>109<\/P36>
<!-- Autentiseringspassord -->
<P34>SIP_PWD<\/P34>
<!-- Visningsnavn (John Doe) -->
<P3>Bruker# 109<\/P3>
<!-- Felles innstillinger -->
<P207>10.1.1.50<\/P207>
<P208>2<\/P208>
<P47>10.1.1.50<\/P47><!-- linje 1 sip server -->
<P401>0<\/P401><!-- Linje 2 deaktivert -->
<P2>ADMIN_PWD<\/P2><!-- admin-passord -->
<P196>USER_PWD<\/P196><!-- brukerwebkonsollpassord -->
<P1362>ru<\/P1362><!-- visningssprÄk -->
<P212>0<\/P212><!-- Oppgradering fra TFTP -->
<P192>10.1.1.50/grandstream<\/P192>
<P1357>1<\/P1357><!-- lÄs konfigurasjon via telefon (kun basic) -->
<P64>TZc-11<\/P64><!-- tidssone -->
<P30>10.1.1.4<\/P30><!-- NTP-server -->
<P330>1<\/P330><!-- Last ned PB fra HTTP -->
<P331>http://10.1.1.50/provisioning/grandstream<\/P331><!-- telefonbok base url -->
<P333>30<\/P333><!-- Automatisk oppdatering av PB om 30 min -->
<\/config>
<\/gs_provision>
Yealink T19 og T21
Utstyret av disse modellene stÞtter individuelle konfigurasjonsfiler for enheter og felles for modellene. I mitt tilfelle mÄtte jeg plassere de felles innstillingen i filene y000000000031.cfg og y000000000034.cfg. Individuelle konfigurasjonsfiler navngis i henhold til MAC-adressen: 00112233aabb.cfg.
Innstillingene for yealink lagres i tekstformat. Det eneste obligatoriske kravet er at den fÞrste linjen inneholder versjonsnummeret pÄ filen, i formatet #!version:1.0.0.1.
Alle parametre skrives i formatet parameter = verdi. Kommentarer mÄ starte med symbolet "#". Navnene pÄ parametrene og verdiene deres kan du finne i dokumentasjonen pÄ produsentens nettsted.
generelle innstillinger#!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 =
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, som finnes pÄ telefonene jeg har nevnt, var det ingen problemer med Ä koble nye enheter til nettverket. Alt kom ned til Ä finne MAC-adressen til telefonen og generere konfigurasjonsfilen basert pÄ malen.
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
