Troubleshooting 3CX Firewall Checker Failures on FortiGate
A Step-by-Step Guide to Resolving SIP Issues with FortiOS 7.4.7
The Problem: 3CX Firewall Checker Failures
When deploying a 3CX PhoneSystem behind a FortiGate firewall, you might encounter issues with the firewall checker failing tests like "testing 3CX PhoneSystem 01 SIP Server... failed" or "detecting SIP ALG... failed." These failures can prevent proper SIP communication, leading to call drops or registration issues.
In this guide, I’ll walk you through how we resolved these issues on a FortiGate-VM64-KVM running FortiOS 7.4.7, ensuring all firewall checker tests passed and the 3CX system worked flawlessly.
Initial Firewall Checker Output
We started with this output from the 3CX firewall checker:
resolving 'stun-eu.3cx.com'... done resolving 'stun2.3cx.com'... done resolving 'stun3.3cx.com'... done resolving 'sip-alg-detector.3cx.com'... done testing 3CX PhoneSystem 01 SIP Server... failed stopping service... done detecting SIP ALG... failed testing port 5060... done starting service... done testing 3CX PhoneSystem Media Server... done stopping service... done testing port 5090... done testing ports [9000..9398]... done
The key failures were:
- SIP Server Test Failure: Indicating potential issues with SIP traffic handling on port 5060.
- SIP ALG Detection Failure: Suggesting either SIP ALG interference or connectivity issues with
sip-alg-detector.3cx.com
.
Step 1: Verify FortiOS Version
First, we confirmed the FortiOS version to tailor our commands correctly:
FGVMSLTM24005279 # get system status Version: FortiGate-VM64-KVM v7.4.7,build2731,250120 (GA.M) Operation Mode: NAT Current HA mode: standalone System time: Wed Mar 12 03:31:03 2025
FortiOS 7.4.7 meant we needed to use modern commands for disabling SIP ALG and session helpers.
Step 2: Remove the SIP Session Helper
FortiGate firewalls often have session helpers enabled by default, including one for SIP, which can modify SIP packets. We checked for active session helpers:
FGVMSLTM24005279 # config system session-helper show edit 13 set name sip set protocol 17 set port 5060 next
We removed this SIP session helper (ID 13):
config system session-helper delete 13 end
Step 3: Disable SIP ALG via VoIP Profile
In FortiOS 7.4, SIP ALG is managed through VoIP profiles. We disabled it:
config voip profile edit default config sip set status disable set rtp disable end end
Some commands like set sip-nat-trace disable
failed in this context due to version-specific changes in FortiOS 7.4.7.
Step 4: Disable SIP NAT Trace Globally
Since sip-nat-trace
wasn’t available in the VoIP profile, we disabled it globally:
config system settings set sip-nat-trace disable end
Step 5: Clear Sessions and Reboot
We cleared sessions and rebooted the FortiGate:
diagnose sys session clear execute reboot
Step 6: Verify Settings and Rerun the Firewall Checker
After rebooting, we confirmed the settings:
config voip profile edit default show set status disable set rtp disable
Then reran the 3CX firewall checker:
resolving 'stun-eu.3cx.com'... done resolving 'stun2.3cx.com'... done resolving 'stun3.3cx.com'... done resolving 'sip-alg-detector.3cx.com'... done testing 3CX PhoneSystem 01 SIP Server... done stopping service... done detecting SIP ALG... not detected testing port 5060... done starting service... done testing 3CX PhoneSystem Media Server... done stopping service... done testing port 5090... done testing ports [9000..9398]... done
All tests passed!
Why It Worked
The root cause was likely the SIP session helper and residual SIP ALG settings. Disabling them systematically resolved the issue.
Frequently Asked Questions
What is SIP ALG, and why disable it for 3CX?
SIP ALG (Application Layer Gateway) modifies SIP packets to help with NAT traversal, but it often causes issues with 3CX by altering packets in unexpected ways. Disabling it ensures 3CX handles SIP traffic directly.
Why did the SIP Server test fail initially?
The SIP Server test likely failed due to FortiGate's session helper or SIP ALG modifying packets, preventing proper SIP communication on port 5060.
What if my firewall checker still fails after these steps?
Double-check NAT and firewall policies, ensure connectivity to 3CX servers (e.g., sip-alg-detector.3cx.com
), and capture packets using diagnose sniffer packet any "port 5060" 4
to identify issues.
Do I need to update FortiOS to resolve 3CX issues?
Not always. This guide worked with FortiOS 7.4.7, but if issues persist, check Fortinet’s release notes for known SIP bugs in your version and consider updating to a stable release.