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