img

Настройка Auto Provisioning на Asterisk для аппаратов Dlink

21 ноября
20:00
Бесплатный вебинар
Введение в Docker
Ведущий — Филипп Игнатенко.
Руководитель центра разработки
Записаться
img
img

Введение

Однажды в организации, где я работаю, случился Asterisk

Случился не без моего участия, а если быть точным, то я и был главным виновником, и как следствие - главным исполнителем. Напасть была локальной, но достаточно быстро получила широкое распространение, хотя, в отдельных уголках приходилось нести прогресс в массы с применением тяжелой артиллерии и напалма. В итоге Asterisk`ом было охвачено порядка полутора тысяч абонентов.

Процесс настройки абонента изначально выглядел следующим образом:

Включил телефон, обновил прошивку. Пока он перезагружается, завел абонента на Asterisk (создал запись для регистрации SIP-клиента). Далее, самый очевидный способ настройки телефона - web-интерфейс; набрал в адресной строке браузера IP-адрес телефона, авторизовался, настроил два десятка параметров и готово. На всё ушло 2-3 минуты.

Следующий абонент - повторяем.

На втором десятке абонентов начало надоедать, появилось желание как-нибудь упростить процесс.

Заглянул в настройки: экспорт и импорт конфигурации присутствует; сохранил конфигурацию телефона в файл, заглянул в него - обычный текстовый файл, в котором перечислены параметры с их значениями.

Нашел параметры, значения которых менял в web-интерфейсе, причем большинство из этих параметров, хоть и отличается от дефолтных, но одинаково для всех настраиваемых в рамках данной организации телефонов. Таким образом, имея эталонный файл конфигурации и редактируя в нем всего 5-6 строк, я получал конфигурации для остальных телефонов, которые "заливал" в аппараты всё через тот же web-интерфейс.

Спустя какое-то время количество абонентов заметно выросло, компания продолжала развиваться, сотрудники мигрировали между подразделениями, увольнялись, появлялись новые, некоторые телефоны выходили из строя, и возня с файлами стала постепенно отнимать много времени и раздражала с каждым днем всё больше. Тут я вспомнил про пункт меню из web-интерфейса, в котором были написаны многообещающие слова "Auto Provision".

Обратимся за определением к производителям телефонов. У Dlink или Fanvil мы получим следующее:

Auto Provisioning используется для реализации удаленной/автоматической инсталляции, развертывания конфигурационных и некоторых других связанных файлов.

Snom дает нам практически такое же:

Auto Provisioning может использоваться для предоставления общих и специфических параметров конфигурации на телефоны и для актуализации прошивки.

Вроде бы всё устраивает, значит, будем для наших целей отталкиваться от этих определений.

Вариантов автоматической настройки предусмотрено несколько, и без долгих терзаний, как наиболее понятный и доступный был выбран следующий:


Развертывание конфигурации с tftp сервера, адрес которого телефон будет получать по DHCP в Option 66.

Разберемся вкратце, что есть что.

TFTP - простой протокол передачи файлов (Trivial File Transfer Protocol). В отличие от FTP основан на транспортном протоколе UDP и в нем отсутствует возможность аутентификации (однако, возможна фильтрация по IP-адресу). Одно из основных преимуществ TFTP - простота реализации клиента, поэтому он достаточно широко используется в частности для загрузки обновлений и конфигураций сетевых устройств.

DHCP - протокол динамической настройки узла (Dynamic Host Configuration Protocol); сетевой протокол, позволяющий сетевым устройствам автоматически получать IP-адрес и другие параметры, необходимые для работы в сети TCP/IP.

Не вдаваясь глубоко в подробности, схема обмена сообщениями DHCP при получении параметров выглядит следующим образом:

Схема работы DHCP

DHCPDISCOVER: клиент (в нашем случае, телефон) передает это сообщение broadcast, и использует его для поиска DHCP-серверов в своей канальной среде.

В одном из полей этого пакета, в поле options, клиент передает список необходимых ему опций, наиболее распространенными из которых являются:

(1) - Subnet Mask

(3) - Router

(6) - Domain Name Server

(15) - Domain Name

именно в этом поле клиент сообщает о том, что ему нужен адрес tftp сервера для загрузки конфигурационного и/или других связанных файлов. Номер опции, которая его содержит - 66 (у cisco есть аналогичная опция 150, основное отличие которой в том, что она может содержать адреса нескольких tftp серверов).

DHCPOFFER: cервер отвечает на запрос клиента. Сервер может передать это сообщение как broadcast так и unicast (зависит от значений полей полученных от клиента). В этом сообщении сервер предлагает клиенту параметры, которые он может отдать в текущей конфигурации. Если в сегменте сети клиента несколько DHCP серверов, то получив запрос, они все отправляют OFFER-ы.

После того, как клиент выбрал, OFFER какого из DHCP серверов принять, он отправляет следующий пакет:

DHCPREQUEST: казалось бы, если клиент определился, какой DHCP сервер "пришелся ему по душе", можно передать unicast-запрос этому серверу; однако предается broadcast, чтобы уведомить остальные DHCP серверы о своём выборе (добавляется опция 54, указывающая адрес выбранного DHCP-сервера), и они могли освободить зарезервированные OFFER-ы.

DHCPACK: cервер отправляет подтверждение клиенту. После этого клиент настраивает свой сетевой интерфейс, используя предоставленные параметры и опции.

В различных ситуациях могут еще возникать DHCPDECLINE, DHCPNAK, DHCPRELEASE, DHCPINFORM, но их рассмотрение в рамки данной статьи не входит.

Для получения исчерпывающей информации о работе DHCP можно обратиться к RFC 2131:

https://tools.ietf.org/html/rfc2131

Про опции 66 и 150 можно почитать здесь:

https://wiki.merionet.ru/ip-telephoniya/67/dhcp-opciya-150-i-66/

https://blog.router-switch.com/2013/03/dhcp-option-150-dhcp-option-66/

Про настройку DHCP сервера и Option 66 на Mikrotik можно почитать здесь:

https://wiki.merionet.ru/seti/5/nastrojka-dhcp-servera-na-mikrotik/

Чтобы передать телефону адрес tftp сервера, с которого он может получить конфигурационный файл, на DHCP сервере в параметрах области задаем Option 66, в которой указываем hostname либо IP адрес нашего tftp сервера.

Настройки по-умолчанию в большинстве телефонов подразумевают получение IP-адреса по DHCP и запрос Option 66.

В итоге, телефон получает IP, получает адрес tftp сервера и пытается "стянуть" оттуда файл своей конфигурации.

Согласно документации Dlink, загрузка файла конфигурации происходит следующим образом:

  1. Устанавливается соединение с сервером.
  2. Проверяется наличие файла с соответствующим именем:
  3. - в первую очередь проверяется файл с именем соответствующим аппаратной платформе;
    - во вторую - соответствующий MAC адресу устройства;
    - в третью - соответствующий ID устройства;
    - файл с произвольным именем проверяется либо в последнюю очередь (DHCP option, UpnP) либо в первую, если он явно указан в конфигурации телефона.

  4. Проверяется версия конфигурационного файла.
  5. Если версия выше, чем текущая на телефоне, файл конфигурации применяется.

Как уже говорилось ранее, файл конфигурации представляет собой текстовый документ определенного вида:

Первая строка:

<<VOIP CONFIG FILE>>Version:2.0002

Для того, чтобы конфигурация была применена, версия файла должна быть выше, нежели текущая на телефоне, инкрементировать требуется последний разряд версии. По-умолчанию версия конфигурации 2.0002

Пример:

Текущая версия конфигурации 2.0002 на одном телефоне и 2.0004 на еще двух. Для того чтобы конфигурация применилась только на один телефон в первой строке файла конфигурации ставим

<<VOIP CONFIG FILE>>Version:2.0004

для того чтобы обновить конфигурацию на всех телефонах ставим в первой строке

<<VOIP CONFIG FILE>>Version:2.0005

Разделы:

  • <GLOBAL CONFIG MODULE - содержит данные о сетевых настройках, серверах DNS, SNTP...
  • <LAN CONFIG MODULE> - содержит данные о настройках LAN, режимах работы LAN
  • <TELE CONFIG MODULE> - настройки расширенных функций телефонной части (Call Feature)
  • <DSP CONFIG MODULE> - настройка кодеков
  • <SIP CONFIG MODULE> - настройки SIP, серверы, регистрация etc...
  • <PPPoE CONFIG MODULE> - настройки PPPoE
  • <MMI CONFIG MODUL>E - настройки доступа и WEB интерфейса
  • <QOS CONFIG MODULE> - qos и vlan
  • <DHCP CONFIG MODULE> - настройки внутреннего DHCP
  • <NAT CONFIG MODULE> - настройки NAT и ALG
  • <PHONE CONFIG MODULE> - настройки телефонной части, в этом же разделе настраивается remote phonebook и extension key.
  • <SCREEN KEY CONFIG MODULE> - настройка программных клавиш (для версии F3)
  • <AUTOUPDATE CONFIG MODULE> - настройки Autoprovision
  • <VPN CONFIG MODULE> - настройки VPN
  • <TR069 CONFIG MODULE> - настройки TR069

Заканчивается файл строкой <<END OF FILE>>

Для обновления какой-либо опции конфигурации телефона, чтобы файл конфигурации был принят телефоном достаточно наличие следующих полей:

<<VOIP CONFIG FILE>> Version:2.0002
<Название необходимого раздела>
Название опции: значение
<<END OF FILE>>

Например, для обновления имени хоста телефона необходимо создать следующий файл конфигурации:

<<VOIP CONFIG FILE>>Version:2.0003
<GLOBAL CONFIG MODULE>
Host Name :ReceptionPhone
<<END OF FILE>>

Все остальные элементы являются необязательными.

Итак, овал нарисован.

Остались сущие мелочи - реализовать инструмент для создания конфигураций и дальнейшего управления ими. Займемся этим в следующей публикации.

Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
DevOps
Скидка 25%
DevOps-инженер с нуля
Научитесь использовать инструменты и методы DevOps для автоматизации тестирования, сборки и развертывания кода, управления инфраструктурой и ускорения процесса доставки продуктов в продакшн. Станьте желанным специалистом в IT-индустрии и претендуйте на работу с высокой заработной платой.
Получи бесплатный
вводный урок!
Пожалуйста, укажите корректный e-mail
отправили вводный урок на твой e-mail!
Получи все материалы в telegram и ускорь обучение!
img
Еще по теме:
img
Привет, дорогой читатель! В повседневной работе зачастую не хватает автоматизации. Поэтому, мы решили создать калькулятор инстал
img
Мы подумали, а почему бы не консолидировать все знания по Cisco VoIP продуктам и их настройке в единый документ? Добавить в них
img
Привет! Для удобства, мы структурировали все материалы по графическому интерфейсу FreePBX в нашей базе знаний в единый файл. Сам
img
Вам, как сетевому инженеру, крайне важно разбираться в том, каким образом вызовы VoIP влияют на пропускную способность канала в
img
В этой статье расскажем как отправлять различные СМС сообщения пользователям, позвонившим в контакт-центр Октелл и запросившим т
img
Всем современным кампаниям, производящим товары и оказывающим услуги, необходимо иметь специалистов, работающих с потенциальными
21 ноября
20:00
Бесплатный вебинар
Введение в Docker