Firewall policies are the core of traffic control on FortiGate devices. One of the most common problems administrators face is creating a firewall policy that looks correct but does not allow traffic to pass. Even small misconfigurations can cause policies to fail silently.
This article explains why FortiGate firewall policies may not work and provides a clear, step-by-step troubleshooting process to identify and fix the issue.
A firewall policy is created on FortiGate with the correct source, destination, and service. However, traffic does not pass through the firewall. Users cannot access the internet, servers, or internal resources, even though the policy appears to be enabled.
This issue usually occurs due to policy order, interface mismatch, NAT configuration, or routing problems.
These simple checks often reveal the issue quickly.
FortiGate processes firewall policies from top to bottom. If a deny policy appears above the allow policy, traffic will never reach the intended rule.
Firewall policies are interface-based. If the incoming or outgoing interface does not match the actual traffic flow, the policy will never be used.
For internet access, NAT must be enabled in the policy. Without NAT, traffic may leave the firewall but replies will not return.
Incorrect subnet definitions, wrong address objects, or overlapping networks can prevent traffic from matching the policy.
The selected service may not match the actual traffic. For example, allowing HTTP while the traffic is HTTPS will result in blocked connections.
Even with a correct policy, traffic will fail if FortiGate does not know where to send it. Missing or incorrect routes can cause silent failures.
Move the allow policy above any deny or more general policies. Ensure there is no implicit deny rule blocking traffic first.
Confirm:
A single interface mismatch is enough to break the policy.
Enable logging on the policy and check traffic logs to see whether traffic is hitting the policy or being denied elsewhere.
For internet-bound traffic:
Without NAT, return traffic will fail.
Check:
Use “all” temporarily for testing if needed.
Set service to “ALL” temporarily to rule out service mismatch issues. If traffic works, narrow the service list later.
Check routing table to confirm:
Routing issues often look like policy problems.
If the issue persists, use FortiGate debug tools to trace traffic flow and identify where it is dropped.
After fixing the issue:
When a FortiGate firewall policy does not work, the problem is rarely complex. In most cases, the issue is related to policy order, interface mismatch, NAT settings, or routing. A structured troubleshooting approach makes it easier to identify the root cause and restore connectivity quickly.