Bevezetés
Egyszer a vezetőség jóváhagyott egy kísérletet az IP telefonálás bevezetésére a hivatalunkban. Mivel a tapasztalatom ezen a területen minimális volt, a feladat óriási érdeklődést keltett bennem, és elmerültem a kérdés különböző aspektusainak tanulmányozásában. A tanulmány végén úgy döntöttem, hogy megosztom az újonnan szerzett tudásomat – abban a reményben, hogy mások számára hasznos lehet. Szóval...
Forrásadatok
Az IP-ATC-ként az Asterisk lett kiválasztva és telepítve. A telefonpark Cisco 7906g, Panasonic UT-KX123B, Grandstream GXP1400 és Dlink DPH-150S(E)/F3, Yealink T19 és T21 készülékekből áll. Ez a sokszínűség annak köszönhető, hogy a kísérlet keretében úgy döntöttünk, hogy mindent egy kicsit kipróbálunk, hogy véleményt alkothassunk az ár/minőség/kényelem arányáról.
Feladat
Makszimálisan egyszerűsíteni és egységesíteni a új készülékek beállítási folyamatát. Minden telefonnak szinkronizálva kell lennie időben, rendelkeznie kell egy telefonkönyvvel, amelyet a a szerver feltöltenek, és biztosítaniuk kell a beállításokhoz való hozzáférést az adminisztrátor számára.
Ennek a feladatnak a megoldása egyszerű – megvalósítani a telefonok automatikus beállítását, a közismert Provisioning-et. Valójában erről a csodás funkcióról fog szólni a beszámolóm.
tftpd, dhcpd beállítása
A telefonok beállításainak biztosításához a tftp-t választottam mint egy univerzális lehetőséget, amelyet minden platform támogat, könnyen beállítható és kezelhető.
A tftp specifikus beállítására nem volt szükség. Telepítettem a gyári tftpd-t, és minden szükséges fájlt elhelyeztem a gyökérkönyvtárában.
A beállítási fájlokat gyártó szerint helyeztem el a könyvtárakba. Igaz, a Cisco készülék nem ment be a saját mappájába, ezért a gyökérkönyvtárban kellett tárolnom.
Annak érdekében, hogy megmutassam a telefonoknak a tftp szerver helyét, az option-66-ot használtam. Ezen kívül az egyes gyártók szerint különböző osztályokra osztottam őket. Minden osztály saját IP-címtartományt és egyedi mappát kapott a konfigurációs fájlokhoz. Érdemes megjegyezni, hogy a D-link készülékek MAC-címek alapján lettek számítva, mivel a gyártóra vonatkozó információkat nem adták meg a dhcp-kérdésben.
dhcpd.conf részlet
# Указываем необходимые опции
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/";
}
A telefonokat kényszerűen ki kellett zárnom a közös poolból. Máskülönben sehogy sem akartak elmenni a saját „béka mappájukba”.
A subnet beállítások példája
alhálózat 10.1.1.0 hálózati maszk 255.255.255.0 {
opció útválasztók 10.1.1.1;
tartomány {
tagadja "cisco";
tagadja "panasonic";
tagadja "dlink";
tartomány 10.1.1.230 10.1.1.240;
}
tartomány {
engedélyez tagokat a "cisco";
tartomány 10.1.1.65 10.1.1.69;
}
tartomány {
engedélyez tagokat a "panasonic";
tartomány 10.1.1.60 10.1.1.64;
}
tartomány {
engedélyez tagokat a "dlink";
tartomány 10.1.1.55 10.1.1.59;
}
}
A minden érintett szolgáltatás újraindítása után a telefonok magabiztosan irányozták beállításaikat a számukra kijelölt tftp-szerverre. Csak annyit kellett ott elhelyezni.
Cisco 7906
Ezek a készülékek gyári csomagolásban kerültek hozzám. Újra kellett programoznom őket, hogy működjenek az asterisk-szel. De ez egy külön történet. Az adott esetben a készülék beállításához az utasítások szerint létrehoztam a tftp-szerver gyökerében a SEPAABBCCDDEEFF.cnf.xml fájlt. Ahol AABBCCDDEEFF a készülék MAC-címe.
A Cisco telefonok beállításáról már többször írtak, ezért egyszerűen csak megosztom a működő beállítási fájlt.
Beállítások a cisco számára
true
SIP
root
ADMIN_PWD
D-M-Y
Közép-csendes-óceáni időszámítás
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
Felhasználó #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
Orosz_Orosz_Federáció
hu_HU
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
Ha még csak most tervezi, hogy megvásárolja a sorozat telefonját, legyen óvatos, az automatikus beállítás csak a 150S/F3 készülékeknél támogatott. A nálam lévő 150S/F2 típusnál ezt a funkciót nem találtam.
A konfigurációs fájl lehet xml formátumban vagy egyszerű szöveges fájlban. Az xml fájl esetében van egy követelmény: a címkének a sor elején kell lennie, különben a parser figyelmen kívül hagyja, és a megfelelő paraméter értéke nem változik.
A telefon beállításához két fájlt használnak. f0D00580000.cfg — az összes telefon beállításainak tárolására, és 00112233aabb.cfg (MAC-cím kisbetűs) az egyedi beállításokhoz. Az egyedi beállítások természetesen nagyobb prioritással bírnak.
A teljes beállítási lista több mint ezer sort számlál, hogy ne terhelje a cikket, a minimálisan elegendő beállítást írom le.
Kötelező a gyökércsomópont VOIP_CONFIG_FILE és benne található csomópont version. A beállítások csak akkor lépnek életbe, ha a fájl verziója magasabb, mint a készülék jelenlegi beállításainak verziója. Ezt az értéket a telefon webes felületén a karbantartás (rendszerkezelés) részében lehet megtudni. Az alapértelmezett beállításokkal rendelkező telefonok esetén ez mindkét esetben 2.0002. Ezen kívül az egyedi fájl verziójának magasabbnak kell lennie, mint a közös fájl verziója.
Először bemutatom a közös konfigurációs fájlt minden telefonhoz. Valójában ez tárolja az összes beállítást, az egyedi fájl csak a telefonszámért és a képernyőn megjelenő feliratért felelős.
Az alábbi két blokkban a időzóna és időszinkronizálás paraméterei, az RTP kezdeti portja, valamint a WAN és LAN portok közötti hálózati híd aktiválása van beállítva.
1. számú fragmentum
DHCP 2 1 1 0 VOIP 10000 200 10.1.1.4 1 0 60 12 1500 1 1
A konfigurációs paraméterek nevei önmagukban is „beszédesek”, így nem szükséges részletesen leírni őket.
SIP egy vonalhoz
5060 SIP1 10.1.1.50 5060 3600 1 10.1.1.50 1 0 G711A,G711U,G722
Távoli irányítás beállításai
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
Telefonbeállítások
123 0 112 Cég 5 1 30 0 1 0,,1 0 0 1 XML-PBook1 Telefonkönyv http://10.1.1.50/provisioning/dlink-phonebook.xml : 0 0 barát,otthon,munka,üzlet,osztálytárs,munkatárs
Minden egyéb beállítás alapértelmezetten marad. Most bármely Dlink telefon, amely csatlakozik a hálózatra, azonnal átveszi a közös beállításokat. Az egyedi beállításokhoz külön fájlra van szükség, amelyben csupán a szükséges beállításokat kell megadni az egyes felhasználók számára.
felhasználói beállítások
2.0006 SIP1 Felhasználó #117 117 5060 117 SIP_PWD 3600 1 5060 117 SIP_PWD
Panasonic UT-KX123B
Ezek az eszközök más módon kapják meg a beállításokat. A konfiguráció szöveges fájlokban tárolódik. A konfigurációs fájl maximális mérete 120 KB. A fájlok számától függetlenül a fájlok összes mérete nem haladhatja meg a 120 KB-ot.
A konfigurációs fájl egy sorokból álló készlet, amelyekre az alábbi feltételek vonatkoznak:
- Elsőként mindig egy megjegyzés sor áll, amely a következő karakterláncot tartalmazza (44 bájt):
# Panasonic SIP Phone Standard Format File #
A karakterlánc hexadecimális ábrázolása:
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
A telepített karakterlánc véletlenszerű módosításának megakadályozása érdekében ajánlott a konfigurációs fájlt az alábbi sorral kezdeni:
# Panasonic SIP Phone Standard Format File # DO NOT CHANGE THIS LINE! - A konfigurációs fájloknak üres sorral kell végződniük.
- Minden sor végén a "" sorozatnak kell szerepelnie.
- A sor maximális hossza 537 bájt, beleértve a "" sorozatot.
- A következő sorokat figyelmen kívül hagyják:
- a 537 bájtot meghaladó sorok;
- üres sorok;
- a "#" karakterrel kezdődő megjegyzések;
- Minden paraméter sorának a következő formában kell szerepelnie: XXX="yyy" (XXX: a paraméter neve, yyy: értéke). Az értéknek idézőjelekbe kell kerülnie.
- A paraméterek sorainak több sorra való felbontása nem megengedett. Ez a konfigurációs fájl feldolgozási hibájához vezet, ami a kezdeményezés leállását eredményezi.
- Néhány paraméter értékeit külön kell megadni minden vonalhoz. Az "_1" végződésű paraméter az 1. vonalra vonatkozik; az "_2" a 2. vonalra, stb.
- A paraméter nevének maximális hossza 32 karakter.
- A paraméter értékének maximális hossza 500 karakter, kivéve az idézőjelek.
- A sorokban a szóközök nem megengedettek, kivéve, ha az érték szóköz karaktert tartalmaz.
- Egyes paraméterek értékeit meg lehet adni "üresen", hogy üres paraméterértéket állítsunk be.
- A paraméterek megadása nem követel meg bizonyos sorrendet.
- Ha ugyanazt a paramétert többször is megadjuk a konfigurációs fájlban, az elsőként megadott érték érvényesül.
Ez a komoly követelményrendszer a konfigurációs fájlra őszintén szomorít. Véleményem szerint az interakciós megvalósítás a szerverrel Panasonic telefonok kezelésével rendkívül kényelmetlen. E tekintetben a telefon jelentősen lemarad a többiekhez képest.
Készülék első bekapcsolásakor (vagy gyári beállítások visszaállításakor) megpróbálja betölteni az úgynevezett termék fájlt (jelen esetben ez a KX-UT123RU.cfg), amelynek tartalmaznia kell a többi konfigurációs fájl elérési útját.
Termék fájl# 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"
Ezt követően a telefon megjelenít egy üzenetet, amely a készülék előkészítésének sikerességéről tájékoztat, és vár, amíg újra nem indítják. Az újraindítás után elkezdi feldolgozni a megfelelő konfigurációs fájlokat.
A master.cfg fájlban ajánlott a minden telefonra vonatkozó általános beállítások megadása. Ahogyan a Dlink esetében, csak néhány paramétert említek. A többi paraméter nevét és értékét a gyártó weboldalán található dokumentációban lehet megtalálni.
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=""
A készülék egyedi konfigurációs fájljában hagyományosan csak az előfizetői beállítások maradnak.
aabbccddeeff.cfgDISPLAY_NAME_1=„Felhasználó #168”
PHONE_NUMBER_1=„168”
SIP_URI_1=„168”
LINE_ENABLE_1=„Engedélyezve”
PROFILE_ENABLE_1=„Engedélyezve”
SIP_AUTHID_1=„168”
SIP_PASS_1=„SIP_PWD”
Grandstream GXP-1400
Ezeknek a telefonoknak a beállításai egy xml fájlban tárolódnak, amelynek neve cfg{mac}.xml, vagy egy sima szöveges fájlban cfg{mac} néven. Ez a telefon csak egyedi konfigurációs fájlt kér, így nem lehet a beállításokat egy közös fájlba kiemelni. A Grandstream-ek beállításának egy másik sajátossága a paraméterek elnevezése. Mindegyik paraméter számozva van és P###-ként van jelölve. például:
P1650 – a telefon kezelőfelületéért felel (0 – HTTPS, 1 – HTTP)
P47 – a SIP szerver címe a csatlakozáshoz.
Ha a konfiguráció szöveges fájlban van tárolva, a paramétereknek nincs szükségük csoportosításra és bármilyen sorrendben megadhatók. A # jellel kezdődő sorokat kommentárként kezeljük.
Ha a beállítások xml formátumban vannak, a következő struktúrában kell szerepelniük: <config version=„1”>, amely viszont be kell, hogy legyen ágyazva <gs_provision version=„1”> elembe. Minden paramétert a megfelelő tagekben kell rögzíteni, a paraméter értéke a tag belsejében.
Beállítási példa
<?xml version="1.0" encoding="UTF-8" ?>
<gs_provision version="1">
<config version="1">
<P271>1<\/P271>
<!-- Fiók neve. Nem lehet üres. -->
<P270>109<\/P270>
<!-- SIP Felhasználói azonosító -->
<P35>109<\/P35>
<!-- Azonosító -->
<P36>109<\/P36>
<!-- Azonosító jelszó -->
<P34>SIP_PWD<\/P34>
<!-- Megjelenítési név (John Doe) -->
<P3>Felhasználó# 109<\/P3>
<!-- Közös beállítások -->
<P207>10.1.1.50<\/P207>
<P208>2<\/P208>
<P47>10.1.1.50<\/P47><!-- 1. sor SIP szerver -->
<P401>0<\/P401><!-- 2. sor tiltsa le -->
<P2>ADMIN_PWD<\/P2><!-- admin jelszó -->
<P196>USER_PWD<\/P196><!-- felhasználói web konzol pwd -->
<P1362>hu<\/P1362><!-- megjelenítő nyelv -->
<P212>0<\/P212><!-- Frissítés TFTP-ből -->
<P192>10.1.1.50/grandstream<\/P192>
<P1357>1<\/P1357><!-- zárolja a beállítást telefonon (csak alap) -->
<P64>TZc-11<\/P64><!-- időzóna -->
<P30>10.1.1.4<\/P30><!-- NTP-szerver -->
<P330>1<\/P330><!-- PB letöltés HTTP-ből -->
<P331>http:\/\/10.1.1.50\/provisioning\/grandstream<\/P331><!-- telefonkönyv alap URL -->
<P333>30<\/P333><!-- Automatikus PB frissítés 30 percenként -->
<\/config>
<\/gs_provision>
Yealink T19 és T21
Ezek a modellek lehetővé teszik az egyedi konfigurációs fájlok használatát az eszközökhöz, valamint a modellek közötti közös fájlokat. Az én esetemben a közös paramétereket az y000000000031.cfg és y000000000034.cfg fájlokban kellett elhelyeznem. Az egyedi konfigurációs fájlok neve a MAC-cím szerint van: 00112233aabb.cfg.
A Yealink beállítások szöveges formátumban tárolódnak. Az egyetlen kötelező követelmény az, hogy a fájl első sorában szerepeljen a verzió, a következő formátumban: #!version:1.0.0.1.
Minden paraméter az alábbi formátumban van megadva: paraméter = érték. A megjegyzések a "#" jelzettel kezdődnek. A paraméterek neveit és azok értékeit a gyártó weboldalán található dokumentációban lehet megtalálni.
általános beállítások#!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 = orosz
#Specify the LCD language, the valid values are: English (default), Chinese_S, Chinese_T, German, French, Turkish, Italian, Polish, Spanish and Portuguese.
lang.gui = orosz
#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 = Telefonkönyv
features.remote_phonebook.flash_time = 3600
egyedi beállítások#!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 = Teszt telefon
#Configure the display name of account1.
account.1.display_name = Felhasználó 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
Végül, a szuper auto-provision funkciónak köszönhetően, amelyet az említett telefonok biztosítanak, nem voltak problémák az új készülékek hálózatra csatlakozásával. Az egész azzal zárult, hogy meg kellett tudni a telefon MAC-címét, és konfigurációs fájlt kellett generálni a sablon szerint.
Remélem, hogy végigolvasta a szöveget, és hasznot húzott belőle.
Köszönöm a figyelmet.
Forrás: habr.com
