Сброс соединений на 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» ].
2.Если в компании нет системного администратора, сотрудники просто перезагружают роутер.
Есть еще один очень удобный способ требующий предварительной настройки. Сброс соединений по звонку с АТС. Этот вариант удобен, если у вас часто зависают NAT сессии или в компании нет специалиста, способного произвести это вручную.
Для реализация данного функционала необходимо произвести несколько шагов:
- Настроить возможность подключения АТС к маршрутизатору MikroTik в автоматическом режиме по ssh с использованием ключей.
- Создать внутренний номер на АТС.
- Прописать диалплан, который при звонке на наш созданный номер выполняет подключение к роутеру и передает ему команды на удаление соединений.
Хочется отметить, что в реализации диалплана необходимо применять аутентификацию по паролю, для того, чтобы ограничить круг лиц, способных производить сброс соединений.
Приступим к реализации первого пункта.
Для автоматического подключения АТС к роутеру нам необходимо:
- Создать публичный и приватный ключ.
- Публичный ключ необходимо загрузить в роутер.
- Приватный ключ остается на сервере АТС и используется при авторизации.
- Настроить файл конфигурации 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 и копируем файл.
Следующим шагом необходимо загруженный публичный ключ присвоить конкретному пользователю на mikrotik.
Заходим Systems-> users переходим на вкладку SSH Keys и нажимаем кнопку Import SSH Key.
В появившемся окне необходимо выбрать пользователя, которому присваиваете ключ, а также указать сам файл с публичным ключом.
Проверим работоспособность созданных ключей с помощью команды:
# ssh –i ~/.ssh/id_rsa admin:[email protected]
Где –i путь к приватному ключу.
Вход по 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
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
Тут система у вас предупредит о том, что подлинность хоста не установлена, хотите вы соединиться? Вводим yes и отпечаток добавляется в вышесказанный файл. После чего при последующих авторизациях система будет вас соединять автоматически.
Теперь приступим к настройке Asterisk.
Для реализации задуманного необходимо написать диалплан со следующей логикой:
- При звонке на определенный номер производим авторизацию с использованием приложения asterisk Authenticate(<пароль>)
- Далее воспроизводим сообщение о том, что авторизация пройдена.
- Подключаемся к роутеру и выполняем команды удаления соединений с помощью приложения System()
- Выводим статус запроса (для отладки)
- Воспроизводим сообщение об окончании выполнения диалплана
Открываем файл 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
Сохраняем диалплан и проверяем работу.
Остались вопросы?
Я - Виталий Шелест, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.
категории
- DECT
- Linux
- Вспомогательный софт при работе с Asterisk
- Интеграция с CRM и другими системами
- Интеграция с другими АТС
- Использование Elastix
- Использование FreePBX
- Книга
- Мониторинг и траблшутинг
- Настройка Asterisk
- Настройка IP-телефонов
- Настройка VoIP-оборудования
- Новости и Статьи
- Подключение операторов связи
- Разработка под Asterisk
- Установка Asterisk
VoIP оборудование
ближайшие курсы
Новые статьи
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 сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.