Столкнулся с необычной проблемой:
OS: Ubuntu server 18.04.5
Asterisk 16.16.0
PJPROJECT version currently running against: 2.10
tcpdump version 4.9.3
libpcap version 1.8.1
Машина: виртуалка в датацентре, по другому юридически проблематично, кастомный проект.
Система настроена и работает года два уже как, 19го октября в 9 утра, не самый пик нагруженности системы, получили жалобы, что не проходят звонки. В результате работы с техподдержкой провайдера и датацентра удалось выяснить, что:
1) Из активных подключений только 4 транка к провайдеру, без авторизации по ip, на момент проявления проблемы оставались активными и не сигнализировали о проблеме.
2) Провайдер прислал инвайт(не один, +были повторные отправки), по полям, айпишникам и портам, такой же как и обычно, явного несоответствия к нашим настройкам нет, но ответ от нас не получили.
3) tcpdump запущенный на этой же машине и ротационно складывающий в файлы, записал этот инвайт и другие инвайты/ответы от провайдера тоже есть в дампах.
4) А вот логи Asterisk-а не видят этих инвайтов, ответов сигнализации, ни каких событий или ошибок, при этом сам Asterisk активно генерит инвайты в сторону провайдера, с порта 5060 на порт 5060, но ответы которые ему приходят опять же не видит.
5) Айпишники на интерфейсах были прописаны, медиатрафик(отдельный интерфейс) продолжал ходить, единственное что завершиться получается нормально не мог, т.к. Asterisk не видел сигнализацию.
6) Транки к провайдеру оставались активными
7) в journalctl за пару секунд до проявления проблемы, было переключение tcpdump на следующий файл.
8) прибегнули к перезагрузке, т.к. клиенты начали подавать тревожные сигналы, перезагрузка помогла.
Вопросы:
Почему Asterisk мог перестать читать то что приходит на порт?
Что могло дать сбой и как это можно отловить/выяснить?:
Asterisk (перстал слушать порт, хотя сам с него вещал)
Tcpdump (переслал транслировать пакеты одного интерфейса и стал складировать только в файл)
pjsip
libpicap
ядро OS
iptables