Both Asterix and Kamailio are supposed to be able to deal with SDP using private IP thanks to rtpproxy/relay and symmetric RTP.
You don't need STUN to be enabled at Linphone level.
meanwhile I switched from asterisk to kamailio sip proxy, because I hoped for better NAT traversal mechanism, but even there it works only with rtpproxy, nathelper modules and NAT enabled, so the media and RTP packets get all effectively proxied over the server.
Is there any option to force Linphone (windows/linux/android) to use STUN on incomming calls too?
As I wrote, at the moment it seems that STUN and public IP discovery works only when doing outbound call.
This causes, that I can't reach any Linphones behind NAT directly and SDP message contains wrong IP (192.168.1.xxx).
When I set the public IP manually in Linphone (windows/linux), calls and direct RTP work as expected in both directions.
On 03.04.2015 23:07, Filip Malenka wrote:
Hi all Linphone devs!
Thank you all for your hard work contributing to the Linphone apps. They
are awesome and I would like to contribute with pointing something out.
What I want to achieve: To have Linphone clients on
Windows/Ubuntu/Android all over, behind NATs, on mobile networks, etc.
and to be able to reach every client from everywhere in every direction
(Mobile -> NAT, NAT-> mobile, NAT-> another NAT, you can imagine..).
I found out, that by setting my custom asterisk 11 to directrtpsetup=yes
almost did the job. But there is a problem.
When placing an outbound call from android -> NATed ubuntu, I get no RTP
packets exchanged. The reason is, that Android on 3g network is trying
to send to "192.168.1.xxx" my NATed network, which can't work. I was
expecting that the Linphone from behind NAT would somehow propagate it's
public IP through STUN/ICE to the android client first, but that's not
If STUN option is selected in Linphone network settings, I would assume
that every (inbound/outbound) call would be using it. Now only when
doing outoubound calls, the STUN is utilized. Inbound call doesn't care
about public IP. Thus the remote client sending RTP to wrong IP.
I can get it work by manually setting my current public IP in Linphone.
But this is not very "dynamic" workaround and I would need to set it
everytime I change network/wifi/location or when public IP changes
(occurs very often).. Not to say, that in android Linphone there is no
such option to set IP manually.
Is it possible to force doing a STUN request right before answering an
Maybe this isn't to be solved by Linphone client, but maybe an another
asterisk setting. But I didn't figure it out yet.
By setting asterisks
Linphone-developers mailing list