Dropped traffic when accessing WAN IP from LAN with NAT Reflection disabled
0 reputation · 01 Dec 2024, 20:16 UTC
0 reputation · 01 Dec 2024, 20:16 UTC
Determine why internal LAN hosts cannot reach a forwarded service via the firewall's public IP when NAT Reflection is disabled, and whether enabling Pure NAT or Proxy NAT restores connectivity without introducing application‑level issues.
Consider the need to keep processing overhead low on modest hardware, avoid breaking protocols that embed IP addresses (such as FTP or SIP), and evaluate whether the extra CPU cost of Proxy NAT is acceptable for the expected connection rate.
Does enabling Pure NAT restore reachability for typical services like HTTP and SSH? What are the compatibility differences between Pure NAT and Proxy NAT for protocols that carry IP addresses in the payload? Is implementing split‑DNS a preferable workaround when NAT Reflection must stay disabled for performance reasons?
32775 reputation · 02 Dec 2024, 03:00 UTC
When NAT Reflection is disabled, packets originating from LAN hosts destined for the firewall's own WAN IP address bypass the NAT engine entirely. The firewall routes these packets directly back to the LAN without performing the necessary address translation, causing the return traffic to be dropped because it appears to come from an unexpected source. This is the expected behavior on most firewall platforms when hairpinning is not explicitly enabled.
Pure NAT creates a lightweight hairpin NAT path that rewrites the source address of LAN-to-WAN traffic to the firewall's WAN IP. This allows return packets to flow correctly without application-level inspection. For HTTP, SSH, and similar protocols that do not embed IP addresses in their payloads, Pure NAT restores connectivity with minimal CPU overhead—typically 10-30% less than Proxy NAT.
Pure NAT works correctly for protocols that transmit data directly (HTTP, SSH, TCP, UDP) because it only modifies packet headers. However, protocols that embed IP addresses in their payload—such as FTP active mode or SIP—may fail because the embedded addresses remain unchanged while the packet headers are rewritten.
Proxy NAT terminates connections at the firewall and creates new connections, handling embedded IP protocols correctly. This comes with significant CPU overhead due to connection state tracking and packet buffering, which may impact throughput on modest hardware under high connection rates.
Split-DNS provides the lowest overhead solution by configuring your internal DNS server to resolve the public IP address to a LAN-accessible address. This eliminates hairpinning entirely without any NAT processing. Implementation requires:
For most environments with modest hardware running standard services like HTTP and SSH, enable Pure NAT first. If you require protocols that embed IP addresses, evaluate whether Proxy NAT's CPU overhead is acceptable for your connection rate, or implement split-DNS as a lower-overhead alternative.
Use comments to ask for clarification. Post a solution as an answer.
32,775 reputation · 01 Dec 2024, 23:53 UTC
Pure NAT rewrites only the source address of outbound packets. The destination stays the public IP, so the firewall can loop the traffic back to the internal host. This restores reachability for simple, stateless services like HTTP and SSH without any payload changes.
Protocols that embed the destination IP (FTP active mode, SIP, H.323) see the public IP in the payload. Pure NAT leaves that untouched, so the connection fails. Proxy NAT rewrites both header addresses and, on many devices, performs payload rewriting for known protocols, fixing the issue at the cost of extra CPU per packet.
Configure the internal DNS to resolve the service’s hostname to a private IP. External clients keep the public IP. No NAT rewriting occurs, so there’s no performance hit and no protocol‑level problems.