I am working on building a hosted PBX platform and am testing an architecture where FreePBX is placed behind Kamailio acting as the SIP registrar and edge proxy.
Current Design
Internet Phones
↓
Kamailio (Registrar / Auth / NAT / RTPengine)
↓
FreePBX (Dialplan / IVR / Voicemail / SIPStation trunk)
What Is Working
• Phones register successfully to Kamailio
• Kamailio authenticates against a MySQL subscriber database
• Phone-to-phone calling works through Kamailio
• Kamailio to FreePBX SIP trunk is functioning
• FreePBX to Kamailio trunk is functioning
• RTP audio flows correctly
• Outbound PSTN calls from FreePBX work
What Is Not Working
FreePBX does not see device registration or contact state because endpoints register only to Kamailio.
Because of this:
• Ring groups fail
• IVR routing to extensions fails
• Extension dialing from FreePBX features fails
• FreePBX attempts to dial local endpoints instead of routing calls back through Kamailio
We have attempted several approaches including dialplan overrides and static contact routing, but they have not produced a clean or scalable solution.
Question
Is running FreePBX behind an external registrar like Kamailio a supported or commonly deployed architecture?
Or is the recommended approach to use Kamailio primarily as an SBC/NAT/security layer while still allowing phones to register directly to FreePBX?
Any real-world deployment experience or design guidance would be greatly appreciated.
Thanks for the help.