[SR-Users] NAT Traversal

Spinov Evgeniy spinov_evgeniy at intalisan.com
Thu Feb 24 16:21:37 CET 2011


Hello, all.

Using nathelper + rtpproxy for subj. Kamailio has public and private
network interfaces. Asterisk is only private. RTP Proxy is working in
bridge mode and relaying traffic from UAC to Asterisks.

Everything is working fine, except one configuration. When the client is
behind router ( a specific one, I do not have an access there to
check ), and this UAC is making a call to other public extension, which
is behind router, then RTP Proxy is relaying traffic to the caller,
using another UDP port, then the packets arrive.

For instance: 
UAC 1 -> UAC 2

PUBLIC_IP:10 > KAMAILIO_IP:5555
KAMAILIO_IP:5678 > PUBLIC_IP:12

While for the UAC 2 it looks like:

PUBLIC_IP:20 > KAMAILIO_IP:6767
KAMAILIO_IP:4564 > PUBLIC_IP:20

The source and destination UDP ports are the same. As result, I can hear
UAC 1 and he cannot hear me. 

In case of we have UAC 3, which is behind other router, call is working
fine with same configuration.

"It's routers fault" you can say, but in the same configuration ( I mean
network, not kamailio ) it worked, but when RTPProxy was not in bridge
mode and Kamailio and Asterisks were in public network. Reinvites are
not allowed in both cases. 

The question is, why the source and destination UDP ports are different?
Using STUN in first case, cause without it, private IP written in
contacts and as result, traffic relayed from Kamailio is incorrect,
cause heading to private network which is unreachable.

Any ideas where to dig?




More information about the sr-users mailing list