The one rule that confuses every L1 candidate
Interview question: "Static NAT for the web server is configured. It pings from inside. Internet users can't reach it. Why?"
Wrong answers Ram has heard: "Firewall rule missing." "DNS not resolved." "ISP blocking 443." Sometimes one of those is true — but 9 out of 10 times the real cause is one of these three: missing Proxy-ARP entry, anti-spoofing rejecting pre-NAT IP, or rule-base order putting a manual hide rule in front of the static. Knowing which one in 30 seconds is what separates L1 from L2.
💡 The hotel front-desk analogy (the only mental model you need)
A 200-room Lucknow hotel has one phone number printed on Google. Guests in 200 rooms can all dial out — the front desk rewrites caller-ID to the hotel's main line and keeps a register: "Mr Sharma's call from Room 142 just placed → I'll route the reply back to Room 142". That's Hide NAT. Many to one. Outbound only. The world can't dial INTO a specific room.
Now imagine the same hotel publishes a dedicated counter for VIPs: "Counter 7, Mr Sharma". The counter has its own listed number. Anyone outside can dial Counter 7 directly and reach Mr Sharma. Mr Sharma can dial out from Counter 7 too. That's Static NAT. One to one. Both directions. Useful for publishing servers.
3 things you'll be tested on before we begin
Generated by SmartConsole from the NAT tab of an Object (Host / Network / Range). One checkbox → 1 or 2 rules in the NAT Rule Base, plus auto-Proxy-ARP, plus auto-route hint. Static creates 2 rules; Hide creates 1.
Hand-written rule: Original Src / Dst / Svc → Translated Src / Dst / Svc. Used for any-to-any, port translation, dual-NAT, and VPN exceptions. First match wins. Proxy-ARP is NOT auto-created (unless you set a global flag — sk114395).
Many → one (PAT). Source port re-mapped to track sessions. Inbound new connections are BLOCKED — only return traffic of a flow the inside host started. Protocols: TCP / UDP / ICMP only.
1:1 bidirectional. Outside hosts CAN initiate to the translated IP — publishing servers. Works with TCP, UDP, ICMP, IPsec, GRE, IGMP. Symmetric translation.
① Hide NAT — the rule every corporate network ships by default
500 laptops at Wipro share one ISP link with the public IP 203.0.113.5. Every outbound HTTPS/DNS/SMTP session gets PAT'd through that one IP. The firewall keeps a stateful table mapping (internal-IP, internal-port) → (203.0.113.5, rewritten-port). When Google replies to 203.0.113.5:62117, the firewall looks up the table and ships the reply back to Sneha's laptop on its original port.
To enable: open the Network object for 10.20.5.0/24 → NAT tab → tick "Add Automatic Address Translation rules" → Translation Method = Hide → Hide behind the Gateway's external IP (or a specific IP). Install Policy. Done.
What you can't do with Hide NAT
You can't publish a server. Hide NAT is one-way only — outbound flows initiate; inbound new connections die at the firewall. For that you need Static NAT (next section). And don't try to Hide-NAT IPsec or GRE — Hide only works for TCP/UDP/ICMP. For protocol pass-through use Static or IP Pool NAT.
▶ Watch a Hide-NAT'd packet leave the firewall
Sneha at Wipro browses Google. Source port re-mapped, source IP becomes the firewall's external IP. Press Play.
10.20.5.50 is checked against the interface topology. LAN interface lists 10.20.5.0/24 → match. Pass.
10.20.5.0/24 matches. Translation: source → 203.0.113.5, source port → re-mapped from PAT pool.
Rahul at TCS configures Hide NAT for the LAN. The CFO opens a ticket: "External vendor can't connect to my desktop's RDP from home". What's the fundamental issue?
② Static NAT — publishing a server, with the proxy-ARP catch
Static NAT maps one private IP to one public IP, both directions. When you configure it via the object's NAT tab, SmartConsole creates two auto-NAT rules:
- Outbound: internal → external rewrites source
10.50.5.10→203.0.113.10 - Inbound: external → internal rewrites destination
203.0.113.10→10.50.5.10
For inbound traffic to actually arrive, the upstream ISP router must believe the gateway "owns" 203.0.113.10. That's where Proxy-ARP comes in. With Automatic NAT, Proxy-ARP auto-installs when (a) the global Auto-ARP flag is enabled AND (b) the translated IP is in the same subnet as a gateway interface. Skip either and traffic vanishes.
You wrote a Manual NAT rule for a Static publish. The translated IP 203.0.113.10 is in the same subnet as the gateway's external interface 203.0.113.1. Without a Proxy-ARP entry, the upstream router ARPs for .10, gets no reply, traffic black-holes. Auto-NAT would have handled this; Manual NAT will NOT unless you set the global flag from sk114395 or manually add the ARP.
The Proxy-ARP fix (CLI, in Gaia)
add arp proxy ipv4-address 203.0.113.10 interface eth0 real-ipv4-address 203.0.113.1 save config
fw ctl arp proxy 203.0.113.10 (00:1c:7f:00:00:01) on eth0
▶ Watch an inbound Static-NAT'd packet reach the server
External user reaches https://webapp.infosys.in. DNS resolves to 203.0.113.10. Press Play to see the destination get rewritten.
122.176.45.89 checked against external-interface topology. Internet sources are expected here → Pass.
203.0.113.10 → 10.50.5.10. Destination will be rewritten at egress to DMZ.
10.50.5.10 (real IP, not public), svc=HTTPS → Accept.
Priya configured Static NAT (Manual rule) to publish a DMZ server. External pings to the public IP get no reply, even though the policy rule shows Accept. What's the first thing to check?
③ The 5-tier NAT Rule Base order (CCSA's favourite question)
When both Auto and Manual NAT exist, the gateway evaluates rules in this exact order:
A.S → A.H → A.S → A.H → Manual. Hindi/Hinglish memory cue. Yes, it's silly. Yes, you'll remember it five years from now.
The L1 trap: someone writes a Manual Hide rule for a network and expects it to override an Auto Static for a host inside that network. It doesn't. Auto Static for the host (tier 1) fires before Manual (tier 5). The fix is to either convert the auto rule to manual (so everything is in tier 5 and order is visible), or exclude the host from the manual rule's source range.
The 4 NAT methods compared (cheat-sheet)
1:1 bidirectional. Both sides initiate. Works with TCP/UDP/ICMP/IPsec/GRE/IGMP. Publishing servers (DMZ web, mail, SAP).
Many → gateway's own external IP. Cheapest outbound NAT. Inbound-only blocked. Default lab choice.
Many → a chosen public IP (not the GW IP). Use when ISP gave a dedicated outbound IP for logging/reputation. Needs Proxy-ARP or upstream route.
Many → pool of public IPs (round-robin). Bidirectional. Supports IPsec/GRE/IGMP. MEP VPN, X11 back-connections, one-conn-per-IP protocols.
④ The troubleshooting playbook — fw monitor stages
The most powerful NAT debug tool on Check Point is fw monitor. It captures packets at four inspection points relative to the firewall kernel:
i (small i) — pre-inbound : before FW VM, ingress side. Original src/dst. I (cap I) — post-inbound : after FW VM, ingress. Post-DNAT visible from here. o (small o) — pre-outbound : before FW VM, egress. Pre-SNAT. O (cap O) — post-outbound: after FW VM, egress. Post-SNAT visible only here.
What gets rewritten where:
- Destination NAT happens between
iandI. So atIand onwards you see the post-DNAT destination IP. - Source NAT happens between
oandO. So only atOdo you see the post-SNAT source IP. - At
iandoyou see the original (pre-NAT) addresses on both sides.
fwaccel off # only if you need to see SecureXL flows (R80.20+ usually unnecessary) fw monitor -e 'accept host(10.50.5.10);' -m iIoO -o /var/log/nat_debug.cap fwaccel on
[vs_0][fw_2] eth0:i[60]: 122.176.45.89 -> 203.0.113.10 (TCP) [vs_0][fw_2] eth0:I[60]: 122.176.45.89 -> 10.50.5.10 (TCP) ← post-DNAT [vs_0][fw_2] eth1:o[60]: 122.176.45.89 -> 10.50.5.10 (TCP) [vs_0][fw_2] eth1:O[60]: 122.176.45.89 -> 10.50.5.10 (TCP) ← egress to DMZ
Karthik runs fw monitor -m iIoO for an outbound flow and sees the original LAN IP at every stage — no SNAT. The NAT rule clearly exists and is enabled. Most likely cause?
fwaccel off) or upgrade — R80.20+ fw monitor sees SXL packets natively.Anti-spoofing + NAT — the trap that sinks 30% of static-NAT debugs
Anti-spoofing runs BEFORE NAT on ingress. It checks the source IP of the packet as it arrives — i.e. the pre-NAT (original) source. So the interface's topology must list the pre-NAT networks that legitimately arrive on that interface.
The fail pattern: you publish a server with Static NAT 10.50.5.10 → 203.0.113.10 on DMZ interface. Then the inside DMZ topology gets set to "Network defined by gateway IP and Net Mask" which somehow now includes 203.0.113.0/24 instead of 10.50.5.0/24. Anti-spoofing sees inbound traffic with src=122.176.45.89, says "not in my DMZ topology", drops. Log reason: Address spoofing.
Put the post-NAT (public) range behind the internal interface? Anti-spoofing drops every connection from the inside that just got its source NAT'd. The right answer is to list the pre-NAT internal subnets in the topology — Anti-spoofing runs on original addresses.
NAT-in-VPN — the checkbox most engineers miss
You build a site-to-site VPN. Tunnel comes up. Phase 1 + Phase 2 success. But traffic doesn't cross — peer firewall logs "according to the policy the packet should not have been decrypted". Why? Because your LAN traffic is getting Hide-NAT'd before entering the tunnel, and the VPN encryption domain on the peer expects to see the original 10.x address, not your Hide-NAT'd public IP.
Fix: in the VPN community Advanced → tick "Disable NAT inside the VPN community". Now the gateway skips Hide-NAT for traffic destined to peers in this community. Original IPs reach the peer; their encryption domain matches; traffic flows.
"Disable NAT inside the VPN community" applies to Hide NAT only. If you have Auto Static NAT on a host, it still NATs in-tunnel. For dual-NAT scenarios (overlapping LANs between peers) you'll need Manual NAT rules with explicit "inside community" conditions.
🤖 Ask the AI Tutor
Tap any question — instant context-aware answer drawn from this lesson + Check Point R81+ docs + CheckMates threads. No login.
Pre-curated answers from Check Point R81.20 admin guide + CheckMates + Ram's L3 production notes. For deeper / live questions, paste your output into chat.techclick.in.
The 5 mistakes that cost L1 candidates the interview
Upstream router ARPs for the NAT IP, gets silence, traffic black-holes. Always add the proxy-ARP entry or enable the sk114395 flag.
Anti-spoofing runs pre-NAT. List the original internal subnets in the topology, not the public translated range.
NAT rule base order — Auto tiers 1–4 evaluate before Manual tier 5. Convert all to Manual if you need explicit order control.
"Disable NAT inside the VPN community" not ticked → Hide NAT rewrites tunnel traffic → peer rejects on encryption-domain mismatch.
Existing connections keep old translation. Only new flows pick up the change. Flush via fw tab -t fwx_alloc -x only in a maintenance window.
📝 Check your understanding — 10 questions, 70% to pass
Q1–Q3 above already count. Below are Q4 to Q10. Score saves to your profile.
What is the locked evaluation order of the Check Point NAT Rule Base?
A site-to-site VPN's tunnel is UP (Phase 1 + 2 OK) but no traffic crosses. Peer logs say "packet should not have been decrypted". Encryption domains on both sides look correct. What's the most likely cause?
Sneha publishes a server with Static NAT. External hosts can ping the gateway's external IP but get no reply when pinging the published NAT IP. Logs show no drop entries. Where is traffic dying?
fw ctl arp.Aditya runs fw monitor -m iIoO to watch an inbound published-server flow. At which inspection point will he FIRST see the destination IP rewritten from the public to the internal IP?
i and I. So at I and onwards you see the post-DNAT destination. (a) shows the original; (c) and (d) are egress — they'll show the same post-DNAT dst plus eventual SNAT changes.Priya wrote a Manual Hide rule for 10.20.0.0/16 → public IP X. She expects all LAN hosts to egress with IP X. But host 10.20.5.10 (which has an Auto Static rule from a previous publishing exercise) still egresses with its own public IP Y. Why?
A partner needs to reach an internal SAP server with full bidirectional TCP, UDP, plus an IPsec tunnel for production data replication. Which NAT method is right and why?
An MEP VPN design needs each remote satellite to terminate on either of two HA Center gateways. Returning traffic must be source-symmetric (same IP that initiated reads the reply). Best NAT method on the Center side?
Next up — Check Point Site-to-Site IPsec VPN
You can now read which NAT rule fired and where Proxy-ARP died. Next: IKEv1/v2, Star vs Mesh, VPN domain mismatches, and the vpn debug ikeon playbook. Coming in the next blog drop.
Sources cited inline
- R81 Admin Guide — Configuring the NAT Policy
- R81 — Automatic and Proxy ARP
- R81 — NAT and Anti-Spoofing
- R81 — Disabling NAT in a VPN Tunnel
- R81 CLI Reference — fw monitor
- sk30197 — Proxy ARP for Manual NAT
- sk114395 — Auto Proxy ARP with Manual NAT Rules
- sk98989 — Ordering of Automatic NAT Rules
- CheckMates — A Primer on Anti-Spoofing
- CCSA R81.20 (156-215.81.20) Syllabus