Частые проблемы и как их решить

Страница общая: для эксперта, который проверяет платформу в готовой организации на нашем стенде (проверка платформы), и для администратора, который поставил платформу у себя (от установки до первого звонка). Где путь решения у них разный, это сказано явно. Как устроена платформа в целом — общие сведения.

Что видите Скорее всего Раздел
телефон перестал регистрироваться, хотя пароль верный; «нет ответа сервера» блокировка вашего адреса Блокировка адреса
оба телефона отвалились одновременно блокировка адреса — она одна на всю вашу сеть Блокировка адреса
панель не открывается из вашей сети, а с мобильного интернета открывается блокировка на сетевом уровне Блокировка адреса
вход в панель отклонён организация или пароль Вход в панель
после входа в меню только «Пульс» и «Активные звонки» название организации кириллицей (версии до 0.66.0 включительно) Урезанное меню
линия Offline, телефон получает отказ домен линии, логин или пароль Телефон не регистрируется
звонок соединился, но нет звука голосовой трафик не проходит Нет звука

Блокировка адреса

Почему это случается

Платформа принимает телефоны из интернета, поэтому защищается от подбора паролей и от флуда. Защита смотрит на внешний адрес, с которого приходят запросы, и при срабатывании перестаёт этому адресу отвечать. Сканеры SIP-паролей работают в интернете постоянно, и защита ловит в основном их. Но под неё легко попасть и самому, настраивая телефон.

Уровень Что включает блокировку На сколько Что перестаёт работать
SIP (всегда включён) 5 неудачных проверок пароля за 10 минут с одного адреса; либо флуд — больше 60 SIP-запросов за 2 секунды 5 минут, снимается сама; повторные попытки в это время срок не продлевают телефоны: регистрация и звонки. Панель в браузере работает
сетевой (только если установлен компонент защиты хоста fail2ban) три блокировки уровня SIP за 30 минут подряд; либо флуд 1 час всё с этого адреса, включая панель в браузере

Что считается «неудачной проверкой пароля» — любое расхождение в тройке «логин, домен, пароль»:

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

⚠ Блокируется адрес, а не телефон. Оба телефона в одной сети (одном Wi-Fi, за одним роутером) выходят в интернет с одного внешнего адреса. Ошибся один — отключаются оба.

Неверный пароль при входе в панель блокировку не вызывает: панель отвечает отказом и продолжает принимать попытки.

Признаки

Признак О чём говорит
телефон пишет «регистрация…», «таймаут», 408, «нет ответа», а не «неверный пароль» / 401 / 403 заблокированному адресу сервер не отвечает вовсе. Отказ с кодом означает, что блокировки нет, дело в данных линии
отвалились сразу все телефоны одной сети блокировка на адрес сети
в панели, «Телефония → SIP-пользователи», у линии серая метка Offline телефон не зарегистрирован. Причину эта метка не называет, смотрите следующие шаги
с телефона в другой сети (мобильный интернет вместо Wi-Fi) всё работает почти наверняка блокировка: у другой сети другой внешний адрес
панель не открывается из вашей сети, а через мобильный интернет открывается сетевой уровень, на 1 час

Как узнать точно

