Почему SIP звонки через мой сервер молчат?

У меня есть FreeSWITCH SIP-сервер и работает. Он имеет общедоступный IP-адрес и находится за NAT 1-к-1 (на самом деле это экземпляр Amazon EC2).

Я могу подключиться к нему, сделать вызов другой конечной точке (а именно, мое устройство Android на моем компьютере и наоборот), и сигналы отправляются без проблем (звонок, ответ, зависание и т. Д.). К сожалению, и то, что сводит меня с ума, вот и все: ни аудио не проходит, ни видео тоже.

Сервер не выдает ошибок, он сообщает много повторных передач, хотя, выглядит так:

switch_rtp.c: 915 [двигатель zrtp]: ВНИМАНИЕ! HELLO Максимальное количество повторных передач достигнуто (20 попыток). ID=15

Кодеки настроены правильно (тот же конфиг работал локально в моей локальной сети). Может возникнуть проблема с NAT/ брандмауэром на стороне клиента, сигналы проходят через него (возможно, из-за фиксированного порта потоковая передача данных происходит случайным образом, что в настоящее время является моей лучшей ставкой). Настройка STUN/TURN/ICE на клиенте, кажется, не имеет никакого эффекта. Конечные точки находятся за симметричным NAT. На сервере нет правил iptables, группа безопасности настроена так, как предлагается там: http://wiki.freeswitch.org/wiki/Firewall

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

2 ответа

Решение

Исследовательская часть: (спасибо Матиасу, анализ журнала tcpdump помог). При передаче клиент-серверного сигнала часть сеанса перенаправлялась на правильные IP-адреса (и это я проверял в первый раз), в то время как медиа не было (что я не заметил, а), Потоки RTP направлялись на 10... * сеть (частный IP-адрес сервера) и 192.168., нет (мой компьютер частный IP). Легко определить, когда вы знаете, что вы ищете.

Решение состояло из двух частей. Во-первых, мне пришлось отключить поддержку ALG на домашнем маршрутизаторе, потому что это мешало STUN, который мой клиент использовал для прорыва NAT. По сути, то, что удалось выяснить STUN, изменило ALG. После этого простого изменения RTP с сервера были направлены на правильный адрес.

Во-вторых, после настройки ВТОРОГО сервера мне пришло в голову, что я пропустил настройку внешних IP-адресов в конфигурации FreeSWITCH для внутреннего профиля. Руководство здесь: http://wiki.freeswitch.org/wiki/Amazon_ec2 правильно, мне просто как-то удалось пропустить две строки в предложенном конфиге. В принципе, ванильная конфигурация с изменениями, описанными в цитируемой ссылке, работает для меня.

Тишина означает отсутствие RTP, дважды проверьте настройки брандмауэра

Также проверьте правильность общедоступных IP-адресов в разделе SDP ответов SIP, экземпляры EC2 находятся за NAT

tcpdump и wireshark - ваши друзья

Другие вопросы по тегам