One-Way Audio and NAT

Fix one-way audio, no audio and calls that drop after about 30 seconds on an Edesy SIP trunk - NAT external address, RTP ports, firewall rules, codecs and SIP ALG.

3 min read

One-way or missing audio on a SIP call is almost always a NAT problem: your PBX advertises a private IP in its SDP, so media from Edesy goes nowhere. Fix it by setting your PBX's external (public) address and local networks, opening your RTP port range, disabling SIP ALG on the router, and using only G.711 codecs.

Symptoms and causes#

Symptom Most likely cause
You hear the callee, they cannot hear you (or the reverse) PBX advertises a private IP in SDP; RTP blocked in one direction
No audio at all, call stays up RTP blocked both ways; codec mismatch
Call drops after about 30 seconds The ACK or re-INVITE never arrives because Contact headers carry a private IP; SIP ALG rewriting packets
Audio for a few seconds, then silence Router NAT session timeout on the RTP ports
Inbound calls never ring, outbound works Firewall blocks inbound SIP from Edesy; registration expired

How to fix it#

  1. Set the external address. Tell your PBX its public IP or dynamic-DNS name so it writes that into SIP and SDP.
    • FreePBX: Settings → Asterisk SIP Settings → chan_pjsip → External Address and Local Networks (for example 192.168.0.0/24).
    • Plain Asterisk (pjsip.conf, on the transport): external_media_address, external_signaling_address and local_net.
  2. Open the RTP range. Asterisk defaults to 10000-20000/udp. Allow it outbound, allow return traffic from Edesy, and port-forward it to the PBX if the PBX is not the edge device.
  3. Allow Edesy's signalling IP. Allow UDP 5070 to and from the Edesy signalling IP shown on your trunk page, for SIP and registration replies.
  4. Disable SIP ALG on your router or firewall. See SIP ALG.
  5. Limit codecs to G.711 μ-law and A-law. Disable g722, g729 and opus on the trunk.
  6. Keep registrations and NAT bindings alive. Set a qualify or keep-alive interval (FreePBX Qualify Frequency 60) so the router keeps the mapping open.

Check your fix#

  • Place a call and talk in both directions for over a minute.
  • On Asterisk, pjsip set logger on shows whether the SDP c= line carries your public IP.
  • Use the outbound test on the trunk page to rule out the Edesy side. See Test Calls.

FAQ#

Why does this happen only with an on-premises PBX?#

Cloud servers usually have a public IP directly. An office PBX sits behind a router that translates addresses, so the PBX has to be told its public address.

Does Edesy relay the media?#

Yes. Edesy anchors media for every call, so your PBX only needs to exchange RTP with Edesy, not with the far end. A correct external address on your side is what makes this work.

Do I need a static public IP?#

Not for a credentials trunk with registration. A static IP is needed only for an IP allowlist trunk.

I changed NAT settings and nothing improved.#

Restart the PBX's SIP stack after changing transport settings, and check that SIP ALG is really off. Some routers re-enable it after a firmware update.

Was this page helpful?