Александр Мутовин
24.12.2018
6795

Сброс соединений на Mikrotik по звонку

Иногда при использовании АТС asterisk с сетевым оборудованием MikroTik подвисают NAT сессии. Это приводит к проблемам связанным с регистрацией SIP транков от операторов  телефонии. Что в свою очередь оставляет компанию без связи.

В такой ситуации зачастую используют 2 варианта решения проблемы:

    1.Необходимо зайти на роутер и в ручном режиме сбросить подвисшие соединения. В winbox это делается следующим образом: ip -> firewall -> connections.В появившемся окне в окне поиска выбираем Dst. Address/Port в поле поиска вводим 5060. Далее выделяем все соединения и удаляем. Аналогично делаем для Src. Address/Port. Для тех, кто привык пользоваться консолью: /ip firewall connection remove [ find dst-address ~ «.*:5060» ]; /ip firewall connection remove [ find src-address ~ «.*:5060» ].

Удаление соединений через winbox 

2.Если в компании нет системного администратора, сотрудники просто перезагружают роутер.

Есть еще один очень удобный способ требующий предварительной настройки. Сброс соединений по звонку с АТС. Этот вариант удобен,  если у вас часто зависают NAT сессии или в компании нет специалиста, способного произвести это вручную.

Для реализация данного функционала необходимо произвести несколько шагов:

  1. Настроить возможность подключения АТС к маршрутизатору MikroTik в автоматическом режиме по ssh с использованием ключей.
  2. Создать внутренний номер на АТС.
  3. Прописать диалплан, который при звонке на наш созданный номер выполняет подключение к роутеру и передает ему команды на удаление соединений.

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

Приступим к реализации первого пункта.

Для автоматического подключения АТС к роутеру нам необходимо:

  1. Создать публичный и приватный ключ.
  2. Публичный ключ необходимо загрузить в роутер.
  3. Приватный ключ остается на сервере АТС и используется при авторизации.
  4. Настроить файл конфигурации ssh для упрощения подключений.

Авторизуемся на Сервере АТС по ssh и создаем ключи выполнив команду:

# ssh-keygen –t rsa –b 2048

-t – алгоритм шифрования

-b – размер ключа

Далее команда у вас запросит путь и имя для сохранения ключей. Можете указать свой, а можно оставить по умолчанию. Я просто нажимаю Enter и перехожу к следующему шагу.

После этого программа попросит вас создать пароль для приватного ключа. Нам он не нужен, поэтому нашиваем 2 раза Enter. Ключи созданы.

Создание публичного и приватного ключей

Загружаем публичный ключ на MikroTik.

Открываем наш публичный ключ командой:

 # vim /root/.ssh/id_rsa.pub

Созданный публичный ключ

Копируем ключ и вставляем в блокнот на рабочей машине (если вы работаете в windows) и сохраняем с произвольным именем.

Далее через winbox заходим на mikrotik, кликаем в левом меню Files и вставляем публичный ключ в File List нажав на соответствующую кнопку.
Добавление файла ключа на роутер

Можно загрузить ключ на роутер проще. Для этого у вас должен быть открыт доступ ftp на роутере.
Открываем  Midnight Commander командой
mc, подключаемся к рутеру по ftp и копируем файл.

Подключение к роутеру по ftp
Авторизация на роутере

Копирование публичного ключа
Следующим шагом необходимо загруженный публичный ключ присвоить конкретному пользователю на mikrotik.

Заходим Systems-> users переходим на вкладку SSH Keys и нажимаем кнопку Import SSH Key.

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

Привязка ключа к пользователю

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

# ssh –i ~/.ssh/id_rsa admin:pass@192.168.32.108

Где –i путь к приватному ключу.
Вход на mikrotik через ssh с использованием ключа.

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

# cp –i /root/.ssh/id_rsa  /var/lib/asterisk/.ssh/
# chown asterisk:asterisk /var/lib/asterisk/.ssh/id_rsa
# chmod 600 /var/lib/asterisk/id_rsa
 

