- Products
- Learn
- Local User Groups
- Partners
- More
The Great Exposure Reset
24 February 2026 @ 5pm CET / 11am EST
AI Security Masters E4:
Introducing Cyata - Securing the Agenic AI Era
AI Security Masters E3:
AI-Generated Malware
CheckMates Go:
CheckMates Fest
Hello all,
I'm very confused about the packet flow in the CP security gateway .. particularly in between Access policy and NAT policy. Referred few documents and these AI models creating lot of confusion.
when a packet arrives at interface, after checking for VPN decryption / Secure XL ( if applicable) Access policy applied first and DNAT will be next ? or DNAT first and policy look up next ? Can some one please clarify..
I could see NAT happens at two instants, firstly it is DNAT and then after content inspection/ taking routing decision SNAT happens.. why can't both happen at a time? any reason ? Please explain
Maybe Heiko can helP
The firewall kernel attaches at the ingress/egress of kernel networking.
The OS is ultimately responsible for routing the packet.
If you don't do DNAT before OS routing, then you have to add a static route for the pre-NAT address.
If you prefer this old behavior (which dates back decades at this point), there is a global properties setting to adjust it:
On top of what was already provided, see if this helps.
Great explanation by Tim Hall.
https://community.checkpoint.com/t5/General-Topics/Check-Point-Inspection-points-iIoO/td-p/34938
FWIW, here is AI explanation.
**************************************
You’re not alone—Check Point’s packet path is not the same mental model as many other firewalls, and a lot of “AI summaries” mix vendors/versions and end up contradicting themselves.
Below is the practical, Check Point–accurate way to think about it (for “normal” firewalling; acceleration changes where things happen, but the logical order is the same).
Timothy Hall states it directly: “the network policy layer (‘firewall policy’) is referenced prior to the NAT policy” [community….kpoint.com]
And in his i/I/o/O breakdown (unaccelerated traffic), he lists Access Control policy evaluation and only then Destination IP NAT (DNAT) on the inbound side [community….kpoint.com]
So the simplified sequence for a new connection is:
This is not “opinion”—it’s consistent with CheckMates material and how the kernel chain is designed. [community….kpoint.com], [community….kpoint.com]
The best mental model is Check Point’s common troubleshooting capture points:
Timothy Hall’s breakdown (for unaccelerated / F2F path) is:
Most enforcement happens here, including:
Important nuance: these four points are mainly meaningful for non-accelerated traffic; accelerated flows can take shorter paths. [community….kpoint.com]
Because the OS routing table is what actually forwards packets, and it needs to route using the post-DNAT destination in most designs.
PhoneBoy (Check Point admin) explains the key reason plainly:
If DNAT is not done before OS routing, you’d need static routes for the pre-NAT destination. [community….kpoint.com]
So even though policy is evaluated before NAT, DNAT still happens before the routing lookup step (which is later, between I and o). [community….kpoint.com], [community….kpoint.com]
Also, Check Point notes there’s a Global Properties option to adjust legacy behavior (i.e., when DNAT vs routing occurs). [community….kpoint.com]
From the same iIoO breakdown:
That ordering exists for real functional reasons:
If destination is translated to an internal host/network, the kernel must hand the packet to Gaia routing with the real destination, otherwise routing might be wrong (or require special routes). [community….kpoint.com], [community….kpoint.com]
Many SNAT designs are “hide behind egress interface address” or depend on which uplink is chosen. That decision can’t be final until routing/forwarding is known (which occurs between I and o). [community….kpoint.com]
Check Point exposes this in the kernel chain/module concept (what fw ctl chain shows). The CLI guide explains that fw ctl chain lists the inspection modules traffic passes through.
In the example output, you can literally see separate inbound/outbound processing modules, including things like fw VM inbound and outbound NAT-related modules (e.g., “vpn nat outbound” in the sample chain). [sc1.checkpoint.com]
So: two-stage NAT is not arbitrary—it aligns with the OS routing dependency and the inbound/outbound chain design. [community….kpoint.com], [community….kpoint.com], [sc1.checkpoint.com]
You might think:
“If policy happens before NAT, how does inbound traffic to the public IP match a rule that uses the private server object?”
Timothy Hall explains why:
This is one of the biggest sources of “it works but I don’t understand why.”
Inbound packet arrives (ethX)
fw ctl chain to see the enabled chain modules and their order (will vary by blades/features). Check Point documents this command as showing “inspection Chain Modules, through which the traffic passes.” [sc1.checkpoint.com]fw monitor at i/I/o/O to observe where NAT/decrypt/routing effects become visible (works best for non-accelerated flows, as noted). [community….kpoint.com]If you share one concrete example (src/dst/service + NAT rule + access rule), I can walk through exactly which object matches where and why, and what you should see at i/I/o/O in fw monitor.
Maybe Heiko can helP
The firewall kernel attaches at the ingress/egress of kernel networking.
The OS is ultimately responsible for routing the packet.
If you don't do DNAT before OS routing, then you have to add a static route for the pre-NAT address.
If you prefer this old behavior (which dates back decades at this point), there is a global properties setting to adjust it:
On top of what was already provided, see if this helps.
Great explanation by Tim Hall.
https://community.checkpoint.com/t5/General-Topics/Check-Point-Inspection-points-iIoO/td-p/34938
FWIW, here is AI explanation.
**************************************
You’re not alone—Check Point’s packet path is not the same mental model as many other firewalls, and a lot of “AI summaries” mix vendors/versions and end up contradicting themselves.
Below is the practical, Check Point–accurate way to think about it (for “normal” firewalling; acceleration changes where things happen, but the logical order is the same).
Timothy Hall states it directly: “the network policy layer (‘firewall policy’) is referenced prior to the NAT policy” [community….kpoint.com]
And in his i/I/o/O breakdown (unaccelerated traffic), he lists Access Control policy evaluation and only then Destination IP NAT (DNAT) on the inbound side [community….kpoint.com]
So the simplified sequence for a new connection is:
This is not “opinion”—it’s consistent with CheckMates material and how the kernel chain is designed. [community….kpoint.com], [community….kpoint.com]
The best mental model is Check Point’s common troubleshooting capture points:
Timothy Hall’s breakdown (for unaccelerated / F2F path) is:
Most enforcement happens here, including:
Important nuance: these four points are mainly meaningful for non-accelerated traffic; accelerated flows can take shorter paths. [community….kpoint.com]
Because the OS routing table is what actually forwards packets, and it needs to route using the post-DNAT destination in most designs.
PhoneBoy (Check Point admin) explains the key reason plainly:
If DNAT is not done before OS routing, you’d need static routes for the pre-NAT destination. [community….kpoint.com]
So even though policy is evaluated before NAT, DNAT still happens before the routing lookup step (which is later, between I and o). [community….kpoint.com], [community….kpoint.com]
Also, Check Point notes there’s a Global Properties option to adjust legacy behavior (i.e., when DNAT vs routing occurs). [community….kpoint.com]
From the same iIoO breakdown:
That ordering exists for real functional reasons:
If destination is translated to an internal host/network, the kernel must hand the packet to Gaia routing with the real destination, otherwise routing might be wrong (or require special routes). [community….kpoint.com], [community….kpoint.com]
Many SNAT designs are “hide behind egress interface address” or depend on which uplink is chosen. That decision can’t be final until routing/forwarding is known (which occurs between I and o). [community….kpoint.com]
Check Point exposes this in the kernel chain/module concept (what fw ctl chain shows). The CLI guide explains that fw ctl chain lists the inspection modules traffic passes through.
In the example output, you can literally see separate inbound/outbound processing modules, including things like fw VM inbound and outbound NAT-related modules (e.g., “vpn nat outbound” in the sample chain). [sc1.checkpoint.com]
So: two-stage NAT is not arbitrary—it aligns with the OS routing dependency and the inbound/outbound chain design. [community….kpoint.com], [community….kpoint.com], [sc1.checkpoint.com]
You might think:
“If policy happens before NAT, how does inbound traffic to the public IP match a rule that uses the private server object?”
Timothy Hall explains why:
This is one of the biggest sources of “it works but I don’t understand why.”
Inbound packet arrives (ethX)
fw ctl chain to see the enabled chain modules and their order (will vary by blades/features). Check Point documents this command as showing “inspection Chain Modules, through which the traffic passes.” [sc1.checkpoint.com]fw monitor at i/I/o/O to observe where NAT/decrypt/routing effects become visible (works best for non-accelerated flows, as noted). [community….kpoint.com]If you share one concrete example (src/dst/service + NAT rule + access rule), I can walk through exactly which object matches where and why, and what you should see at i/I/o/O in fw monitor.
The AI response includes stuff from this thread, interestingly enough.
Even quotes me 🙂
Even all AI engines know who is the TRUE LEGEND 😉
Most AI responses I've seen about topics such as these have been pretty bad, but this one was...actually...100% accurate?
Hmm, maybe there is something to this AI thing after all. 😀
Haha...its actually MS Copilot AI gpt 5.2 version, "think deeper" setting...guess it outsmarts others? lol
Thanks for response. I got into another doubt/ confusion in between Anti spoofing and VPN decryption. I was practicing site to site VPN in the lab env. I generated traffic from 192.168.197.10 ip to 192.168.190.1 IP, I configured ESP packet IP address to use main address i.e gateway's management, so ESP packet arrived at management interface eth0 instead of my expected interface eth1. That packet was dropped by gateway showing the reason address spoofing. So here Decryption was done first and then antispoofing done next on the actual packet and that's the reason why packet with internal LAN address arriving on incorrect interface has been dropped for address spoofing reason. I changed the ESP packet address to Interface IP of gateway, so when packet arrived at gateway 2, gateway2 accepted and decrypted it
Here my query is.. Decryption first and then antipsoofing next? Is Antispoofing performed twice on both headers ie ESP and actual packet header? first on ESP packet header with main IP or gateway's Interface IP and then after decryption, second time on actual packet with LAN IP address. Or else Antispoofing happens only once after decryption on actual packet ?
Anti-spoofing checks both the encrypted and unencrypted packet, to the best of my knowledge.
Considering you were using the eth0 IP as the main IP for VPN and both gateways are on that same subnet, surely that packet did not violate anti-spoofing.
However, once the packet was decrypted, the source IP didn't match the anti-spoofing configuration for eth0...thus the "address spoofing" message.
I believe anti-spoofing would always take precedence.
Leaderboard
Epsum factorial non deposit quid pro quo hic escorol.
| User | Count |
|---|---|
| 50 | |
| 40 | |
| 13 | |
| 13 | |
| 12 | |
| 11 | |
| 11 | |
| 8 | |
| 7 | |
| 7 |
Thu 19 Feb 2026 @ 03:00 PM (EST)
Americas Deep Dive: Check Point Management API Best PracticesMon 23 Feb 2026 @ 11:00 AM (EST)
Latest updates on Quantum Spark including R82 features and Spark Management zero touch - AMERTue 24 Feb 2026 @ 10:00 AM (CET)
Latest updates on Quantum Spark including R82 features and Spark Management zero touch - EMEAThu 19 Feb 2026 @ 03:00 PM (EST)
Americas Deep Dive: Check Point Management API Best PracticesMon 23 Feb 2026 @ 11:00 AM (EST)
Latest updates on Quantum Spark including R82 features and Spark Management zero touch - AMERTue 24 Feb 2026 @ 10:00 AM (CET)
Latest updates on Quantum Spark including R82 features and Spark Management zero touch - EMEAFri 06 Mar 2026 @ 08:00 AM (COT)
Check Point R82 Hands‑On Bootcamp – Comunidad DOJO PanamáAbout CheckMates
Learn Check Point
Advanced Learning
YOU DESERVE THE BEST SECURITY