Introduktion
Engang godkendte ledelsen et eksperiment med at implementere IP-telefoni på vores kontor. Da min erfaring på området var minimal, vækkede opgaven enorm interesse i mig, og jeg dykkede ned i studiet af forskellige aspekter af emnet. Efter at have gennemført mit dyk besluttede jeg at dele de tilegnede viden — i håbet om, at den vil være nyttig for nogen. Så…
Kildedata
Som IP-PBX blev Asterisk valgt og implementeret. Telefonparken består af enheder fra Cisco 7906g, Panasonic UT-KX123B, Grandstream GXP1400 og Dlink DPH-150S(E)/F3, Yealink T19 og T21. Denne variation skyldes, at der i eksperimentet blev truffet beslutning om at prøve forskellige løsninger for at danne sig et indtryk af forholdet mellem pris/ kvalitet/ komfort.
Regler for godkendelse af merge-requests
Målet er at maksimere forenklingen og standardiseringen af processen til opsætning af nye enheder. Alle telefoner skal synkroniseres tidsmæssigt, have en telefonbog der kan indlæses fra server og give administratoradgang til indstillingerne.
Løsningen på denne opgave er enkel — at implementere automatisk opsætning af telefoner, såkaldt Provisioning. Faktisk vil dette indlæg handle om min implementering af denne fremragende funktion.
Opsætning af tftpd, dhcpd
Til distribution af indstillinger til telefonerne valgte jeg tftp som en universel løsning, som understøttes af alle platforme, og som er let at konfigurere og administrere.
Der krævedes ikke nogen særlig opsætning for tftp. Jeg installerede den standard tftpd og lagde alle nødvendige filer i dens rodkatalog.
Filerne med indstillinger blev placeret i mapper i henhold til telefonproducenten. Desværre kom Cisco-enheden aldrig til sin mappe, så jeg måtte opbevare den i roden.
For at angive telefonernes lokation til tftp-serveren brugte jeg option-66. Derudover delte jeg dem op i separate klasser efter producent. Hver klasse fik sit eget adresseområde og en individuel mappe til konfigurationsfiler. For øvrigt måtte jeg identificere D-link-enhederne efter MAC-adresser, da de ikke leverede producentinformation i dhcp-anmodningen.
Uddrag af 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/";
}
Telefonerne måtte tvinges ud af det samlede pulje. Ellers ville de ikke gå til deres 'søgeområde'.
Eksempel på subnet-indstillinger
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 genstart af alle involverede tjenester, begyndte telefonerne sikkert at søge efter indstillingerne på deres tftp-server. Der var kun tilbage at placere dem der.
Cisco 7906
Disse enheder kom til mig i fabriksindpakning. Jeg var nødt til at nedgradere dem for at få dem til at fungere med Asterisk. Men det er en historien for sig selv. I dette specifikke tilfælde oprettede jeg filen SEPAABBCCDDEEFF.cnf.xml i roden af tftp-serveren til opsætning af enheden, ifølge instruktionen. Her er AABBCCDDEEFF — MAC-adressen på enheden.
Der er skrevet om konfiguration af Cisco-telefoner mange gange før, så jeg vil blot efterlade den fungerende fil med indstillinger.
Indstillinger 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 kun planlægger at købe en telefon af denne serie, skal du være opmærksom på, at automatisk konfiguration kun understøttes i apparaterne 150S/F3. Den enhed 150S/F2, jeg havde i mine hænder, havde ikke denne funktionalitet.
Konfigurationsfilen kan være i både xml-format og almindelig tekst. For xml er der et krav: tagget skal være i starten af linjen, ellers vil parseren ignorere det, og værdien af den tilsvarende parameter vil ikke ændre sig.
Til opsætning af telefonen bruges der to filer. f0D00580000.cfg — til opbevaring af indstillingerne for alle telefoner og 00112233aabb.cfg (MAC-adresse i små bogstaver) til individuelle indstillinger. Individuelle indstillinger har naturligvis højere prioritet.
Det samlede sæt indstillinger består af mere end tusind linjer. For ikke at overfylde artiklen vil jeg beskrive det minimale, men tilstrækkelige sæt indstillinger.
Obligatorisk er rodnoden VOIP_CONFIG_FILE og den indlejrede node version. Indstillingerne vil kun blive anvendt, hvis filversionen er højere end de nuværende indstillinger i apparatet. Denne værdi kan findes gennem webgrænsefladen af telefonen under vedligeholdelse (systemadministration). For telefoner med fabriksindstillinger er dette i begge tilfælde 2.0002. Desuden skal versionen af den individuelle fil være højere end versionen af den generelle fil.
Først vil jeg præsentere filen med den generelle konfiguration for alle telefoner. I princippet opbevarer den alle indstillingerne; den individuelle fil vil kun svare til telefonnummeret og teksten på skærmen.
I de to blokke nedenfor indstilles parametre for tidszone og tidsynkronisering, startporten for RTP, og der aktiveres en netværksbro mellem WAN- og LAN-porte i 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å konfigurationsparametrene er så intuitive, at de ikke behøver en detaljeret beskrivelse.
SIP til én linje
5060 SIP1 10.1.1.50 5060 3600 1 10.1.1.50 1 0 G711A,G711U,G722
Indstillinger for fjernstyring
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
Telefonindstillinger
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
Alle andre indstillinger forbliver 'som standard'. Nu vil enhver Dlink-telefon, der er tilsluttet netværket, straks modtage det fælles sæt af parametre. For at angive individuelle parametre for apparatet kræves der en separat fil. I denne fil skal der kun angives de nødvendige indstillinger for den enkelte abonnent.
abonnentindstillinger
2.0006 SIP1 Bruger #117 117 5060 117 SIP_PWD 3600 1 5060 117 SIP_PWD
Panasonic UT-KX123B
Disse apparater modtager indstillinger på en lidt anden måde. Konfigurationen gemmes i tekstfiler. Den maksimale størrelse for konfigurationsfilen er 120 KB. Uanset mængden af filer må den samlede størrelse ikke overstige 120 KB.
Konfigurationsfilen består af et sæt linjer, som er underlagt følgende betingelser:
- Den første linje er altid en kommentar, der inkluderer følgende sekvens af tegn (44 byte):
# Panasonic SIP Phone Standard Format File #
Det hexadecimale repræsentation af denne 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
For at forhindre utilsigtede ændringer af den fastsatte sekvens af tegn, anbefales det at starte konfigurationsfilen med linjen:
# Panasonic SIP Phone Standard Format File # DO NOT CHANGE THIS LINE! - Konfigurationsfiler skal slutte med en tom linje.
- Hver linje skal slutte med sekvensen "".
- Den maksimale længde af en linje er 537 byte, inklusive sekvensen "".
- Følgende linjer ignoreres:
- linjer, der overskrider grænsen på 537 byte;
- tomme linjer;
- kommentarlinjer, der starter med symbolet "#";
- Linjen for hver parameter skrives i formen XXX="yyy" (XXX: parameternavn, yyy: dens værdi). Værdien skal være omkranset af doble citationstegn.
- Opdeling af parameterlinjen i flere linjer er ikke tilladt. Dette vil føre til en fejlhåndtering af konfigurationsfilen og dermed til en fejl under initialiseringen.
- Værdier for nogle parametre skal angives separat for hver linje. En parameter med suffixet "_1" i navnet er en parameter for linje 1; "_2" for linje 2 osv.
- Den maksimale længde af parameternavnet er 32 karakterer.
- Den maksimale længde af parameterens værdi er 500 tegn undtagen for dobbelte citationstegn.
- Der er ikke tilladt mellemrum i strengen, undtagen når værdien indeholder et mellemrum.
- Værdierne af nogle parametre kan angives som 'tomme' for at indstille en tom parameter værdi.
- Parametrene angives uden nogen bestemt rækkefølge.
- Hvis den samme parameter angives i konfigurationsfilen mere end én gang, anvendes den værdi, der er angivet først.
En så striks samling af krav til konfigurationsfilen har, ærligt talt, skuffet mig. Efter min mening er implementeringen af interaktionen med serveren styringssystemet for Panasonic-telefoner ekstremt besværligt. På dette punkt er telefonen betydeligt underlegen i forhold til andre.
Ved første opstart af enheden (eller efter nulstilling til fabriksindstillinger) forsøger den at indlæse den såkaldte produktfil (i dette tilfælde er det KX-UT123RU.cfg), som skal indeholde stierne til de øvrige konfigurationsfiler.
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'
Efter dette vil telefonen vise en meddelelse om, at forberedelsen er afsluttet med succes, og den vil vente på, at den bliver genstartet. Efter genstart vil den begynde at behandle de nødvendige konfigurationsfiler.
I filen master.cfg anbefales det at angive generelle indstillinger for alle telefoner. Ligesom med Dlink vil jeg kun angive nogle få parametre. Navne på de øvrige parametre og deres værdier kan findes i dokumentationen på producentens hjemmeside.
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 konfigurationsfil for enheden forbliver kun abonnentindstillingerne, som sædvanligt.
aabbccddeeff.cfgDISPLAY_NAME_1=«Bruger #168»
PHONE_NUMBER_1=«168»
SIP_URI_1=«168»
LINE_ENABLE_1=«Aktiveret»
PROFILE_ENABLE_1=«Aktiveret»
SIP_AUTHID_1=«168»
SIP_PASS_1=«SIP_PWD»
Grandstream GXP-1400
Parametrene for disse telefoner gemmes i en enkelt xml-fil med navnet cfg{mac}.xml. Alternativt i en almindelig tekstfil med navnet cfg{mac}. Denne telefon anmoder kun om en individuel konfigurationsfil, så det vil ikke være muligt at optimere indstillingerne ved at flytte dem til en fælles fil. En anden særegenhed ved konfigurationen af Grandstream-enhederne er navngivningen af parametrene. Alle er nummererede og betegnes som P###. For eksempel:
P1650 – ansvarlig for webgrænsefladen til telefonstyring (0 – HTTPS, 1 – HTTP)
P47 – adressen på SIP-serveren til forbindelse.
Hvis konfigurationen gemmes i en tekstfil, kræver parametrene ikke nogen gruppering og står i vilkårlig rækkefølge. Linjer, der starter med #, betragtes som kommentarer.
Hvis indstillingerne præsenteres i xml-format, skal de være indlejret i noden , som i sin tur skal være indlejret i . Alle parametre skrives som tilsvarende tags med parameterens værdi inden i.
Eksempel på konfiguration
1
109
109
109
SIP_PWD
Bruger# 109
10.1.1.50
2
10.1.1.50
0
ADMIN_PWD
USER_PWD
da
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
Maskinerne i disse modeller understøtter individuelle konfigurationsfiler for enheder og fælles for modellerne. I mit tilfælde måtte jeg placere de fælles parametre i filerne y000000000031.cfg og y000000000034.cfg henholdsvis. Individuelle konfigurationsfiler navngives i henhold til MAC-adressen: 00112233aabb.cfg.
Indstillingerne for yealink'erne gemmes i tekstformat. Det eneste krav er, at den første linje indeholder filversionen, i formatet #!version:1.0.0.1.
Alle parametre skrives i form af parameter = værdi. Kommentarer skal begynde med symbolet "#". Navne på parametre og deres værdier kan findes i dokumentationen på producentens hjemmeside.
generelle indstillinger#!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 = Telefonbog
features.remote_phonebook.flash_time = 3600
individuelle indstillinger#!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 = Bruger 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
Som resultat, takket være den fantastiske auto-provision-funktion, der er forudset i de nævnte telefoner, opstod der ingen problemer med at forbinde de nye enheder til netværket. Det hele kom ned til at finde MAC-adressen på telefonen og generere konfigurationsfilen efter skabelonen.
Jeg håber, at du har læst til slut og fået noget ud af det, du har læst.
Tak for opmærksomheden.
Kilde: habr.com