Сначала узнайте внешний адрес вашей сети. Откройте с того же устройства или из той же сети, где телефон, любой сервис вида «мой IP» (например, https://ifconfig.me). Искать нужно именно этот адрес, а не адрес компьютера в локальной сети (192.168…, 10…).

Эксперт на нашем стенде. Доступа к серверу у вас нет, и он не нужен: подождите 5 минут и повторите с исправленными данными (см. Как снять). Если телефоны не регистрируются и через 10 минут, напишите нам и приложите ваш внешний адрес: проверим и снимем блокировку за минуту.

Администратор своей установки — два способа:

  1. Панель — администратор установки (тенант system): «Телефония → Безопасность», вкладка «Заблокированные IP». В строке — адрес и колонка «Jail», причина:

    Значение «Jail» Причина
    auth-bruteforce подбор пароля (5 неудачных проверок)
    rate-limiter флуд запросами либо блокировка вручную
    auth-bruteforce+rate-limiter адрес попал под обе

    Кнопка «Обновить» перечитывает список. Колонка «Время бана» показывает момент запроса, а не начало блокировки: точного времени платформа не хранит. Вкладка показывает только уровень SIP, сетевого уровня (fail2ban) в ней нет.

  2. Консоль сервера — оба уровня сразу, из каталога установки:

    ./omniflow-ctl ban list
    

    Команда печатает заблокированные адреса и уровень каждой блокировки (перебор пароля, SIP-бан (флуд или вручную), сеть (fail2ban)). Ваш адрес она отмечает ← это вы, но «ваш» для неё — адрес, с которого вы подключены по ssh. Если телефоны в другой сети, ищите их внешний адрес в списке сами. doctor поднимает тревогу, если в списке оказался ваш адрес.

Непустой список на публичном сервере — норма: это сканеры, защита работает по назначению. Проблема — только ваш собственный адрес в нём.

Как снять

Прежде чем снимать, исправьте причину — домен, логин, пароль в телефоне. Иначе телефон с прежними данными наберёт пять неудач за минуту и снова окажется под блокировкой. На время правки отключите в софтфоне учётную запись, чтобы он не повторял попытки сам.

Способ Кто может Что снимает
подождать любой уровень SIP — через 5 минут, сетевой — через час
панель: «Телефония → Безопасность» → «Заблокированные IP» → «Разблокировать» в строке адреса администратор установки уровень SIP вместе со счётчиком неудач. Сетевой уровень не снимает
./omniflow-ctl ban remove <адрес> администратор сервера оба уровня и счётчик неудач
./omniflow-ctl ban remove --me администратор сервера то же для адреса, с которого вы подключены по ssh
./omniflow-ctl ban remove --all администратор сервера всё. Спросит подтверждение. Сканеры вернутся в список сами при следующей попытке

Счётчик неудач сбрасывается вместе с блокировкой. Без этого первая же опечатка после снятия снова заблокировала бы адрес.

После снятия: в софтфоне включите учётную запись обратно, через несколько секунд в панели у линии должна появиться зелёная метка регистрации. Проверка — ./omniflow-ctl ban list или кнопка «Обновить» на вкладке «Заблокированные IP»: адреса там больше нет.

Проверить саму защиту у себя можно на заведомо чужом адресе: ./omniflow-ctl ban add 203.0.113.99, затем ban list и ban remove 203.0.113.99.


Вход в панель

Отказ входа одинаковый для всех случаев — нет организации, нет пользователя, неверный пароль. Так сделано намеренно: по ответу нельзя подобрать существующие учётные записи. Проверьте по порядку:

  1. Организация. Под полем пароля либо стоит строка «Тенант: …» с замком (организация определена адресом панели), либо поле «Tenant», заполненное словом system. system — служебная организация для администратора всей установки. Пользователю организации нужно стереть system и вписать код своей организации (expert на нашем стенде).
  2. Логин — то, что вводят при входе (expert), а не имя, показанное в панели.
  3. Пароль — без пробелов по краям. Пароль, скопированный из письма, часто захватывает перевод строки.

Администратор своей установки: забытый пароль администратора сбрасывает ./omniflow-ctl reset-admin-password. Правка .env пароль не меняет: после первого запуска он хранится в базе.


После входа урезанное меню

Признак: вход прошёл, но в меню только «Пульс» и «Активные звонки» — нет «Истории звонков», раздела «Телефония», «Настроек», хотя пользователь — администратор организации.

Причина — ошибка панели в версиях до 0.66.0 включительно: если название организации написано кириллицей (например, «Эксперт»), панель не может прочитать роли пользователя и показывает меню без них. Сервер при этом роли выдаёт верно, и права пользователя не урезаны: не показаны только пункты меню. На код организации (expert, латиница) ошибка не влияет, только на название.

Что сделать: администратор установки переименовывает организацию латиницей («Организации» → карандаш → «Название»), пользователь выходит из панели и входит заново. В следующей версии ошибка исправлена, и название можно вернуть.


Телефон не регистрируется

Что видно Что проверить
отказ «неверный пароль» / 401 / 403 домен линии в поле «Domain» / «Realm» (не адрес сервера), логин, пароль — символ в символ. Пароль линии виден в панели: «Телефония → SIP-пользователи», карандаш в строке линии
«нет ответа» / таймаут сначала блокировка адреса; затем — пропускает ли ваша сеть SIP на порт 5060 (UDP или TCP): в корпоративных сетях его закрывают
в колонке «Регистрация» прочерк «—» настройка линии ещё не применена ни на одном контуре платформы. Это не про телефон. Эксперту — написать нам; администратору — ./omniflow-ctl doctor

Параметры подключения (адрес и порт сервера) не выписывайте из инструкций руками: они показаны в панели в разделе «Телефония → Подключение и система», строка «Телефоны и софтфоны».


Звонок соединился, но нет звука

Сигнализация звонка и голос идут разными путями: «Отвечен» в истории звонков означает только, что прошла сигнализация. Верный признак — колонка «Разговор» в истории звонков: при нулевом значении голоса не было.


Сервер тормозит, сервисы отваливаются по таймаутам

Только для администратора своей установки. Признаки: своп заполнен, команды на сервере отвечают с задержкой, сервисы платформы перезапускаются, звонки не доходят до сценариев — а docker stats показывает скромные цифры и убитых по памяти контейнеров нет.

Причина почти всегда одна: память заняли служебные процессы Docker (docker-proxy), которые он запускает на каждый порт голосового диапазона. В docker stats они не попадают. Проверка — pgrep -c docker-proxy: сотни и тысячи процессов означают, что дело в них. То же измеряет ./omniflow-ctl doctor, шаг «прокси портов docker». Как выключить — раздел «Прокси портов Docker» файла INSTALL.md в каталоге установки.


Если не помогло