SIP-телефон теряет регистрацию на АТС: настройка Keep-Alive, NAT и STUN
- IP-телефон работает 2–5 минут после включения, после чего входящие звонки перестают доходить («Абонент временно недоступен»).
- Статус аккаунта на экране телефона меняется с
RegisteredнаRegistration FailedилиNo Service. - Исходящий звонок с аппарата проходит мгновенно, и сразу после этого телефон снова начинает принимать входящие на короткое время.
- Проблема массово проявляется у удаленных сотрудников, работающих из дома или через роутеры с NAT.
Почему телефон теряет регистрацию простыми словами?
Когда телефон находится за домашним или офисным роутером (NAT), роутер открывает временный порт для связи с офисной АТС Asterisk. Но если телефон молчит и не шлет данные 30–60 секунд, роутер закрывает эту «дырочку» в целях безопасности. АТС пытается отправить входящий звонок, но натыкается на закрытый роутер. Как только вы поднимаете трубку и звоните сами — роутер снова открывает порт, и регистрация временно оживает.
Шаг 1. Настройка Keep-Alive (Поддержание соединения) в веб-интерфейсе телефона
- Зайдите в веб-интерфейс вашего SIP-телефона (Yealink, Grandstream, Fanvil, Cisco) через браузер.
- Перейдите в раздел Account (Учетная запись) -> Advanced (Дополнительно).
- Найдите параметр Keep-alive Interval (Интервал поддержания связи): установите значение 15–20 секунд (вместо стандартных 60 или 120).
- Параметр Keep-alive Type: установите в режим SIP OPTIONS (или Default / UDP Packet).
- Параметр Register Expiration (Таймаут регистрации): уменьшите с 3600 до 120–300 секунд.
- Нажмите Confirm (Сохранить и применить). Теперь телефон будет постоянно отправлять легкие сигналы, не давая роутеру закрыть порт.
Шаг 2. Настройка параметров NAT на сервере Asterisk / FreePBX
В веб-интерфейсе FreePBX (или файле pjsip.endpoint.conf / sip.conf):
- Откройте настройки внутреннего номера (Applications -> Extensions).
- В настройках номера (вкладка Advanced) убедитесь, что параметры выставлены правильно:
- NAT Mode:
Yes - (force_rport, comedia)(для chan_pjsip:Rewrite Contact = Yes,Force rport = Yes). - Qualify / Qualify Frequency: установите Yes (частота
30секунд). АТС сама будет опрашивать телефон и поддерживать сессию открытой.
- NAT Mode:
Шаг 3. Включение STUN-сервера (для сложных роутеров с симметричным NAT)
Если телефон находится за строгим мобильным 4G-модемом или Mikrotik:
- В веб-интерфейсе телефона откройте раздел Network (Сеть) -> Advanced.
- В поле STUN Server впишите любой публичный надежный адрес:
stun.l.google.com:19302илиstun1.l.google.com:19302. - Включите опцию «STUN Enable = Yes».
Шаг 4. Отключение SIP ALG на клиентском роутере (КРИТИЧЕСКИ ВАЖНО!)
В 80% случаев потерю пакетов вызывает встроенный в Wi-Fi роутер «помощник» SIP ALG. Зайдите в настройки роутера (Zyxel, Keenetic, TP-Link, Asus) -> раздел Безопасность / ALG -> Снимите галочку «SIP ALG (SIP Passthrough)» и перезагрузите роутер.
Частые вопросы (FAQ)
Что такое SIP ALG и почему его нужно всегда отключать на роутерах?
SIP ALG (Application Layer Gateway) пытается самостоятельно модифицировать сетевые пакеты телефонии, но в 99% случаев делает это с ошибками, искажая заголовки Contact и приводя к односторонней слышимости и сбросу регистрации.
Почему переход с протокола UDP на TCP/TLS решает проблему потери связи?
TCP-соединения держатся роутерами открытыми значительно дольше (до нескольких десятков минут), а TLS дополнительно шифрует трафик, защищая его от искажения со стороны интернет-провайдеров.
Как проверить доступность телефона со стороны сервера Asterisk?
Выполните в консоли Asterisk команду: 'pjsip show endpoints' или 'sip show peers'. Обратите внимание на статус: должно быть 'OK' со временем задержки в миллисекундах (например, OK (24 ms)).
Поможет ли проброс портов (Port Forwarding) на клиентском роутере?
В этом нет необходимости, если на телефоне корректно настроены интервалы Keep-Alive (15-20 сек) и включен параметр rport на стороне АТС.