Найти в Дзене
Merion Academy

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

Оглавление

Однажды в организации, где я работаю, случился 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
Схема работы 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, загрузка файла конфигурации происходит следующим образом:

  • Устанавливается соединение с сервером.
  • Проверяется наличие файла с соответствующим именем:

- в первую очередь проверяется файл с именем соответствующим аппаратной платформе;

- во вторую - соответствующий MAC адресу устройства;

- в третью - соответствующий ID устройства;

- файл с произвольным именем проверяется либо в последнюю очередь (DHCP option, UpnP) либо в первую, если он явно указан в конфигурации телефона.

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

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

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

VOIP CONFIG FILEVersion:2.0002

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

Пример:

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

VOIP CONFIG FILEVersion:2.0004

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

VOIP CONFIG FILEVersion: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 MODULE - настройки доступа и 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 FILEVersion:2.0003

GLOBAL CONFIG MODULE

Host Name :ReceptionPhone

END OF FILE

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

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

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