Úvod
Jednou vedení schválilo experiment s implementací IP telefonie v naší kanceláři. Protože moje zkušenosti v této oblasti byly minimální, úkol ve mně vyvolal obrovský zájem a ponořil jsem se do studia různých aspektů této problematiky. Po ukončení svého studia jsem se rozhodl sdílet získané znalosti — v naději, že se někomu budou hodit. Takže…
Vstupní data
Jako IP-ÚSTEDNA byl vybrán a rozvinut Asterisk. Telefonní park se skládá z přístrojů Cisco 7906g, Panasonic UT-KX123B, Grandstream GXP1400 a Dlink DPH-150S(E)/F3, Yealink T19 a T21. Takový rozptyl je dán tím, že v rámci experimentu bylo rozhodnuto vyzkoušet všechny tyto možnosti, abychom si mohli vytvořit vlastní názor na poměr cena/kvalita/uživatelský komfort.
Úkol
Maximálně zjednodušit a unifikovat proces nastavení nových přístrojů. Všechny telefony musí být synchronizovány podle času, mít telefonní seznam, který se nahrává z serveru a poskytovat přístup k nastavením pro administrátora.
Řešení tohoto úkolu je jednoduché — realizovat automatické nastavení telefonů, tzv. Provisioning. O mé realizaci této skvělé funkce bude řeč.
Nastavení tftpd, dhcpd
Pro distribuci nastavení telefonům jsem vybral tftp jako univerzální variantu, podporovanou všemi platformami, která je jednoduchá na nastavení a správu.
Speciální nastavení pro tftp nebylo potřeba. Nainstaloval jsem standardní tftpd a umístil všechny potřebné soubory do jeho kořenového adresáře.
Soubory s nastavením jsem umístil do adresářů podle výrobce telefonu. Pravda, zařízení od Cisco se do své složky tak nějak nedostalo, musel jsem je držet v kořenovém adresáři.
Abych telefonům určil umístění tftp-serveru, použil jsem option-66. Navíc jsem je rozdělil do samostatných tříd podle výrobce. Každá třída dostala vlastní segment adres, a individuální složku pro konfigurační soubory. Mimochodem, zařízení od D-link jsem musel určit podle MAC adres, protože informace o výrobci v dhcp dotazu neposkytují.
Fragment 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/";
}
Telefony bylo nutné násilně vyloučit z celkového fondu. Jinak se nechtěly dostat do svého "žabníku".
Příklad nastavení podsítě
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;
}
}
Po restartu všech zapojených služeb se telefony spolehlivě obrátily na určený tftp-server pro nastavení. Zůstává jen je tam umístit.
Cisco 7906
Tyto přístroje jsem dostal v továrním balení. Musel jsem je přeprogramovat, abych je spojil s asteriskem. Ale to je jiný příběh. V konkrétním případě jsem pro nastavení přístroje vytvořil v kořenovém adresáři tftp-serveru soubor SEPAABBCCDDEEFF.cnf.xml. Kde AABBCCDDEEFF je MAC adresa přístroje.
O nastavení telefonů Cisco už bylo napsáno mnohokrát, takže zde jednoduše nechám funkční soubor s nastavením.
Nastavení pro cisco
true
SIP
root
ADMIN_PWD
D-M-Y
Střední Tichomořský čas
10.1.1.4
Unicast
10.1.1.50
2000
5060
5061
10.1.1.50
Vypnout
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
Uživatel #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
Ruská_Ruská_Federace
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
Pokud plánujete zakoupit telefon této řady, dejte si pozor, automatické nastavení je podporováno pouze u telefonů 150S/F3. U zařízení 150S/F2, které jsem měl k dispozici, jsem tuto funkci nenašel.
Konfigurační soubor může být buď ve formátu xml, nebo v běžném textovém formátu. U xml existuje jedno požadavek: tag musí být na začátku řádku, jinak ho parser ignoruje a hodnota příslušného parametru se nezmění.
Pro nastavení telefonu se používají dva soubory. f0D00580000.cfg — pro ukládání nastavení všech telefonů a 00112233aabb.cfg (MAC adresa malými písmeny) pro individuální nastavení. Individuální nastavení mají samozřejmě vyšší prioritu.
Celkový soubor nastavení obsahuje více než tisíc řádků; abych článek nezatěžoval, popíšu minimální nezbytnou sadu nastavení.
Povinné jsou kořenový uzel VOIP_CONFIG_FILE a vložený uzel version. Nastavení budou aplikována pouze tehdy, pokud bude verze souboru vyšší než aktuální nastavení v zařízení. Toto hodnotu lze zjistit přes webové rozhraní telefonu v sekci údržba (systémové řízení). U zařízení s továrními nastaveními je v obou případech hodnota 2.0002. Kromě toho musí být verze individuálního souboru vyšší než verze obecného souboru.
Nejprve uvedu soubor s obecným nastavením pro všechny telefony. V podstatě uchovává všechna nastavení, individuální soubor bude odpovídat pouze za číslo telefonu a nápis na obrazovce.
V dvou blocích uvedených níže jsou nastaveny parametry časové zóny a synchronizace času, počáteční port pro RTP a je zapnutý síťový most mezi WAN a LAN porty zařízení.
Fragment č. 1
<GLOBAL_CONFIG_MODULE> <WAN_Mode>DHCP<\/WAN_Mode> <Default_Protocol>2<\/Default_Protocol> <Enable_DHCP>1<\/Enable_DHCP> <DHCP_Auto_DNS>1<\/DHCP_Auto_DNS> <DHCP_Auto_Time>0<\/DHCP_Auto_Time> <Host_Name>VOIP<\/Host_Name> <RTP_Initial_Port>10000<\/RTP_Initial_Port> <RTP_Port_Quantity>200<\/RTP_Port_Quantity> <SNTP_Server>10.1.1.4<\/SNTP_Server> <Enable_SNTP>1<\/Enable_SNTP> <Time_Zone>71<\/Time_Zone> <Time_Zone_Name>UCT_011<\/Time_Zone_Name> <Enable_DST>0<\/Enable_DST> <SNTP_Timeout>60<\/SNTP_Timeout> <Default_UI>12<\/Default_UI> <MTU_Length>1500<\/MTU_Length> <\/GLOBAL_CONFIG_MODULE> <LAN_CONFIG_MODULE> <Enable_Bridge_Mode>1<\/Enable_Bridge_Mode> <Enable_Port_Mirror>1<\/Enable_Port_Mirror> <\/LAN_CONFIG_MODULE>
Názvy konfiguračních parametrů jsou dostatečně „výmluvné“, aby je nebylo třeba podrobně popisovat.
SIP pro jednu linku
5060 SIP1 10.1.1.50 5060 3600 1 10.1.1.50 1 0 G711A,G711U,G722
Nastavení vzdáleného ovládání
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
Nastavení telefonu
Všechny ostatní nastavení zůstanou „výchozí“. Teď jakýkoliv telefon Dlink připojený k síti okamžitě přijme společný pro všechny soubor parametrů. Pro zadání individuálních parametrů pro přístroj je potřeba samostatný soubor. V něm je potřeba pouze uvést nezbytná nastavení pro jednotlivého předplatitele.
nastavení předplatitele
2.0006 SIP1 Uživatel #117 117 5060 117 SIP_PWD 3600 1 5060 117 SIP_PWD
Panasonic UT-KX123B
Tyto zařízení získávají nastavení jiným způsobem. Konfigurace se ukládá do textových souborů. Maximální velikost konfiguračního souboru je 120 KB. Bez ohledu na počet souborů nesmí celková velikost překročit 120 KB.
Konfigurační soubor se skládá z řady řádků, na které se vztahují následující podmínky:
- První řádek je vždy komentář, který zahrnuje následující sekvenci znaků (44 bajtů):
# Panasonic SIP Phone Standard Format File #
Šestnáctkový zápis této sekvence:
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
Aby se předešlo náhodné změně stanovené sekvence znaků, doporučuje se začít konfigurační soubor touto řádkou:
# Panasonic SIP Phone Standard Format File # DO NOT CHANGE THIS LINE! - Konfigurační soubory by měly končit prázdným řádkem.
- Každý řádek by měl končit sekvencí "".
- Maximální délka řádku činí 537 bajtů, včetně sekvence "".
- Následující řádky se ignorují:
- řádky překračující limit 537 bajtů;
- prázdné řádky;
- řádky komentářů začínající znakem "#";
- Řádek každého parametru se zapisuje ve formátu XXX=„yyy“ (XXX: název parametru, yyy: jeho hodnota). Hodnota by měla být uvedena v dvojitých uvozovkách.
- Rozdělení řádku parametrů na více řádků není povoleno. To povede k chybě při zpracování konfiguračního souboru a nakonec k selhání inicializace.
- Hodnoty některých parametrů je třeba uvádět zvlášť pro každou linku. Parametr s příponou "_1" v názvu je parametr pro linku 1; "_2" — pro linku 2 atd.
- Maximální délka názvu parametru činí 32 znaků.
- Maximální délka hodnoty parametru činí 500 znaků s výjimkou znaků dvojitých uvozovek.
- Mezery v řetězci nejsou povoleny, kromě případů, kdy hodnota obsahuje mezeru.
- Hodnoty některých parametrů lze zadávat jako "prázdné", aby se nastavila prázdná hodnota parametru.
- Parametry jsou uváděny bez určitého pořadí.
- Pokud je stejný parametr v konfiguračním souboru uveden více než jednou, použije se hodnota uvedená jako první.
Tak rozsáhlý soubor požadavků na konfigurační soubor mě upřímně rozesmutnil. Podle mého názoru je implementace interakce s serverem ovládáním u telefonů Panasonic provedena velmi nepohodlně. V tomto ohledu telefon značně zaostává za ostatními.
Při prvním zapnutí zařízení (nebo po továrním resetu) se pokouší načíst takzvaný produktový soubor (v tomto případě KX-UT123RU.cfg), který by měl obsahovat cesty k dalším konfiguračním souborům.
Produktový soubor# 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"
Poté telefon zobrazí na obrazovce zprávu o úspěšném dokončení přípravy a bude čekat, až bude restartován. A teprve po restartu začne zpracovávat příslušné konfigurační soubory.
V souboru master.cfg se doporučuje uvádět společná nastavení pro všechny telefony. Stejně jako v případě Dlinku, uvedu pouze některé parametry. Název ostatních parametrů a jejich hodnoty lze nalézt v dokumentaci na webu výrobce.
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=""
V individuálním konfiguračním souboru zařízení tradičně zůstávají pouze nastavení uživatele.
aabbccddeeff.cfgDISPLAY_NAME_1=„Uživatel #168“
PHONE_NUMBER_1=„168“
SIP_URI_1=„168“
LINE_ENABLE_1=„Povoleno“
PROFILE_ENABLE_1=„Povoleno“
SIP_AUTHID_1=„168“
SIP_PASS_1=„SIP_PWD“
Grandstream GXP-1400
Parametry těchto telefonů se ukládají do jednoho xml souboru s názvem cfg{mac}.xml nebo do obyčejného textového souboru s názvem cfg{mac}. Tento telefon vyžaduje pouze individuální konfigurační soubor, takže optimalizace nastavení přesunem do sdíleného souboru nebude možná. Další zvláštností nastavení Grandstream je pojmenování parametrů. Všechny jsou očíslovány a označeny jako P###. Například:
P1650 – odpovídá za webové rozhraní pro správu telefonu (0 – HTTPS, 1 – HTTP)
P47 – adresa SIP serveru pro připojení.
Pokud jsou nastavení uložena v textovém souboru, parametry nevyžadují žádné seskupení a jdou v libovolném pořadí. Řádky začínající na # jsou považovány za komentáře.
V případě, že jsou nastavení ve formátu xml, musí být vložena do uzlu , který musí být opět vložen do . Všechny parametry jsou zapisovány ve formě odpovídajících tagů s hodnotou parametru uvnitř.
Příklad nastavení
1
109
109
109
SIP_PWD
Uživatel# 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 a T21
Zařízení těchto modelů podporují individuální konfigurační soubory pro zařízení a společné pro modely. V mém případě jsem musel umístit společné parametry do souborů y000000000031.cfg a y000000000034.cfg. Individuální konfigurační soubory jsou pojmenovány podle MAC adresy: 00112233aabb.cfg.
Nastavení pro yealinky se uchovávají v textovém formátu. Z povinných požadavků je pouze nutnost mít v prvním řádku verzi souboru ve formátu #!version:1.0.0.1.
Všechny parametry jsou zapisovány ve formátu parametr = hodnota. Komentáře by měly začínat symbolem "#". Názvy parametrů a jejich hodnoty lze nalézt v dokumentaci na webových stránkách výrobce.
obecná nastavení#!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 = Ruský
#Specify the LCD language, the valid values are: English (default), Chinese_S, Chinese_T, German, French, Turkish, Italian, Polish, Spanish and Portuguese.
lang.gui = Ruský
#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 = Telefonní seznam
features.remote_phonebook.flash_time = 3600
individuální nastavení#!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 = Testovací telefon
#Configure the display name of account1.
account.1.display_name = Uživatel 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
Nakonec, díky skvělé funkci auto-provision, předpokládané v zmíněných telefonech, nedošlo k žádným problémům při připojení nových zařízení k síti. Všechno se zjednodušilo na zjištění MAC adresy telefonu a generování konfiguračního souboru podle šablony.
Doufám, že jste dočetli až do konce a získali z přečteného užitek.
Děkuji za pozornost.
Zdroj: habr.com
