Въведение
Веднъж ръководството одобри експеримент по внедряване на IP телефония в нашата кантора. Тъй като моята опитност в тази област беше минимална, задачата предизвика у мен огромен интерес и аз се потопих в изучаването на различни аспекти на въпроса. След завършването на проучването реших да споделя придобитите знания — с надеждата, че те ще бъдат полезни на някого. И така...
Изходни данни
Избрана и внедрена е IP-АТС Asterisk. Паркът от телефони се състои от устройства Cisco 7906g, Panasonic UT-KX123B, Grandstream GXP1400 и Dlink DPH-150S(E)/F3, Yealink T19 и T21. Такъв широк обхват е резултат от решението в рамките на експеримента да опитаме от всичко по малко, за да съставим собствено мнение относно съотношението цена/качество/удобство.
Задача
Да се максимално опрости и унифицира процесът на настройка на новите устройства. Всички телефони трябва да бъдат синхронизирани по време, да имат телефонен указател, зареждан с сървър и да предоставят достъп до настройките за администратора.
Решението на тази задача е просто — да се реализира автоматична настройка на телефоните, т.н. Provisioning. Всъщност, именно за моята реализация на тази чудесна функция ще стане дума.
Настройка на tftpd, dhcpd
За разпространение на настройките на телефоните избрах tftp като универсален вариант, поддържан от всички платформи, лесен за настройка и управление.
Никаква специфична настройка за tftp не беше необходима. Инсталирах стандартния tftpd и поставих всички необходими файлове в неговата коренна директория.
Файловете с настройки бяха разположени по каталозите в съответствие с производителя на телефона. Всъщност, устройството на Cisco не поиска да влезе в своята папка, затова се наложи да го съхранявам в корена.
За да укажа на телефоните местоположението на tftp-сервера, използвах option-66. Освен това, разделих ги на отделни класове по производител. Всеки клас получи собствен сегмент адреси и индивидуална папка за конфигурационни файлове. Струва си да се спомене, че устройствата на D-link трябваше да се класифицират по MAC адреси, тъй като информация за производителя те не предоставят в dhcp-запроса.
Фрагмент 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/";
}
Телефоните трябваше принудително да бъдат изключени от общия пул. В противен случай, те никак не искаха да напуснат своя "базов лагер".
Пример за настройки на подсетка
подмрежа 10.1.1.0 маска на мрежата 255.255.255.0 {
опция маршрутизатори 10.1.1.1;
пул {
забрани членове на "cisco";
забрани членове на "panasonic";
забрани членове на "dlink";
диапазон 10.1.1.230 10.1.1.240;
}
пул {
позволява членове на "cisco";
диапазон 10.1.1.65 10.1.1.69;
}
пул {
позволява членове на "panasonic";
диапазон 10.1.1.60 10.1.1.64;
}
пул {
позволява членове на "dlink";
диапазон 10.1.1.55 10.1.1.59;
}
}
След рестартиране на всички ангажирани услуги телефоните уверено се насочиха към конфигурациите на зададения им tftp-сървър. Остана само да ги поставим там.
Cisco 7906
Тези устройства ми бяха предоставени в заводската опаковка. Пришло се наложи да се променят, за да работят с asterisk. Но това е отделна история. В конкретния случай за настройка на устройството създадох, в съответствие с инструкциите, файл SEPAABBCCDDEEFF.cnf.xml в корена на tftp-сървъра. Където AABBCCDDEEFF — MAC адресът на устройството.
За настройките на телефоните от Cisco вече е писано неведнъж, затова просто ще оставя работния файл с конфигурациите.
Настройки за cisco
true
SIP
root
ADMIN_PWD
D-M-Y
Централно Тихоокеанско Стандарно Време
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
Руски_Русия
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
Ако само сега планирате да закупите телефон от тази серия, имайте предвид, че автоматичната настройка се поддържа само при устройствата 150S/F3. При устройството 150S/F2, което попадна в ръцете ми, такава функционалност не открих.
Конфигурационният файл може да бъде както в XML формат, така и в обикновен текстов. За XML има едно изискване: тагът трябва да бъде в началото на реда, в противен случай парсерът ще го игнорира и стойността на съответния параметър няма да се промени.
За настройката на телефона се използват два файла. f0D00580000.cfg — за съхранение на настройките на всички телефони и 00112233aabb.cfg (MAC-адрес в малки букви) за индивидуални настройки. Индивидуалните настройки, естествено, имат по-висок приоритет.
Целият набор от настройки включва над хиляда реда; за да не се пренасища статията, ще опиша минимално необходимия набор от настройки.
Задължителни са кореновият възел VOIP_CONFIG_FILE и вложеният в него възел version. Настройките ще бъдат приложени само ако версията на файла е по-висока от текущите настройки в устройството. Можете да разберете тази стойност чрез уеб интерфейса на телефона в раздела maintenance (системно управление). За телефони с фабрични настройки в двата случая това е 2.0002. Освен това версията на индивидуалния файл трябва да е по-голяма от версията на общия файл.
Първо ще представя файл с общата конфигурация за всички телефони. Всъщност, той съхранява всички настройки, индивидуалният файл ще отговаря само за номер на телефона и надписа на екрана.
В двата блока, представени по-долу, се задават параметри за времева зона и синхронизация на времето, начален порт за RTP и се включва мрежовия мост между WAN и LAN портовете на устройството.
Фрагмент№1
DHCP 2 1 1 0 VOIP 10000 200 10.1.1.4 1 0 60 12 1500 1 1
Всъщност имената на конфигурационните параметри са достатъчно „говорещи“, за да не е необходимо подробно описание.
SIP за една линия
5060 SIP1 10.1.1.50 5060 3600 1 10.1.1.50 1 0 G711A,G711U,G722
Настройки за отдалечен контрол
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
Настройки на телефона
123 0 112 Компания 5 1 30 0 1 0,,1 0 0 1 XML-PBook1 Телефонен указател http://10.1.1.50/provisioning/dlink-phonebook.xml : 0 0 приятели,дом,работа,бизнес,класен другар,колега
Всички останали настройки ще останат „по подразбиране“. Сега всеки телефон Dlink, свързан с мрежата, веднага ще приеме общ набор от параметри. За да зададете индивидуални параметри за устройството, ви е необходим отделен файл. В него трябва само да се посочат необходимите настройки за конкретния абонат.
настройки на абоната
2.0006 SIP1 Потребител #117 117 5060 117 SIP_PWD 3600 1 5060 117 SIP_PWD
Panasonic UT-KX123B
Тези устройства получават настройки по малко по-различен начин. Конфигурацията се съхранява в текстови файлове. Максималният размер на конфигурационния файл е 120 КБ. Независимо от количеството файлове, общият им размер не трябва да надвишава 120 КБ.
Конфигурационният файл се състои от набор от редове, на които се налагат посочените по-долу условия:
- Първият винаги трябва да е ред с коментар, включващ следната последователност от символи (44 байта):
# Panasonic SIP Phone Standard Format File #
Шестнадесетичното представяне на тази последователност:
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
За предотвратяване на случайни промени в установената последователност от символи, се препоръчва конфигурационният файл да започва с реда:
# Panasonic SIP Phone Standard Format File # DO NOT CHANGE THIS LINE! - Конфигурационните файлове трябва да завършват с празен ред.
- Всеки ред трябва да завършва с последователността "".
- Максималната дължина на реда е 537 байта, включително последователността "".
- Следните редове се игнорират:
- редове, които надвишават лимита от 537 байта;
- празни редове;
- редове с коментари, които започват със символа "#";
- Редът на всеки параметър трябва да бъде записан под формата XXX="yyy" (XXX: име на параметъра, yyy: неговата стойност). Стойността трябва да е в двойни кавички.
- Разделянето на строката с параметри на няколко реда не е допустимо. Това ще доведе до грешка при обработката на конфигурационния файл и в резултат - до провал на инициализацията.
- Стойностите на някои параметри трябва да бъдат посочени отделно за всяка линия. Параметърът с суфикс "_1" в името е параметър за линия 1; "_2" — за линия 2 и т.н.
- Максималната дължина на името на параметъра е 32 символа.
- Максималната дължина на стойността на параметъра е 500 символа, с изключение на символите на двойните кавички.
- Пробелите в реда не са разрешени, с изключение на случаите, когато стойността включва символ за интервал.
- Стойностите на някои параметри могат да бъдат посочвани "празни", за да се зададе празна стойност на параметъра.
- Параметрите се задават без определен ред.
- Ако същият параметър се посочва в конфигурационния файл повече от веднъж, се прилага стойността, посочена първа.
Тази сериозна програма с изисквания към конфигурационния файл, откровено казано, ме разочарова. На мен ми се струва, че взаимодействието с сървъра. управлението на телефоните Panasonic е направено изключително неудобно. По този параметър телефонът значително отстъпва на другите.
При първото включване на устройството (или след нулиране на заводските настройки) той се опитва да зареди така наречения файл на продукта (в този случай това е KX-UT123RU.cfg), в който трябва да се съдържат пътищата към другите файлове с конфигурация.
Файл на продукта# 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"
След това телефонът ще покаже на екрана съобщение за успешно завършване на подготовката и ще изчака, докато не бъде презареден. И след презареждането той ще започне да обработва установените му файлове с конфигурация.
В файла master.cfg се препоръчва да се посочват общи настройки за всички телефони. Както и при Dlink, ще посоча само някои параметри. Имената на останалите параметри и техните стойности могат да бъдат намерени в документацията на сайта на производителя.
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=""
В индивидуалния конфигурационен файл на устройството по традиция остават само настройките на абоната.
aabbccddeeff.cfgDISPLAY_NAME_1=«User #168»
PHONE_NUMBER_1=«168»
SIP_URI_1=«168»
LINE_ENABLE_1=«Enabled»
PROFILE_ENABLE_1=«Enabled»
SIP_AUTHID_1=«168»
SIP_PASS_1=«SIP_PWD»
Grandstream GXP-1400
Параметрите на тези телефони се съхраняват в един xml файл с име cfg{mac}.xml. Или в обикновен текстов файл с име cfg{mac}. Този телефон запитва само индивидуалния конфигурационен файл, така че оптимизацията на настройките чрез изнасянето им в общ файл не е възможна. Друга особеност на настройките на Grandstream е наименованието на параметрите. Всички те са номерирани и обозначават като P###. Например:
P1650 – отговаря за уеб интерфейса за управление на телефона (0 – HTTPS, 1 – HTTP)
P47 – адрес на SIP сървъра за свързване.
Ако конфигурацията се съхранява в текстов файл, параметрите не изискват никаква групировка и могат да бъдат в произволен ред. Стрings, започващи с #, се разглеждат като коментари.
В случай, че настройките са представени във формат xml, те трябва да бъдат вложени в възел , който от своя страна трябва да бъде вложен в . Всички параметри се записват под формата на съответстващи тагове с стойността на параметъра вътре.
Пример за настройка
1
109
109
109
SIP_PWD
User# 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 и T21
Устройствата от тези модели поддържат индивидуални конфигурационни файлове за устройства и общи за моделите. В моя случай, трябваше да поставя общите параметри в файловете y000000000031.cfg и y000000000034.cfg. Индивидуалните конфигурационни файлове са именувани в съответствие с MAC адреса: 00112233aabb.cfg.
Настройките за yealink устройствата се съхраняват в текстов формат. Единственото задължително изискване е наличието в първия ред на версията на файла, във формата #!version:1.0.0.1.
Всички параметри се записват под формата параметър = стойност. Коментарите трябва да започват със символа "#". Имената на параметрите и техните стойности могат да бъдат намерени в документацията на сайта на производителя.
общи настройки#!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 = Руски
#Specify the LCD language, the valid values are: English (default), Chinese_S, Chinese_T, German, French, Turkish, Italian, Polish, Spanish and Portuguese.
lang.gui = Руски
#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 = Владивосток
#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 = Телефонен указател
features.remote_phonebook.flash_time = 3600
индивидуални настройки#!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 = Тестово телефон
#Configure the display name of account1.
account.1.display_name = Потребител 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
В крайна сметка, благодарение на чудесната функция auto-provision, предвидена в споменатите телефони, не възникнаха никакви проблеми с свързването на новите устройства в мрежата. Всичко се сведе до изясняване на MAC адреса на телефона и генериране на конфигурационния файл по шаблона.
Надявам се, че сте прочели до края и сте извлекли полза от прочетеното.
Благодаря ви за вниманието.
Източник: habr.com
