ServerAdmin.ru
28.9K subscribers
304 photos
35 videos
13 files
2.63K links
Авторская информация о системном администрировании.

Информация о рекламе: @srv_admin_reklama_bot
Автор: @zeroxzed

Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Download Telegram
​​Мониторинг и траблшутинг VOIP

Ниже мой краткий конспект интересного выступления с AsterConf 2021 на тему мониторинга и разбора проблем с VOIP. Я так или иначе стараюсь просматривать выступления со всех популярных конференций. Если что-то кажется интересным и полезным, то конспектирую для вас и себя в том числе.

📌 Мониторинг:
- Базовые метрики серверов (процессор, память, диск, сеть и т.д.). Мониторить просто, толку мало, особенно когда серверов, связанных со связью, несколько.
- Использовать сервисные метрики от SIP3, Homer, VoIPMonitor. Это специализированные open source системы для мониторинга SIP трафика. Минус этого решения - +еще одна система мониторинга.
- Что собираем: RFC-6076. Основное: ASR, SCR, SER, SEER, ISAs.
- Следим за временными метриками (пример из SIP3): sip_call_duration, sip_call_trying-delay, sip_call_setup-time, sip_call_establish-time, sip_call_cancel-time, sip_call_disconnect-time.
- Следим за RTP метриками: Rating Factor, Mean Opinion Score (latency, jitter, packet loss).

📌 Разбор проблем:
- Качественный разбор проблем возможен только если есть хороший мониторинг.
- Чем подробнее данные о трафике, который собирается, тем проще дебажить проблемы. В довесок к хранению должен быть хороший поиск по сохранённым данным. Соответственно, нужны системы для сбора, хранения и анализа трафика. Автор предлагает SIP3, но как я понял, это уже платный функционал.

Видео - https://www.youtube.com/watch?v=1I7Mxc_7rAw
Презентация - https://voxlink.ru/wp-content/uploads/2022/04/03_agafonov.pdf

#asterisk #мониторинг #voip
​​Для мониторинга voip трафика по протоколу sip есть отличное бесплатное open source решение - VoIPmonitor. С его помощью можно контролировать и оценивать качество голосовой связи. Сразу уточню, что бесплатен только сам бэкенд, который собирает данные, кладёт в базу, анализирует. Веб интерфейс для удобной работы с данными платный. Бесплатно - только cli.

VoIPmonitor перехватывает вызовы в реальном времени и сохраняет статистику и дампы файлов в БД для последующего анализа. На него можно отзеркалить весь трафик порта. Если это технически невозможно, то можно передавать трафик через агента, установленного на voip сервере. VoIPmonitor использует снифер, обнаруживает SIP INVITE пакет и перехватывает RTP в обоих направлениях. При завершении вызова статистика считывается, с её помощью рассчитывается приблизительное значение MOS по методике описанной в спецификации G.107.

VoIPmonitor решает следующие задачи:
- мониторинг и дебаг SIP VoIP звонков;
- сохранение всех звонков в CDR базе;
- расшифровка и проигрывание звонков через веб интерфейс;
- настройка правил для выявления фрода;
- мониторинг колл-центров;
- биллинг.

Особенности программы:
- поддерживает протоколы:  SIP RTP RTCP SKINNY(SCCP) MGCP SS7 SCTP WebRTC TCP SSL TLS, транспорт по UDP и TCP;
- выходные данные: CDR, full SIP/RTP pcap, WAV OGG audio, T.38 PDF FAX
- поддерживает уведомления;
- ролевая модель доступа к данным;
- поддерживает расшифровку tls и srtp;

Из описания очевидно, что решение профессиональное и владельцам единственного сервера asterisk для офиса вряд ли пригодится. Хотя кто знает. Настроить его не сложно, как и установить. Продукт старый и известный. Руководств по настройке много, так что проблем быть не должно. Вот пример инструкции для Debian 11.

К сожалению, я не нашёл через поиск в гугле хоть какой-нибудь простой веб интерфейс для VoIPmonitor. Если кто-то знает таковой, прошу поделиться информацией. Можно установить официальную панель в режиме trial на 30 дней.

