We use a obfuscation software to encrypt/mangle both SIP/RTP which sits before asterisk. What happens is sometimes we don't get any voice. after some "rtp set debug" we found out that when received ip of the rtp stream is router's public ip, everything works cleanly. But sometimes we get the private ip's of the client as received address in rtp stream which results in "no voice". it seems asterisk because of some unknown reason failed to traverse nat for the media stream.
How asterisk manages nat is not known to me. But common SIP nat traversal methods dictate that first it modifies SDP to put its address as the destination address for both side. Then it waits for a rtp packet (symmetric rtp) to know to what port it should send media.
I'm not understanding at what stage it fails. Because of wrong IP is shown i'm suspecting that its because of not writing SDP correctly. For what reason it happens still unknown to us.
Any pointer to how it should be debugged?
What reason behind this strange behavior is still unknown to us.