Проверьте на своей АТС от какого пользователя у вас запускается asterisk и разместите ключ и конфигурационный файл в соответствующей директории. Посмотреть корневую директорию пользователя можно в файле /etc/passwd.
Корневая директория пользователя

При частом использовании ssh подключения к роутеру становится не удобным постоянный ввод ключа, имя пользователя и адреса. Эту процедуру можно упростить с помощью файла конфигурации, который необходимо создать  в /var/lib/asterisk/.ssh/config выполнив команду:

# touch /var/lib/asterisk/.ssh/config

Присвоим пользователя и группу:

# chown asterisk:asterisk /var/lib/asterisk/.ssh/config

Чтобы никто не “увел” у вас данные из этого файла, ему необходимо задать права 600:
# chmod 600 var/lib/asterisk/.ssh/config

Теперь внесем необходимые данные для подключения в файл config

Содержимое файла конфигурации config

Host mikrotik                               — имя нашего подключения (произвольное)
HostName 192.168.32.108       — адрес нашего микротика
Port 22                                          — порт подключения
User admin                                  — Логин
IdentityFile ~/.ssh/id_rsa          — путь к приватному ключу

Для того чтобы АТС могла подключиться к роутеру по ssh необходимо в ручном режиме сделать первое подключение от пользователя asterisk. Это добавит отпечаток ключа в файл ~/.ssh/known_host . Для этого заходим под нужным пользователем:

# su –l asterisk –s /bin/bash

 

Параметр –s /bin/bash в нашем случае обязательный т.к. пользователь asterisk по умолчанию имеет другую оболочку /sbin/nologin. При попытке авторизации с этой оболочной пользователь получит вежливое сообщение о том, что эта учетная запись в настоящее время недоступна. Узнать какую оболочку имеет ваш пользователь можно в файле /etc/passwd

 Произведем первое подключение к роутеру:

# ssh mikrotik

Первое подключение пользователя asterisk к микротику по ssh

Тут система у вас предупредит о том, что подлинность хоста не установлена, хотите вы соединиться? Вводим yes и отпечаток добавляется в вышесказанный файл. После чего при последующих авторизациях система будет вас соединять автоматически.

Консоль микротика при удачной авторизации

Теперь приступим к настройке Asterisk.

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

  1. При звонке на определенный номер производим авторизацию с использованием приложения asterisk Authenticate(<пароль>)
  2. Далее воспроизводим сообщение о том, что авторизация пройдена.
  3. Подключаемся к роутеру и выполняем команды удаления соединений с помощью приложения System()
  4. Выводим статус запроса (для отладки)
  5. Воспроизводим сообщение об окончании выполнения диалплана

Открываем файл extensions_custom.conf:

# vim /etc/asterisk/extensions_custom.conf

Создаем контекст:

[from-internal-custom]
exten => 100,1,Authenticate(0000) – авторизация по паролю
same => n,PlayBack(pin-number-accepted) — воспроизводим сообщение об удачной авторизации
same => n,System(ssh mikrotik ip firewall connection remove [ find dst-address ~ «.*:5060» ])
same =>n,NoOp(${SYSTEMSTATUS}) – для отладки
same => n,System(ssh mikrotik ip firewall connection remove [ find src-address ~ «.*:5060» ])
same =>n,NoOp(${SYSTEMSTATUS}) – для отладки
same => n,Playback(finish) – сообщение об окончании выполнения диалплана
Same => n,Macro(hangupcall,) – разъединение

Диалплан

Если вы используете не Freepbx, а обычный чистый астериск, то пишите диалплан в файле extensions.conf

Сохраняем диалплан и проверяем работу.

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Остались вопросы?

Я - Виталий Шелест, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование

ближайшие курсы

ближайшие Вебинары

ONLINE

10 доводов в пользу Asterisk

Распространяется бесплатно.

Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.

Безопасен в использовании.

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

Надежен в эксплуатации.

Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.

Гибкий в настройке.

Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.

Имеет огромный функционал.

Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.

Интегрируется с любыми системами.

То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.

Позволяет телефонизировать офис за считанные часы.

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

Отличная масштабируемость.

Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.

Повышает управляемость бизнеса.

Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.

Снижает расходы на связь.

Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.