Сайт - https://www.voipmonitor.org/
Исходники - https://github.com/voipmonitor/sniffer
Demo - http://www.voipmonitor.org/demo/admin.php

#asterisk #voip
​​Недавно рассказывал про бесплатное решение для мониторинга voip трафика - VoIPmonitor. Существенный минус этого проекта - платная веб панель для просмотра и управления. А без неё в реальной эксплуатации очень неудобно. Существует аналог - SIP3. Это тоже бесплатный Open Source проект. Функционально во многом похож на VoIPmonitor, но у него в бесплатной редакции (Community Edition) есть веб панель с базовым функционалом.

SIP3 состоит из нескольких компонентов:
Captain - агент для сбора трафика
Salto - Ядро системы
Twig - API engine
Hoof - веб интерфейс
На отдельной странице перечислен функционал бесплатной и платной версии. Условно можно считать, что бесплатная версия полнофункциональна, доступны все компоненты. А за деньги вы получаете расширенный функционал каждого из них.

В комплекте SIP3 присутствуют как инструменты мониторинга на базе Grafana, так и список звонков, их запись, инструменты поиска проблем.

Для установки SIP3 есть Ansible Playbook. Он поддерживает установку на Centos и Debian, либо через Docker на любой другой Linux дистрибутив.

Как я понял, разработчики системы русскоязычные. От них есть подробное руководство по установке и настройке.

Сайт - https://sip3.io
Демо - https://demo.sip3.io/
Исходники - https://github.com/sip3io
Русскоязычный чат - https://t.me/sip3io

#asterisk #voip
​​☎️ Совсем недавно узнал про простое и изящное решение для организации телефонии малого и среднего бизнеса - MikoPBX. Это бесплатный Open Source продукт на базе Asterisk. Я посмотрел на его интерфейс, возможности и сразу проявился симпатией. Захотелось попробовать. Если будет задача, обязательно поставлю именно его.

Основные возможности:
хорошая русификация
управление через web интерфейс
встроенный список сотрудников
поддержка конференций, переадресаций, очередей, уведомлений на email
запись разговоров, история вызовов
встроенный Firewall (Iptables) и Fail2Ban
встроенные бэкап и восстановление

Есть платный модуль для интеграции с 1С, который умеет звонить из 1С, открывать карточку клиента во время звонка, вести статистику, интегрироваться с Whatsapp и кое-что другое.

Видео: MikoPBX - базовая настройка и обзор функционала
Если кто-то пользовался, дайте обратную связь. Панель управления в демке очень понравилась. Лучшее, что я видел из готовых решений для управления Asterisk.

Сайт - https://www.mikopbx.ru/
Демо - http://demo.askozia.ru/
Исходники - https://github.com/mikopbx

#asterisk #voip
Небольшая информация из практической деятельности. Мне давно знакома проблема, когда не устанавливается SIP соединение для регистрации пира или транка с регистрацией. Возникает она в моём случае либо после проблем с интернетом или переключения каналов, либо при работе через VPN вместе с указанными выше проблемами. В общем, когда возникают какие-то неполадки со связью, есть небольшая вероятность, что внешне транки и пиры отвалятся.

При этом какие-либо действия со стороны Asterisk не помогают. Есть можно перезапускать, перезагружать сервер, но регистрации как не работали, так и не будут работать. Когда я первый раз столкнулся с подобной ситуацией, очень сильно напрягся. Потратил примерно день, прежде чем нашёл решение. С тех пор его запомнил и проверяю в первую очередь.

Если у вас по неведомым причинам не регистрируются транки и пиры, проверьте активные соединения на шлюзе, связанные с SIP и удалите их. Отфильтруйте либо по адресу voip сервера, либо по адресу внешнего сервера, либо просто по портам, к примеру, 5060, если используется стандартный.

В роутерах Mikrotik это делается на вкладке:
IP ⇨ Firewall ⇨ Connections

Если у вас шлюз на Linux, то соединения можно посмотреть в /proc/net/nf_conntrack:
# cat /proc/net/nf_conntrack
Либо с помощью утилиты conntrack (ставится из реп, либо как conntrack, либо как conntrack-tools). Смотрим:
# conntrack -L -p udp --src 10.1.4.23 --dport 5060
и удаляем:
# conntrack -D -p udp --src 10.1.4.23 --dport 5060
После этого регистрации успешно состоятся.

