SIP-сигнал с публичного Wi-Fi?

У меня была проблема с джайном SIP. Мое приложение используется для вызова VOIP. Это хорошо работает с Ethernet, но это не сработает в общественных Wi-Fi.

Ниже представлен пакет, который я отправил для входа на SIP-сервер. Кажется, сервер не отвечает ни на какие данные (работает на ethenet)

REGISTER sip:sip.linphone.org:5060 SIP/2.0
Call-ID: 56866e2b305987eac0d6e8bee07c6f69@192.168.56.1
CSeq: 1 REGISTER
From: "myaccount" <sip:myaccount@sip.linphone.org>;tag=647554
To: "myaccount" <sip:myaccount@sip.linphone.org>
Via: SIP/2.0/UDP 192.168.56.1:5075;branch=z9hG4bK-333032-33f14b15adbdc0cd848ccd102acb2b45
Max-Forwards: 70
Contact: <sip:192.168.56.1:5075>
Expires: 60000
Content-Length: 0

У кого-нибудь есть какие-либо идеи?

2 ответа

Решение

Скорее всего, это проблема NAT/ брандмауэра. Прежде всего, проверьте DNS, если sip.linphone.org разрешается правильно на вашем Wi-Fi. Во-вторых, вы находитесь за NAT и рекламируете частный IP 192.168.56.1, поэтому удаленная сторона должна быть в состоянии найти ваш публичный IP, что не всегда возможно. Вы захотите заглянуть в STUN и STUN4j (а затем в TURN и ICE, если этого недостаточно), чтобы найти свой собственный общедоступный IP-адрес и порт. На linphone уже есть сервер оглушения на stun.linphone.org, чтобы помочь вам. Обход NAT может быть довольно сложным. Если у вас есть общедоступный IP-адрес и порт, просто установите вместо него общедоступный IP-адрес, и он будет работать.

Другое дело, что вы не отправляете сюда никакой SDP, так что SDP, вероятно, не имеет значения. Но если позже у вас есть SDP и RTP, то вам, возможно, придется посмотреть TURN и ICE, чтобы включить SDP и ретранслировать RTP через стороннего производителя. Это зависит от того, что поддерживается на удаленной стороне, и от конфигурации NAT. Иногда удаленные серверы будут работать просто так, как вы отправляете REGISTER сейчас, но иногда им нужно много дополнительных вещей, или они могут вообще не работать.

Это не проблема peivate/public IP. Что касается вашего SIP-сервера, размещенного на публичном IP-адресе (что очень нормально), то не имеет значения, является ли ваш клиент приватным IP-адресом.

Посмотрите на свое SIP-сообщение. Вы предоставляете SIP-серверу свой частный IP-адрес.

Call-ID: 56866e2b305987eac0d6e8bee07c6f69@192.168.56.1

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

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