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

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

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

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

При звонке меня слышат, а я нет: односторонняя слышимость SIP и NAT в Asterisk

Обновлено: 26.08.2026 · Официальная документация ↗
  • При звонке один из собеседников отлично слышит речь, а второй находится в полной тишине (односторонний звук).
  • Звонок принимается, но через ровно 20–30 секунд происходит автоматический обрыв соединения.
  • Проблема возникает только при звонках на удаленные телефоны (Home Office) или через внешнего SIP-провайдера.
  • В локальной сети между двумя соседними кабинетами звук работает идеально в обе стороны.

В чем физика проблемы? (Почему звук идет только в одну сторону)

В IP-телефонии звонок разделен на две части: сигналы управления (SIP по порту 5060) и сам голос (RTP-аудиопоток по случайным портам 10000–20000). Сигналы вызова успешно проходят через роутер (NAT), и телефон звонит. Но когда вы берете трубку, голосовой поток от сервера отправляется на внутренний «серый» IP-адрес вашего телефона (например, 192.168.1.55), который невидим в интернете. В итоге звук уходит в никуда.

Пошаговое исправление в настройках Asterisk / FreePBX:

Шаг 1. Укажите публичный IP и локальные подсети АТС

Сервер телефонии должен четко знать свой внешний IP-адрес, чтобы правильно сообщать его удаленным абонентам в SDP-пакетах.

Для FreePBX:

  1. Откройте меню Settings (Настройки) -> Asterisk SIP Settings.
  2. На вкладке General найдите блок NAT Settings.
  3. Нажмите кнопку Detect Network Settings (Автоопределение): система заполнит ваш внешний адрес (External Address) и локальную сеть (Local Networks, например 192.168.1.0 / 24).

Для классического Asterisk (pjsip.conf / sip.conf):

В файле /etc/asterisk/pjsip.conf для транспорта пропишите:

[transport-udp]
type=transport
protocol=udp
bind=0.0.0.0:5060
local_net=192.168.1.0/24
external_media_address=203.0.113.10  ; Ваш реальный белый IP
external_signaling_address=203.0.113.10

Шаг 2. Проброс диапазона RTP-портов на интернет-роутере

Голосовые пакеты должны беспрепятственно долетать до сервера АТС:

  1. Зайдите на ваш главный маршрутизатор (MikroTik, Keenetic, Cisco).
  2. Создайте правило Port Forwarding (Проброс портов):
    • Протокол: UDP
    • Диапазон внешних портов: 10000-20000
    • Внутренний IP: адрес вашего сервера Asterisk (например, 192.168.1.50)
    • Внутренний порт: 10000-20000

Шаг 3. Включение поддержки NAT для учетных записей абонентов

В настройках каждого внутреннего номера (Extension) удаленного сотрудника:

  • Для PJSIP: установите force_rport = yes, rewrite_contact = yes, rtp_symmetric = yes.
  • Для chan_sip: установите nat = force_rport,comedia и directmedia = no.
💡 Практика специалистов: Самая популярная причина односторонней слышимости у новичков — забытый параметр localnet в Asterisk. Сервер считает локальные телефоны внешними и отправляет им свой белый IP вместо внутреннего.

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

Почему звонок обрывается ровно через 30 секунд при отсутствии звука?

Если сервер Asterisk не получает ни одного входящего RTP-пакета с голосом в течение таймаута (rtptimeout), он считает, что связь оборвалась, и принудительно завершает вызов сигналом BYE.

Что такое Direct Media (canreinvite)?

Это функция, заставляющая телефоны передавать голос напрямую друг другу в обход сервера АТС. Если один из аппаратов за NAT, Direct Media обязана быть отключена (no), иначе звука не будет.

Нужно ли пробрасывать порты 10000-20000 на домашнем роутере удаленного сотрудника?

Нет. Достаточно пробросить порты только на роутере в офисе, где стоит сервер АТС. На стороне клиента роутер сам откроет обратный порт благодаря механизму symmetric RTP (comedia).

Как отключить SIP ALG на роутере и зачем это нужно?

SIP ALG пытается модифицировать IP-адреса внутри пакетов, но делает это с ошибками, порождая односторонний звук. В роутерах (Zyxel, Asus, TP-Link) найдите меню NAT / Firewall и снимите галочку с 'SIP Passthrough' или 'SIP ALG'.

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