Devices lose registration or have one-way audio
Most problems with devices behind a home or office router come from SIP ALG, a router feature that rewrites SIP messages on the way through. It was meant to help VoIP work behind NAT; in practice it often corrupts the addresses in the messages. FlySIP and current SIP devices handle NAT themselves and do not need it.
Symptom
Section titled “Symptom”- Phones or gateways behind a router lose their registration; Vendors → Registrations shows them coming and going.
- Calls have audio in one direction only, or no audio at all.
- Calls drop after about 30 or 60 seconds, or re-INVITEs such as hold and transfer fail.
- Everything works when the device is connected directly to the internet or through a VPN.
Quick checks
Section titled “Quick checks”- Connect the device to another network, for example a mobile hotspot, and repeat the call. If it works there, the router is the cause.
- Check that the account’s registration exists in Vendors → Registrations with the router’s public IP.
- Extract the SIP log of a failed call and look at the
Via,Contactand SDP addresses. See A call failed and the CDR does not explain why.
Cause 1: SIP ALG on the router
Section titled “Cause 1: SIP ALG on the router”How to confirm: the SIP log shows private addresses such as 192.168.x.x or 10.x.x.x in Contact or SDP where the device sends its public address, or headers that change between the device’s own log and the switch’s log. On MikroTik, /ip firewall service-port print lists sip without the disabled flag.
Fix: turn SIP ALG off. It is called SIP ALG, SIP Helper, VoIP Helper, SIP Passthrough or Application Layer Gateway depending on the vendor:
| Router | Where |
|---|---|
| MikroTik RouterOS | IP → Firewall → Service Ports → sip → disable, or /ip firewall service-port disable sip |
| TP-Link | Advanced → NAT Forwarding → ALG → clear SIP ALG (on some firmware under Security or NAT Boost) |
| ASUS | Advanced Settings → WAN → NAT Passthrough → SIP Passthrough → Disable |
| Keenetic | Internet → Other connections → Advanced → turn off SIP ALG |
| ZyXEL, D-Link | Advanced → NAT → ALG Settings → clear Enable SIP ALG |
| Ubiquiti EdgeRouter | configure, set system conntrack modules sip disable, commit, save |
| Huawei, ZTE | Security → ALG Settings or NAT ALG Settings → disable SIP ALG |
Reboot the router and re-register the devices afterwards so that old NAT mappings are cleared.
Cause 2: the NAT mapping expires between registrations
Section titled “Cause 2: the NAT mapping expires between registrations”How to confirm: devices register successfully but become unreachable for incoming calls after a few minutes, and outgoing calls still work.
Fix: set the device’s registration interval to 60 to 120 seconds or enable its keep-alive (often called NAT keep-alive or SIP OPTIONS ping). On a PBX behind NAT, enable its NAT handling for the trunk to the switch.
Cause 3: media bypasses the relay
Section titled “Cause 3: media bypasses the relay”How to confirm: signalling is fine but there is no audio, and the SDP in the SIP log shows a private address for the device’s media.
Fix: set Media Relay Type of the account so that media goes through the switch’s relay, check Use Media Relay on the vendor connection, and make sure the relay’s RTP ports are open in System Management → IP Firewall. See Media relay.
Still not working?
Section titled “Still not working?”Collect the following and open a ticket at support.flysip.com:
- The account name, the device model and the router model.
- The Call-ID and time of a failed call, and its SIP log.
- Whether the device works on another network.