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

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

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

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

Односторонняя слышимость в Asterisk: настройка NAT и проброс RTP портов

Обновлено: 26.08.2026 · Официальная документация ↗

Характерные признаки проблемы:

  • Вы отлично слышите клиента, а клиент вам в ответ говорит: «Алло, вас не слышно!».
  • Звонок обрывается ровно через 30 или 32 секунды после начала разговора.
  • Звук идет только при звонках внутри офиса, но пропадает при звонках на мобильные или удаленные филиалы.
  • В логах сервера Asterisk появляются строки: RTP timeout: no audio received.

Шаг 1. Понимание причины (Что такое NAT и RTP)

В телефонии служебные команды (гудки, набор номера) идут по протоколу SIP (порт 5060), а сам живой голос передается отдельным потоком данных — по протоколу RTP через случайные порты. Если роутер блокирует эти порты, звук идет только в одну сторону.

Шаг 2. Проверяем диапазон портов в настройках Asterisk

Откройте файл конфигурации RTP на вашем сервере Asterisk:

cat /etc/asterisk/rtp.conf

В нем должен быть указан диапазон портов (по умолчанию от 10000 до 20000):

[general]
rtpstart=10000
rtpend=20000

Шаг 3. Пробрасываем порты на офисном роутере (Port Forwarding)

  1. Зайдите в панель управления вашего роутера (MikroTik, Keenetic, TP-Link, Asus).
  2. Найдите раздел Переадресация портов (Port Forwarding / NAT).
  3. Создайте правило для SIP: порт 5060, протокол UDP, перенаправлять на локальный IP адрес сервера Asterisk (например, 192.168.1.100).
  4. Создайте правило для Голоса (RTP): диапазон портов 10000-20000, протокол UDP, на IP сервера телефонии 192.168.1.100.

Шаг 4. Указываем внешний белый IP в конфигурации 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=ВШ_ВНЕШНИЙ_БЕЛЫЙ_IP
external_signaling_address=ВАШ_ВНЕШНИЙ_БЕЛЫЙ_IP

Примените настройки в консоли телефонии:

asterisk -rx "pjsip reload"
💡 Практика специалистов: Если сервер Asterisk расположен за динамическим IP-адресом без статики, используйте параметры local_net и dynamic_exclude_mapped_address или DDNS-домен в external_signaling_address.

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

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

Сервер Asterisk отправляет голосовые пакеты клиенту, но из-за закрытых портов NAT не получает подтверждений. Встроенный таймер Asterisk (rtpkeepalive/rtptimeout) считает соединение мертвым и принудительно кладет трубку.

Нужно ли пробрасывать порты TCP для передачи голоса?

Нет, голос в реальном времени передается исключительно по протоколу UDP для исключения сетевых задержек буферизации.

Что такое SIP ALG на роутере и почему его советуют отключать?

SIP ALG (Application Layer Gateway) — это функция на домашних роутерах, которая пытается подменять IP-адреса в пакетах телефонии, но на практике искажает заголовки, что приводит к полной потере звука. Ее обязательно нужно отключить в настройках роутера.

Можно ли сузить диапазон RTP портов, например, до 10000-10050?

Да. Один разговорный канал занимает 2 порта (RTP и RTCP). Диапазона в 50 портов хватит максимум на 25 одновременных разговоров.

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