В чём причина подобных проблем, я не знаю. Теорию не изучал и не исследовал. Просто знаю, что вот это помогает. Возможно есть другое решение. Лично сталкивался с подобными проблемами только с VOIP.

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

#gateway #voip #asterisk
​​На днях разбирался с небольшой проблемой на voip сервере asterisk. Есть сервер, который настраивали очень давно. Его никто не трогает, он просто работает. Недавно купили новую серию телефонов. На них почему-то не проходили входящие звонки.

Ранее я уже рассказывал про утилиту sngrep, которая позволяет в удобном виде посмотреть всю информацию по sip трафику. Там в удобном виде собрано всё то, что вы можете увидеть, включив debug на asterisk, только в sngrep всё будет очень наглядно.

Я уже не особо разбираюсь в voip, так как давно ничего не настраивал. Решил не заниматься этим направлением. Но по старой памяти немного приглядываю за старыми серверами. Это сервер был с наследством в виде нескольких IP адресов. На новых аппаратах запрос шёл к одному из ip, который был указан в настройках, а ответ приходил от другого адреса. И телефон его не принимал.

Я не знаю, почему так происходило, и почему проблема появилась только сейчас и только на конкретных аппаратах. Но именно sngrep позволил буквально за 5 минут понять, в чем именно проблема. Просто поменяли ip адрес в телефоне на тот, с которого приходил ответ и всё заработало.

Написал это для тех, у кого есть в управлении сервера asterisk, чтобы лишний раз напомнить про sngrep. Она меня всегда выручала и выручает, когда надо быстро разобраться с какой-то проблемой с телефонией.

Сейчас, наверное, свой сервер asterisk, как и почтовый, это скорее экзотика. Все постепенно переползают на готовые сервисы. В чём-то это оправданно, так как с тем же voip разбираться довольно трудно, если нет специализации по этой теме.

ps. На картинке не дебаг проблемного звонка. На нём просто наглядно видно, что общение идёт с двумя ip адресами сервера. Во время звонка телефон не отвечал на invite от сервера.

#asterisk #voip
​​Те, кто сталкивался с настройкой VoIP телефонии, наверняка знают, что такое протокол и сервер STUN. Там постоянно приходится с ним взаимодействовать. Не припомню, где он использовался ещё. Но последнее время в связи с развитием протокола WebRTC, а также программных средств для видеоконференций на его основе, тема снова стала актуальной, даже ещё больше, чем с VoIP. Кратенько своими словами расскажу, что такое STUN и TURN.

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

Дополнением протокола STUN стал TURN. Он включает в себя возможности STUN, но и добавляет новые. В зависимости от настроек NAT на конкретном шлюзе, не всегда можно пробиться к клиенту извне. Данные, которые передаст STUN сервер клиенту, будут актуальны только для подключения этого STUN сервера, но не других клиентов. Шлюз просто отбросит от них соединения. Отдельная проблема, когда оба клиента за таким NAT.

TURN сервер с помощью дополнительного суб-протокола ICE способен оценить варианты взаимодействия двух клиентов, которые к нему обратились. Он проверяет их возможность соединиться напрямую и с помощью STUN сервера. Если оба варианта не сработают, то он выступит в роли ретранслятора и организует соединение клиентов через себя. При этом сами клиенты будут думать, что они соединены напрямую.

Наиболее известной бесплатной реализацией TURN сервера является Coturn, который можно развернуть у себя. При этом в сети довольно много и бесплатный серверов, которые реализуют возможности этих протоколов. Например, известный STUN сервер от гугла - stun.l.google.com. Можно использовать для каких-то своих задач. TURN полностью бесплатный вряд ли можно найти. За это уже деньги надо платить, но есть сервисы с ограниченными бесплатными тарифными планами.

Проверить работу STUN и TURN серверов можно с помощью публичного сервиса:
https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

Указываете адрес сервера в формате stun:stun.l.google.com:19302 и запускаете проверку. Наглядно видно, что возвращает STUN сервер - внешний IP адрес и порт.

▶️ Вот тут на индусском английском рассказано с картинками то, что я описал.

#voip #webrtc