Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

CHAN_SIP_UNREACHABLE IP-Телефония и СКУД

Asterisk chan_sip: Peer is not responding to OPTIONS keepalive (UNREACHABLE)

Обновлено: 24.08.2026 · Официальная документация ↗
  • В консоли Asterisk появляется предупреждение WARNING chan_sip.c: Peer 'peer_name' is not responding to OPTIONS keepalive. Status is now UNREACHABLE!.
  • Входящие и исходящие звонки через данный транк или на телефон абонента перестают проходить.
  • Команда sip show peers показывает статус пира UNREACHABLE с задержкой 0 ms.
  • Проблема периодически исчезает после выполнения команды sip reload или перезагрузки телефона.

1. Принцип работы механизма Qualify (OPTIONS Keepalive)

Параметр qualify=yes в chan_sip заставляет Asterisk регулярно отправлять SIP-запросы OPTIONS на удаленный пир для измерения задержки (RTT) и поддержания открытой трансляции портов (UDP NAT pinhole). Если удаленная сторона не отвечает в течение времени qualifymtimeout (по умолчанию 2000 мс), пир переводится в статус UNREACHABLE.

2. Проверка статуса пиров в Asterisk CLI

asterisk -rx "sip show peers"
asterisk -rx "sip show peer <имя_пира>"

Включите трассировку пакетов OPTIONS:

asterisk -rx "sip set debug on"

3. Основные причины сбоя:

  • Сброс сессии в файрволе: роутер закрывает NAT-трансляцию быстрее, чем Asterisk шлет keep-alive (например, таймаут UDP 30 секунд).
  • Блокировка ICMP / SIP со стороны ISP: оператор или локальный роутер блокирует пакеты OPTIONS как потенциальный SIP-скан.
  • Спящий режим Wi-Fi телефонов: беспроводные трубки уходят в энергосбережение и не отвечают на периодические пакеты.

4. Оптимизация параметров в `/etc/asterisk/sip.conf`

[my_peer]
type=friend
host=dynamic
defaultuser=200
secret=StrongPassword123
context=from-internal
; Включение и тюнинг Qualify
qualify=5000 ; Увеличение таймаута ожидания ответа до 5000 мс
qualifyfreq=25 ; Отправка OPTIONS каждые 25 секунд (до закрытия NAT-сессии роутером)
qualifynokfreq=10 ; Частота опроса недоступного пира
; Настройка NAT
nat=force_rport,comedia
keepalive=20

5. Проверка блокировок на уровне iptables / fail2ban

iptables -L -n -v | grep 5060
fail2ban-client status asterisk
💡 Практика специалистов: Всегда отключайте SIP ALG (Application Layer Gateway) на всех клиентских и граничных роутерах. При работе через нестабильные каналы устанавливайте qualifyfreq=20 для гарантированного удержания NAT-сессии открытой.

Частые вопросы (FAQ)

Почему статус пира меняется на UNREACHABLE, хотя телефон включен в сеть?

Телефон может иметь проблемы со стабильностью сетевого подключения, терять пакеты из-за плохого Wi-Fi сигнала, либо промежуточный маршрутизатор сбрасывает состояние UDP таблицы NAT.

Что произойдет, если отключить qualify (qualify=no)?

Asterisk перестанет контролировать доступность пира и будет считать его всегда активным (OK). Однако при динамическом IP за NAT входящие звонки на телефон перестанут поступать при закрытии порта роутером.

Как принудительно опросить статус конкретного пира?

В консоли Asterisk выполните команду sip qualify <имя_пира>.

Влияет ли SIP ALG на статус UNREACHABLE?

Да. Функции SIP ALG на роутерах часто повреждают заголовки пакетов OPTIONS или удаляют их из потока данных, что приводит к ложному статусу UNREACHABLE.

Полезные материалы
Рекомендуем