Problem with nat and rtp

I setup freepbx and it have local ip 192.168.111.166.

I have local endpoint extension 105 with ip 192.168.111.92.
And have endpoint 102 outside local network. (external ip 77.XX.XX.98 and nat ip 192.168.20.2)

Trace take from freepbx.
The call gets through, but there is no voice.

Extension 102 settings:

You are relying on symmetric RTP because the remote party is behind its own NAT, but you have received no media from them, so Asterisk is unable to learn their address.

If they aren’t expected to send media, you can only fix this at the remote end. You may be able to tell it its public address, or you may be able to point it at some sort of STUN server.

If they do send media, you will need make sure that there are static port forwarding rules in your router, for the RTP port range, as there isn’t going to be any outbound media from which it can learn a rule, until there is successful inbound media. Catch 22.

This could also happen if you had the wrong public address set, but I doubt that is the case, here.

I forward 5000-6000 and 10000-20000 porst on freepbx. I hope this is enough.

This is a phone to phone call. In this case, media may not be expected?

If I use a cellular connection, there is sound. As soon as I go beyond the nat, the voice disappears.

You should examine the INVITE from Asterisk, to make sure that the SDP contains the correct public address. If it does, you need to try to capture the incoming RTP on the public side of the NAT router. If it is present there you need to work out why the router is dropping it. Your pcap will be from outside the firewall on the Asterisk machine, so the lack of incoming RTP means it either wasn’t sent, or didn’t get past the router.

I compared the packets on freepbx and there was really no incoming rtp. I turned off the keenetic sip alg and it seems the problems have gone away. I’ll check it tomorrow and write.