Траблшутинг с помощью tcpdump, ngrep, sipgrep, sngrep
Определение используемых портов Посмотреть использующиеся порты SIP, IAX можно выполнив поиск по конфигурационным файлам: или выполнив команду Посмотреть используемые порты для sip и протокол(параметр transport), установленные в конфигурационных файлах и вывести окружающий контекст (20 строк) Посмотреть используемые порты rtp (поиск нескольких значений по всем файлам в директории): В примере используемый по умолчанию диапазон rtp портов […]
Определение используемых портов
Посмотреть использующиеся порты SIP, IAX можно выполнив поиск по конфигурационным файлам:
grep "^port=" -iRI /etc/asterisk/* - найдет все используемые порты
или выполнив команду
asterisk -rx "sip show settings" | grep "Bindaddress:" - покажет глобальные настройки(Bindaddress:bindport — прослушиваемый адрес:прослушиваемый порт)
Посмотреть используемые порты для sip и протокол(параметр transport), установленные в конфигурационных файлах и вывести окружающий контекст (20 строк)
grep "^port=|^transport=" -EriRI /etc/asterisk/sip* -C 20
Посмотреть используемые порты rtp (поиск нескольких значений по всем файлам в директории):
grep "^rtpstart|^rtpend" -EriRI /etc/asterisk/*
В примере используемый по умолчанию диапазон rtp портов (10000-20000) переопределен в диапазон (36600-39989).
Если используется FreePBX/Elastix то можно увидеть, что некоторые файлы оканчиваются на «additional». Суффикс «additional» означает, что правила записываются в конфигурационный файл только с помощью веб-интерфейса, по-другому вносить в него изменения не нужно.
tcpdump
Создание полного дампа. Запись по портам 5060 (сигнализация) и 10000-2000(стандартные, голос) в один файл:
tcpdump -i any -vvvv port 5060 or portrange 10000-20000 -s 0 -w dump.pcap
Записывать все в один и тот же дамп можно, но, если звонков слишком много, то необходимо писать в разные файлы, иначе для открытия огромного дампа может не хватить памяти.
Запуск дампов, пишушихся с определенным интервалом по порту 5060:
tcpdump -i any -G 600 -i any -vvvv port 5060 -w 'dump_%d-%m_%Y__%H_%M.pcap'
-i — указывается имя интерфейса (any — все)
-G — время в секундах (например 600 сек — 10 мин)
При запуске с интервалом, определенным параметром -G будут создаваться отдельные дампы.
Просмотр дампа /root/dump_file.pcap (вывод его в консоль) с помощью утилиты tcpdump
tcpdump -qns 0 -A -r /root/dump_26-02_2020__18_45.pcap
По выведенному в консоль трейсу можно выполнить поиск, с выводом также и некоторые соседние строки, окружающие найденную подстроку (-A –(after) количество строк вниз, -B —(before) количество строк вверх, -C или -число – (context) до и после):
tcpdump -qns 0 -A -r log_17-02_2020__18_27.pcap | grep "115" -A 20 -B 20
Вывод дампа сразу на просмотр в консоль
Исходящий трафик
tcpdump -i any portrange 5060-5061 and outbound -vv -s 0
Входящий трафик
tcpdump -i any portrange 5060-5061 and inbound -vv -s 0
Статья об отладке неисправностей соединения телефонных аппаратов с Asterisk с помощью утилиты tcpdump (подробно).
sngrep
Утилита для чтения, просмотра, сохранения sip/rtp трафика.
Поддерживает udp,tcp, tls.
Просмотр с помощью sngrep всех всего sip трафика
sngrep
Просмотр с помощью sngrep только сообщений invite
sngrep -c
Подробнее в статьях об утилите sngrep на сайте:
Статья об установке/настройке sngrep
Полный обзор sngrep
ngrep
Ngrep – утилита, позволяющая записывать, выводить и фильтровать (как из записанного дампа, так и текущий) различный трафик.
Установка:
yum install epel-release
yum install ngrep
Основные опции
-W сохранить форматирование строк
-q “тихий режим”, скрывающий отображение других пакетов
-d определение прослушиваемого сетевого интерфейса
ngrep -q -d any -p -W byline '334'
С помощью ngrep также можно записывать дампы в файл и далее также работать с записанным дампом(с помощью ключа -О).
Записать трафик на интерфейсе eth0 в текущую директорию
ngrep -O ./ngrep.dump -d eth0 -T
Фильтрация трафика из записанного в текущей директории дампа по хосту(192.168.32.2 ) и порту(5060)
ngrep -I ./ngrep.dump -q '.' 'host 192.168.32.2 and port 5060'
sipgrep
Отличается от ngrep более глубокой поддержкой sip протокола. Позволяет прослушивать только sip трафик.
Установка зависимостей:
yum install libpcap-devel pcre-devel m4 automake autoconf libtool
Установка sipgrep:
cd /usr/src
git clone https://github.com/sipcapture/sipgrep.git
cd sipgrep
./build.sh (optional)
./configure
make && make install
Вывод всего sip трафика
sipgrep -d any
Sipgrep вывод трафика на интерфейсе eth0 с(-f) / на(-t) номер и вывод отчета по диалогу (-G)
sipgrep -d eth0 -f 333 -G
sipgrep -d eth0 -t 89192990000 –G
В отчете sipgrep, в поле REASON можно увидеть причину завершения диалога. В зависимости от кода запросы подразделяются на:
1xx: Информационные ответы – запрос получен, запрос обрабатывается;
2xx: Успех выполнения запроса – запрос был получен, понят, принят в обработку;
3xx: Переадресация – для завершения запроса необходимо, выполнить следующие действия;
4xx: Ошибка Клиента – запрос имеет некорректный синтаксис(информацию) или запрос не может быть выполнен на данном сервере;
5xx: Ошибка Сервера – сервер не в состоянии выполнить корректный запрос;
6xx: Глобальная Ошибка – запрос не может быть выполнен на любом сервере.
На скриншоте звонок с 333 на 334 был завершен по причине 487 (Request Terminated) – происходит при отмене вызова.
Смотрите также примеры диагностики и решения проблем в других статьях на сайте.
Asterisk, SIP, отсутствие early media из-за повторного ответа “183 Session Progress” без SDP
Остались вопросы?
Я - Виталий Шелест, менеджер компании 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 сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.