У меня установлен и работает SIP-сервер FreeSWITCH. Он имеет общедоступный IP-адрес и находится за NAT 1-к-1 (на самом деле это экземпляр Amazon EC2).
Я могу подключиться к нему, позвонить на другую конечную точку (а именно, с моего устройства Android на мой компьютер и наоборот), и сигналы будут отправляться без проблем (вызов, ответ, зависание и т. Д.). К сожалению, и что сводит меня с ума, вот и все: ни звука, ни видео тоже.
Сервер не выдает ошибок, но он сообщает о множестве повторных передач, хотя выглядит так:
switch_rtp.c: 915 [zrtp engine]: ВНИМАНИЕ! HELLO Достигнуто максимальное количество повторных передач (20 попыток). ID = 15
Кодеки настроены правильно (такая же конфигурация работала локально в моей локальной сети). NAT / брандмауэр на стороне клиента может быть проблемой, сигналы проходят (возможно, из-за фиксированного порта, потоковая передача данных выполняется на случайном, что в настоящее время является моим лучшим выбором). Настройки STUN / TURN / ICE на клиенте, похоже, не действуют. Конечные точки находятся за симметричным NAT. На сервере нет правил iptables, группа безопасности выставлена как предложено там: http://wiki.freeswitch.org/wiki/Firewall
Помогите, пожалуйста. Как заставить работать или хотя бы диагностировать что не так?
Исследовательская часть: (спасибо, Маттиас, анализ журнала tcpdump помог) При обмене данными между клиент-сервером часть сигнала сеанса была направлена на правильные IP-адреса (и это то, что я проверил в первый раз), в то время как медиа не были (этого я не заметил, ага). Количество потоков RTP достигло 10... * network (частный IP-адрес сервера) и до 192.168.. net (частный IP-адрес моего компьютера). Легко заметить, если вы знаете, что ищете.
Решение состоял из двух частей. Во-первых, мне пришлось отключить поддержку ALG на моем домашнем маршрутизаторе, потому что он мешал STUN, который мой клиент использовал для прорыва NAT. По сути, то, что удалось выяснить STUN, было отменено ALG. После этого простого изменения RTP с сервера были направлены на правильный адрес.
Во-вторых, после настройки ВТОРОГО сервера я понял, что пропустил настройку внешних IP-адресов в конфигурации FreeSWITCH для внутреннего профиля. Инструкция здесь: http://wiki.freeswitch.org/wiki/Amazon_ec2 правильно, мне просто как-то удалось опустить две строчки в предлагаемой конфигурации. В основном, ванильная конфигурация с изменениями, описанными в цитируемой ссылке, у меня работает.
Тишина означает отсутствие RTP, дважды проверьте настройки брандмауэра
Также проверьте, есть ли у вас правильные общедоступные IP-адреса в разделе SDP ответов SIP, экземпляры EC2 находятся за NAT.
tcpdump и wirehark - ваши друзья здесь