Latest version of FreePBX, downloaded last week and all modules up to date. Not in office right now so can’t give you the exact version. will update on Monday. We are using PJSIP.
On one local network, 192.168.108.0/24, phones connect and register to FreePBX (192.168.204.108) and call properly . Example, *43 Echo Test works fine and so does calling between phones. SIP headers have expected IP addresses of devices.
On another network 192.168.8.0/24, the same phones register properly. But *43 Echo Test provides one way audio and no audio on calls.
Looking at the SIP/SDP packets, I see that FreePBX/PJSIP adds a “Contact=10.165.195.241” to the SIP header which is the external IP address to our network. The phones then attempt to reply to the external IP address which breaks the audio.
This definitely looks like a NAT problem BUT we have 192.168.204.0/24, 192.168.108.0/24 and 192.168.8.0/24 configured as local networks in Asterisk SIP Settings, Intrusion Detection and the Firewall.
On the extensions, we tried enabling and disabling “Rewrite Contacts” but no luck. Any ideas where to look?
A bad Contact header wouldn’t affect the (initial) audio, but it’s a good bet that the SDP body of the 200 OK sent by Asterisk also has the 10.165.195.241 address, which would cause the phone to send media to the wrong address.
One possibility is that the pjsip driver is failing to handle multiple local networks properly. Setting Local Networks to 192.168.0.0/16 may be a workaround (assuming that you don’t have anything in that range that is NATted relative to Asterisk). Restart (not just reload) Asterisk after making this change.
It was tracing SIP that I noticed the incorrect Contact header pointing to the external IP address from Asterisk, after that point the local extension starting replying to the external IP address. Restarting Asterisk fixed the issue. Will look for the “set reload to yes” once I find out where the setting is…
Just for the sake of interest, from the Asterisk CLI, I tried a “core reload” and it didn’t make a difference. Configured Asterisk SIP Settings - PJSIP Advanced settings and set the Allow Reload = Yes and resubmitted the extension then it worked fine after that. Strangely, there is no “pjsip reload” command in the Asterisk CLI.