Система автоконфигурации для VoIP устройств на коленке

Когда у тебя в хозяйстве больше двух компьютеров очень часто приходит желание иметь возможность конфигурировать их из одного места. В среде Windows эта задача решается с помощью Active Directory, в Linux – с помощью cfengine, puppet и других систем конфигурации. У меня же было много VoIP устройств в которых постоянно приходилось что-то менять: то номер, то план дозвона, то надпись на экране и т.д.
Для этой цели также существуют системы автоконфигурации, но, по разным причинам, они мне не подходили. Да и хотелось изобрести свой велосипед что-то написать своими руками.

Дальше можно почитать что же из этого получилось…

Итак что мы имеем:

  • на входе, Asterisk PBX (или другую IP АТС) и кучу VoIP устройств.
  • на выходе я хочу получить возможность конфигурировать все свои VoIP устройства централизованно.

Мне повезло что мы придерживались одной линии и почти все устройства у нас были от одного производителя, а те несколько экземпляров которые были другими давно готовились в утиль. Все устройства были от Linksys: PAP2T, SPA3102, SPA901, SPA921, SPA941, SPA942. Позднее добавились и более новые Cisco SPA502 (после того как Cisco купила Linksys)
Все эти устройства имеют возможность автоматической конфигурации. Главное знать как правильно сформировать и подсунуть конфигурационный файл.

Для каждого из наших устройств есть утилита от производителя, которая генерирует конфигурационный файл, также его можно просто вытащить из устройства (вот по такому линку http://device_ip/admin/spacfg.xml – но это работает не на всех устройствах ) или найти где-то на бескрайних просторах интернета.
Конфигурационный файл – это просто xml файл с описаниями опций. В устройство конфигурационный файл можно залить tftp или http по протоколах. Во всех наших устройствах основные настройки описывались почти одинаково, что позволило просто выделить основную часть настроек которая была общей для всех устройств и дополнительные опции, которые отличались для каждого устройства. В итоге сформировалась такая схема работы системы автоконфигурации:

image

Один скрипт (generator.sh) собирает конфигурационный файл из информации об устройстве описанной в файле devices.list и кусков конфигурации из каталога templates {modelName, common/start, common/network, common/end}.
Другой скрипт (pusher.sh) – копирует уже сформированные файлы конфигурации устройств в каталог доступный через http:

http://server_ip/configs

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

curl --digest -u USERNAME:PASSWORD  http://device_IP/admin/resync? http://server_ip/configs/CONFIGFILE.xml

Вот основные способы использования:

Добавление устройства:
1. Добавляем в DNS запись об устройстве
2. Подключаем устройство к сети – прописываем на нем его IP адресс (мы не используем DHCP для VoIP устройств ) и пароль администратора
3. Добавляем в файл devices.list строку которая описывает конфигурацию устройства, строка должна быть вот такого формата:
DEVICE_MODEL|NETWORK_NAME|LINE1_DESCR|LINE1_NUMBER|LINE1_PASS|LINE2_DESCR|LINE2_NUMBER|LINE2_PASS|STATION_NAME|USER_PASSWORD
Ненужные поля просто делаем пустыми, но позиционность параметров сохраняем.
4. Запускаем generator.sh
5. Запускаем pusher.sh single NETWORK_NAME_IN_DNS и смотрим лог в терминале

Изменение номера на устройстве:
1. Изменяем в файле devices.list строку которая описывает конфигурацию устройства.
2. Запускаем generator.sh
3. Запускаем pusher.sh single NETWORK_NAME_IN_DNS

Изменение dial плана на всех VoIP устройствах:
1. Правим generator.sh – в нём есть переменная которая отвечает за dial план.
2. Запускаем generator.sh
3. Запускаем pusher.sh all и смотрим лог в терминале или на вашем syslog сервере (он же у Вас есть, правда ? ). Например, вот так: tail -f /var/log/messages | egrep -i "(pap2t|spa-)"

Данная система автоконфигурации абсолютно не требовательна к ресурсам и может быть установлена на любой linux дистрибутив.
Для её работы нужен bash, такие утилиты как sed, cut и вебсервер для отдачи файлов на устройства.

Для того чтобы немного обезопасить систему конфигурации (ведь файлы конфигурации содержат пароль доступа на устройства и передаются по сети в открытом виде) рекомендуется выносить все VoIP устройства в отдельный vlan.

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

Удачи.

Листинги скриптов и файлов конфигурации в одном архиве можно скачать отсюда.

This entry was posted in autoprovision, VoIP and tagged , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *