Я пытаюсь написать приложение для софтфона с помощью pjsua. Все работает хорошо, звук передается в двух направлениях, когда я использую Asterisk и программные телефоны в одной локальной сети - 192.168.10.XXX, но когда я прячу свой программный телефон за NAT, я не слышу входящий звук, исходящий звук работает нормально.
Конечная точка с моим приложением имеет ip: 192.168.12.233, адрес маршрутизатора publi c равен 192.168.10.216, а Asterisk - 192.168.10.15. Трансляция портов на маршрутизаторе настроена на переадресацию порта 5060 для SIP и 4000-5000 для RTP. Я попытался установить ip publi c адрес в конфигурации pjsua, но безрезультатно.
Вот сообщение INVITE SIP из моего приложения, я думаю, что проблема в поле SDP 'c', которое содержит неправильное IP-адрес. Знаете ли вы, как изменить его в pjsua или как исправить эту проблему со звуком? Может мне стоит что-то изменить в конфиге Asterisk?
INVITE sip:112@192.168.10.15 SIP/2.0
Via: SIP/2.0/UDP 192.168.10.216:40173;rport;branch=z9hG4bKPj1cb51c72-d924-4f3e-9075-6fa17e39b3be
Max-Forwards: 70
From: sip:500@192.168.10.15;tag=c80893bb-4b11-4def-b0e9-59bb82b88630
To: sip:112@192.168.10.15
Contact: <sip:500@192.168.10.216:40173;ob>
Call-ID: cc07dcae-1f51-4fd9-b3b0-508da40b2752
CSeq: 11230 INVITE
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS
Supported: replaces, 100rel, timer, norefersub
Session-Expires: 1800
Min-SE: 90
User-Agent: GMIDFOO00
Content-Type: application/sdp
Content-Length: 350
v=0
o=- 3787399917 3787399917 IN IP4 192.168.12.233
s=pjmedia
b=AS:84
t=0 0
a=X-nat:0 Unknown
m=audio 4000 RTP/AVP 9 8 96
c=IN IP4 192.168.12.233
b=TIAS:64000
a=rtcp:4001 IN IP4 192.168.12.233
a=sendrecv
a=rtpmap:9 G722/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:96 telephone-event/8000
a=fmtp:96 0-16
a=ssrc:938347045 cname:56c230b34489dbbe