p00h
@p00h
Фехтовальщик-стропальщик

Freeswitch + NAT?

Имеется FS: Version 1.6.6 -13-d2d0b32 64bit
FS находится за натом, auto-nat работает, порты пробрасываются корректно. Серый адрес 10.10.10.10/30

Имею клиента Alice, находящегося за натом, серый адрес: 10.1.1.1/24
Имею клиента Bob, находящегося за натом, серый адрес: 10.2.2.2/24
Alice (10.1.1.1/24) [NAT] --- [NAT] FS (10.10.10.10/30) [NAT] --- [NAT] Bob (10.2.2.2/24)

Alice calls to FS, чтобы послушать moh или голосовую почту. FS ВСЕГДА корректно определяет NAT, заменяет адрес 10.1.1.1 на реальный внешний, в результате всегда имеем голос.

Alice calls to Bob. В результате, Bob всегда получает аудио, в то время, как Alice - никогда. В логах я прекрасно вижу, что FS меняет адрес Боба 10.2.2.2 на реальный внешний, однако не производит эту процедуру с адресом Alice! В результате голосовые данные пытаются быть отправлены с серого адреса FS 10.10.10.10/30 на серый адрес Alice 10.1.1.1/24. Подтверждено wireshark'ом на маашине с FS, а также на шлюзе по умолчанию, куда прилетает этот трафик для маршрутизации.

Изгуглился вдоль и поперек, перепробовал все, что только можно. Но никак.

UPD
=================
Итак, проблема кажется решенной.
Если коротко: для нормальной работы как SDP, так и RTP НЕОБХОДИМО, чтобы Ваш клиент умел STUN и ICE. И, естественно, обе эти настройки должны быть активированы.

Либо: активиривать RPORT как для медиа, так и для сигнальных пакетов. Проверено на Zoiper, в котором отсутствует ICE.

Если еще длиннее. Надеюсь, это будет кому-то полезно.
Рассматривая вышеуказанный пример, мы можем видеть, что Alice имеет адрес 10.1.1.1.
Когда она посылает INVITE, то в нем будут вот такие части:
...
c=IN IP 10.1.1.1
...
m=audio 7076 RTP/SAVP 0 8 3 96 101
c=IN IP4 <b>10.1.1.1</b>
...

Обратите внимание на второе вхождение адреса: клиент сообщает где ему ожидать голосовые данные. Конечно же, этот адрес недоступен извне. Необходимо любым способом заставить клиент определить реальный внешний адрес и поставить его здесь, чтобы ожидать голосовые данные снаружи.

Подойдет для этого любая возможность: UPnP, STUN + ICE, перезапись SDP вручную и так далее.
  • Вопрос задан
  • 1937 просмотров
Пригласить эксперта
Ответы на вопрос 2
в sofia-профиле
<param name="apply-nat-acl" value="rfc1918"/>
<param name="nat-options-ping" value="true"/>
<param name="aggressive-nat-detection" value="true"/>
<param name="NDLB-force-rport" value="true"/>
Ответ написан
p00h
@p00h Автор вопроса
Фехтовальщик-стропальщик
Alice «получает» голосовые данные на этапе early-media, когда должна слышать гудок. Однако данные «отправляются» по неверному адресу, поэтому никакого гудка, естественно, нет и после установления соединения FS продолжает отправлять данные «не туда»
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы