A network administrator configures a firewall policy to allow HTTP traffic from the internal network (10.0.0.0/8) to a web server (172.16.1.10). Users on the 10.0.0.0/8 network cannot access the web server, but other internal users can. The administrator checks the policy list and sees the policy is enabled and in the correct position. What is the most likely cause?
Trap 1: The policy is placed below a deny-all policy
On FortiGate, firewall policies are evaluated sequentially from the top of the policy list downward; the first matching policy is enforced. If a deny-all policy were positioned above, it would match first and drop the traffic before the allow policy could be reached, but the administrator has already verified that the policy order is correct. Moreover, a policy placed below a deny-all rule would typically generate a policy hit on the deny rule, not a routing error, so this is not the root cause here.
Trap 2: NAT is not configured on the policy
Network Address Translation (NAT) on a FortiGate policy is only required for traffic that must be source-translated, usually when moving between zones, such as internal to external. For internal-to-internal traffic traversing the FortiGate, the source and destination addresses are private and routable within the organization, so no translation is necessary. The absence of NAT would not cause packets to be dropped; the firewall would still forward the traffic if routes exist, because NAT is not a prerequisite for packet forwarding on internal paths.
Trap 3: The policy is disabled
A disabled firewall policy on FortiGate is not loaded into the policy lookup engine, so traffic that would normally match it instead falls through to the next matching policy or is blocked by the implicit deny rule. However, the administrator has already confirmed that the policy is in an enabled state, so this cannot be the cause. Additionally, a disabled policy would typically result in a total lack of session setup or a 'policy denied' message in the logs, rather than a specific routing failure.
- A
The policy is placed below a deny-all policy
Why wrong: On FortiGate, firewall policies are evaluated sequentially from the top of the policy list downward; the first matching policy is enforced. If a deny-all policy were positioned above, it would match first and drop the traffic before the allow policy could be reached, but the administrator has already verified that the policy order is correct. Moreover, a policy placed below a deny-all rule would typically generate a policy hit on the deny rule, not a routing error, so this is not the root cause here.
- B
NAT is not configured on the policy
Why wrong: Network Address Translation (NAT) on a FortiGate policy is only required for traffic that must be source-translated, usually when moving between zones, such as internal to external. For internal-to-internal traffic traversing the FortiGate, the source and destination addresses are private and routable within the organization, so no translation is necessary. The absence of NAT would not cause packets to be dropped; the firewall would still forward the traffic if routes exist, because NAT is not a prerequisite for packet forwarding on internal paths.
- C
The firewall does not have a route to the 10.0.0.0/8 network
The firewall must perform a route lookup for the destination (10.0.0.0/8) after receiving the traffic on the ingress interface, and if no matching route or default route exists, the packet is dropped before the firewall policy is even evaluated. Even a policy that explicitly allows the traffic cannot compensate for a missing route, because routing and firewall policy checks are independent sequential steps in the FortiGate packet flow. The administrator's verification of policy order and status would not uncover this issue, making a missing route a plausible and common cause of the reported failure.
- D
The policy is disabled
Why wrong: A disabled firewall policy on FortiGate is not loaded into the policy lookup engine, so traffic that would normally match it instead falls through to the next matching policy or is blocked by the implicit deny rule. However, the administrator has already confirmed that the policy is in an enabled state, so this cannot be the cause. Additionally, a disabled policy would typically result in a total lack of session setup or a 'policy denied' message in the logs, rather than a specific routing failure.