Возникла необходимость сделать доступ к tm.ip исключительно для авторизованных клинетов.
На tm.ip был установлен sip сервер kamailio. К сожалению, с готовым файлом конфигурации предоставленным комнанией eltex сделать авторизованный доступ не удалось. Да, если клиент не авторизован, то входящие звонки на него не поступают. Но вот сам он мог звонить совершенно беспрепятственно. Мне удалось сконфигурировать kamailio так, чтобы исходящие от клиента звонки так же не проходили без авторизации (см. во вложении /etc/kamailio/kamailio.cfg).
После этого встал вопрос, а как конфигурировать пароли клиентов в kamailio? Конечно, можно было сделать веб-интерфейс на отдельном сервере и через tftp сливать файл subscriber на tm.ip. Но как-то это все неудобно и неоперативно.
Нашлось очень простое решение. В веб интерфейсе tm.ip при конфигурировании клиента имеем поле "Name". По сути это просто комментарий.
Было принято решение, что пароль будет вводиться в это поле сразу после самого имени через символ "|".
Далее был написан скрипт /etc/kamailio/kamailio-reconfig который преобразует файл маршрутов tm.ip /etc/config/gw.route в файл subscriber kamailio после чего производит перезапуск kamailio. Только нужно помнить, что длина поля Name ограничена 31 символом!
Вызов данного скрипта был вставлен в скрипт /voip/reload последней строкой. В результате, все управление пользователями по прежнему производится через веб интерфейс tm.ip.
Порт 6050 на котором после перенастройки "слушает" gate323 (sip сервер tm.ip), доступный без авторизации, после всех изменений был закрыт от локальной сети с помощью iptables.
Ну и в конце конечно не забываем выполнить команду save.
Все файлы в аттаче. Там в том числе есть и файл /etc/config/gw.route с примером поля "Name" (последнее поле). В данном случае мы применили такой формат имени:
Код: Выделить всё
<собственно имя клиента>|<последний октет ip-адреса клиента>|<пароль>
ip адрес сохраняем на случай если с kamailio что-то пойдет не так (например начнет падать) для отката к работе без kamailio.
В случае, если переход на авторизацию через kamailio связан с переконфигурированием большого числа клиентов (как в нашем случае) рекомендую алгоритм:
1. Первоначально настраиваем все так, чтобы gate323 "слушал" на порту 5060, а kamailio на порту 6050.
2. Проверяем работу на тестовом клиенте прописав его в gw.route следующим образом:
Код: Выделить всё
<номер телефона> <адрес tm.ip>:6050 0 sip <имя>|<пароль>
и делаем /voip/reload
3. В файле gw.route "генерим" пароли для всех клиентов дописывая их через "|" в поле Name. Делать это через веб интерфейс неудобно, слишком много действий с кажным клиентом. Лучше все сделать либо в текстовом редакторе либо написать скрипт который сгенерит пароли и добавит их на место.
4. Перезапускаем gate323 и kamailio:
Код: Выделить всё
/voip/reload
5. Распечатываем файл gw.route в нескольких экземплярах и делим между операторами, которые перенастраивают все клиентские терминалы включая авторизацию и прописывая пароли.
Поскольку на порту 5060 по прежнему "слушает" gate323, которому все равно регистрируется клиент или нет, то все проходит совершенно прозрачно.
6. Когда все клиенты переконфигурированы, меняем порт для gate323 на 6050, а для kamailio на 5060.
7. С помошью заранее подготовленного скрипта в файл gw.route меняем поле target с ip-адреса клиента, на ip-адрес самого tm.ip. Для надежности можно переписать адрес клиента из Target в Name как я писал выше.
8. Перезапускаемся /voip/reload и проверяем работу. После этого можно сохраниться командой save.
Примечание. Не забываем сохранить изначальную конфигурацию до установки kamailio для быстрого отката назад в случае возникновения проблем!
Инструкция по работе с tm.ip и установке kamailio:
http://eltex.nsk.ru/upload/iblock/d14/mc240v3_part6.pdf