Working with NAT64 Rules
Overview
NAT64 translation (RFC 6146) lets IPv6-only client communicate with IPv4-only server using unicast UDP, TCP, or ICMP.
One of these:
-
A host with a networking stack that implements only IPv6.
-
A host with a networking stack that implements both IPv4 and IPv6 protocols, but with only IPv6 connectivity.
-
A host that runs an IPv6-only client application.
One of these:
-
A host with a networking stack that implements only IPv4.
-
A host with a networking stack that implements both IPv4 and IPv6 protocols, but with only IPv4 connectivity.
-
A host that runs an IPv4-only server application.
The translation of IP addresses is done by translating the packet headers according to the IP/ICMP Translation Algorithm defined in RFC 6145. The IPv4 addresses of IPv4 hosts are translated to and from IPv6 addresses using the algorithm defined in RFC 6052, and an IPv6 prefix assigned to the stateful NAT64 for this specific purpose.
|
Note - For information about DNS64, see RFC 6147. |
-
Performs N:M translation:
-
N must be greater than M
-
If M=1, performs a Hide NAT behind a single IPv4 address.
-
If M>1, performs a Hide NAT behind a range of IPv4 addresses.
-
-
Gives good IPv4 address preservation (multiplexed using ports).
-
Saves connection states and binding.
-
There are no requirements on the assignment of IPv6 addresses to IPv6 clients. Any mode of IPv6 address assignment is legitimate (Manual, DHCP6, SLAAC).
-
It is a scalable solution.
-
[IPv6 Network] --- (Internet) --- [Security Gateway Dedicated Check Point server that runs Check Point software to inspect traffic and enforce Security Policies for connected network resources.] --- [internal IPv4 Network]
Common use case for Content Providers. DNS64 is not needed.
-
[internal IPv6 Network] --- [Security Gateway] --- (Internet) --- [IPv4 Network]
Common use case for Carriers, ISPs, Enterprises. DNS64 is required.
-
[IPv6 Network] --- [Security Gateway] --- [IPv4 Network]
Common use case for Enterprises. DNS64 is required.
-
RFC 6144 - Framework for IPv4/IPv6 Translation
-
RFC 6146 - Stateful NAT64: Network Address and Protocol Translation from IPv6 Clients to IPv4 Servers
-
RFC 6052 - IPv6 Addressing of IPv4/IPv6 Translators
-
RFC 6145 - IP/ICMP Translation Algorithm
-
RFC 2428 - FTP Extensions for IPv6 and NATs
-
RFC 6384 - An FTP Application Layer Gateway (ALG) for IPv6-to-IPv4 Translation
Known Limitations for NAT64
NAT64 rules do not support:
-
VoIP traffic.
-
SSL de-multiplexer.
-
Security Gateway in HTTP Proxy mode.
-
IPS Check Point Software Blade on a Security Gateway that inspects and analyzes packets and data for numerous types of risks (Intrusion Prevention System). protection "HTTP Header Spoofing".
Example of NAT64 Translation Flow
[IPv6 Client] --- (interface) [Security Gateway] (internal) --- [IPv4 Server]
Where:
Item |
Description |
---|---|
IPv6 Client |
IPv6 real address is 1111:1111::0100/96 |
Security Gateway
|
IPv6 address is 1111:1111::1/96 |
Security Gateway
|
IPv4 address is 10.0.0.1/24 IPv6 address is 3333:4444::1/96 |
IPv4 Server |
IPv4 real address is 10.0.0.100/24 IPv6 NATed address is 1111:2222::0A00:0064/96 |
IPv6 NATed network |
IPv6 address of the network on the external Security Gateway side is 1111:2222::/96 These IPv6 addresses are used to translate the IPv4 address of the IPv4 Server to the IPv6 address |
IPv4 NATed network |
IPv4 address of the network on the internal Security Gateway side is 1.1.1.0/24 These IPv4 addresses are used to translate the IPv6 address of the IPv6 Client to the IPv4 address |
-
IPv6 Client opens an IPv6 connection to the NATed IPv6 address of the IPv4 Server:
From the IPv6 Client's IPv6 real address 1111:1111::0100 to the IPv4 Server's NATed IPv6 address 1111:2222::0A00:0064
Where:
The "1111:2222::" part is the NATed IPv6 subnet
The "0A00:0064" part is 10.0.0.100
-
Security Gateway performs these NAT translations:
-
Translate the IPv6 Client's source address from the real IPv6 address 1111:1111::0100 to the special concatenated source IPv6 address 0064:FF9B::0101:01X
Where:
The "0064:FF9B::" part is a well-known prefix reserved for NAT64 (as defined by the RFC)
The "0101:01XX" part is 1.1.1.X
-
Translate the IPv6 Client's source address from the special concatenated source IPv6 address 0064:FF9B::0101:01XX to the source IPv4 address 1.1.1.X
-
Translate the IPv6 Client's NATed destination address from the IPv6 address 1111:2222::0A00:0064 to the NATed destination IPv4 address 10.0.0.100
-
-
IPv4 Server receives this request connection as from the source IPv4 address 1.1.1.X to the destination IPv4 address 10.0.0.100
-
IPv4 Server replies to this connection from the source IPv4 address 10.0.0.100 to the destination IPv4 address 1.1.1.X
-
Security Gateway performs these NAT translations:
-
Translate the IPv4 Server's source real IPv4 address 10.0.0.100 to the source NATed IPv6 address 1111:2222::0A00:0064
-
Translate the IPv6 Client's NATed destination IPv4 address 1.1.1.X to the destination special concatenated IPv6 address 0064:FF9B::0101:01X
Where:
The "64:FF9B::" part is a well-known prefix reserved for NAT64 (as defined by the RFC)
The "0101:01XX" part is 1.1.1.X
-
Translate the IPv6 Client's destination special concatenated IPv6 address 0064:FF9B::0101:01XX to the destination IPv6 real address 1111:1111::0100
-
-
IPv6 Client receives this reply connection as from the source IPv6 address 1111:2222::0A00:0064 to the destination IPv6 address 1111:1111::0100
-
Request: [IPv6 Client] ---> [Security Gateway] ---> [IPv4 Server]
Field in packet
Original IPv6 packet
NATed IPv4 packet
Source IP
1111:1111::0100 / 96
1.1.1.X / 24
Destination IP
1111:2222::0A00:0064 / 96
10.0.0.100 / 24
-
Reply: [IPv6 Client] <--- [Security Gateway] <--- [IPv4 Server]
Field in packet
Original IPv4 packet
NATed IPv6 packet
Source IP
10.0.0.100 / 24
1111:2222::0A00:0064 / 96
Destination IP
1.1.1.X / 24
1111:1111::0100 / 96
Configuring NAT64
|
Note - In a Cluster Two or more Security Gateways that work together in a redundant configuration - High Availability, or Load Sharing., you must configure all the Cluster Members in the same way. |
Step |
Instructions |
||||||
---|---|---|---|---|---|---|---|
1 |
Make sure that an IPv6 address is assigned to the interface that connects to the destination IPv4 network, and the IPv6 network prefix length is equal to, or less than 96.
If such IPv6 address is not assigned yet, assign it now. For details, see the R81 Gaia Administration Guide - Chapter Network Management - Section Network Interfaces - Section Physical Interfaces. |
||||||
2 |
Make sure that the IPv6 routing is configured to send the traffic that is destined to the NATed IPv6 addresses (defined in the Original Destination column in the NAT64 rule Set of traffic parameters and other conditions in a Rule Base (Security Policy) that cause specified actions to be taken for a communication session.) through the interface that connects to the destination IPv4 network.
If such route does not already exist, add it in Gaia Clish. For details, see the R81 Gaia Administration Guide. Run these commands in Gaia Clish:
|
||||||
3 |
Make sure that the number of IPv6 CoreXL Performance-enhancing technology for Security Gateways on multi-core processing platforms. Multiple Check Point Firewall instances are running in parallel on multiple CPU cores. Firewall instances is equal to the number of IPv4 CoreXL Firewall instances.
Example output:
|
Define NAT64 rules as Manual NAT rules in the Access Control Policy.
Make sure that you add access rules that allow this NAT traffic.
-
Define a source IPv6 Network object.
This object represents the source IPv6 addresses, which you translate to source IPv4 addresses.
Procedure-
Click Objects menu > New Network.
-
In the Object Name field, enter the applicable name.
-
In the Comment field, enter the applicable text.
-
Click the General page of this object.
-
In the IPv4 section:
Do not enter anything.
-
In the IPv6 section:
-
In the Network address field, enter the IPv6 address of your IPv6 network, which you translate to source IPv4 addresses.
-
In the Prefix field, enter the prefix of your IPv6 network.
-
-
On the NAT page of this object:
Do not configure anything.
-
Click OK.
-
-
Define a translated destination IPv6 Network object with an IPv4-embedded IPv6 address, or a translated destination IPv6 Host object with a static IPv6 address.
This object represents the translated destination IPv6 address, to which the IPv6 sources connect.
Procedure-
Click Objects menu > New Network.
-
In the Object Name field, enter the applicable name.
-
In the Comment field, enter the applicable text.
-
Click the General page of this object.
-
In the IPv4 section:
Do not enter anything.
-
In the IPv6 section:
-
In the Network address field, enter the destination IPv4-embedded IPv6 address (also called IPv4-mapped IPv6 address), to which the IPv6 sources connect.
Such IPv6 address contains (from left to right) 80 "zero" bits, followed by 16 "one" bits, and then the 32 bits of the IPv4 address - 0:0:0:0:0:FFFF:X.Y.Z.W, where X.Y.Z.W are the four octets of the destination IPv4 address.
For example, for IPv4 network 192.168.3.0, the IPv4-embedded IPv6 address is 0:0:0:0:0:FFFF:192.168.3.0, or 0:0:0:0:0:FFFF:C0A8:0300. For more information, see RFC 6052.
These IPv4-embedded IPv6 addresses are published by an external DNS64 server.
-
In the Prefix field, enter the applicable IPv6 prefix.
Note - You can define IPv4-embedded IPv6 addresses only for these object types: Address Range, Network, and Host.
-
-
On the NAT page of this object:
Do not configure anything.
-
Click OK.
-
-
Define a translated source IPv4 Address Range object.
This object represents the translated source IPv4 addresses, to which you translate the original source IPv6 addresses.
Procedure-
Click Objects menu > More object types > Network Object > Address Range > New Address Range.
-
In the Object Name field, enter the applicable name.
-
In the Comment field, enter the applicable text.
-
Click the General page of this object.
-
In the IPv4 section:
-
In the First IP address field, enter the first IPv4 address of your IPv4 addresses range, to which you translate the source IPv6 addresses.
-
In the Last IP address field, enter the last IPv4 address of your IPv4 addresses range, to which you translate the source IPv6 addresses.
Notes:
-
This IPv4 addresses range must not use private IPv4 addresses (see RFC 1918 and > Global properties > Non Unique IP Address Range
-
This IPv4 addresses range must not be used on the IPv4 side of the network.
-
We recommend that you define a large IPv4 addresses range for more concurrent NAT64 connections.
-
-
In the IPv6 section:
Do not enter anything.
-
On the NAT page of this object:
Do not configure anything.
-
Click OK.
-
-
Create a Manual NAT64 rule.
Procedure-
From the left navigation panel, click Security Policies.
-
In the top Access Control section, click NAT.
-
Right-click on the Manual Lower Rules section title, and near the New Rule, click Above or Below.
Configure this Manual NAT64 rule:
Important - Some combinations of object types are not supported in the Original Source and Original Destination columns. See the summary table with the supported NAT rules at the bottom of this section.
-
In the Original Source column, add the IPv6 object for your original source IPv6 addresses.
In this rule column, NAT64 rules support only these types of objects:
-
*Any
-
Host with a static IPv6 address
-
Address Range with IPv6 addresses
-
Network with IPv6 address
-
-
In the Original Destination column, add a translated destination IPv6 object with an IPv4-embedded IPv6 address.
In this rule column, NAT64 rules support only these types of objects:
-
Host with a static IPv6 address
-
Address Range with IPv4-embedded IPv6 addresses
-
Network with an IPv4-embedded IPv6 address
-
-
In the Original Services column, you must leave the default Any.
-
In the Translated Source column, add the IPv4 Address Range object for your translated source IPv4 addresses range.
In this rule column, NAT64 rules support only these types of objects:
-
Host with a static IPv4 address, only if in the Original Source column you selected a Host with a static IPv6 address
-
Address Range with IPv4 addresses
-
-
In the Translated Source column, right-click the IPv4 Address Range object > click NAT Method > click Stateful NAT64:
-
The Translated Packet Destination column shows = Embedded IPv4 Address.
-
The 64 icon shows in both the Translated Source and Translated Destination columns.
In this rule column, NAT64 rule supports only these types of objects:
-
Host with a static IPv4 address, only if in the Original Source column you selected a Host with a static IPv6 address
-
Embedded IPv4 Address
-
-
In the Translated Services column, you must leave the default = Original.
-
-
Install the Access Control Policy.
-
-
Install the Access Control Policy.
To summarize, you must configure only these Manual NAT64 rules (rule numbers are for convenience only):
You can configure the additional settings that control the NAT64 translation mechanism.
These settings are compliant with RFC 6145.
|
Best Practice - We recommend that you change the default settings only if you are familiar with the technology. |
Procedure
-
Close all SmartConsole Check Point GUI application used to manage a Check Point environment - configure Security Policies, configure devices, monitor products and events, install updates, and so on. windows connected to the Management Server Check Point Single-Domain Security Management Server or a Multi-Domain Security Management Server..
-
Connect with Database Tool (GuiDBEdit Tool) (see sk13009) to the applicable Security Management Server Dedicated Check Point server that runs Check Point software to manage the objects and policies in a Check Point environment within a single management Domain. Synonym: Single-Domain Security Management Server. or Domain Management Server.
-
In the top left section, click Table > Global Properties > properties.
-
In the top right section, click firewall_properties.
-
In the bottom section, scroll to these Field Names:
-
nat64_add_UDP_checksum
-
nat64_avoid_PMTUD_blackhole
-
nat64_copy_type_of_service
-
nat64_error_message_on_dropped_packets
-
-
Right-click the applicable parameter in the Field Name column and click Edit.
-
Select the applicable Value (
true
, orfalse
) and click OK.Field Name
Description
nat64_add_UDP_checksum
This parameter controls whether the translator should calculate and add a valid UDP checksum value to a packet, if the packet checksum value is zero.
This is important because, by default, an IPv4 UDP packet with a checksum value of zero is dropped on the IPv6 side.
Default:
false
nat64_avoid_PMTUD_blackhole
This parameter controls whether to allow packet fragmentation on the IPv4 (destination) side during PMTU discovery.
Enable this setting if some equipment combinations cause PMTU discovery to fail.
Default:
false
nat64_copy_type_of_service
This parameter controls whether to copy the traffic Class Field to the Type Of Service field, and set the Type Of Service field in the translated packet to zero.
Default:
true
nat64_error_message_on_dropped_packets
This parameter controls whether to generate an audit log after a connection is closed.
For each closed connection, the log shows:
-
Connection information (source and destination IP address, source port, and service).
-
Translated source IP address and source port.
-
Start time and end time.
-
If the connection was closed because the connection expired, log shows additional information in the TCP End Reason field.
If this field does not show in the log, the connection was closed with a TCP RST, or with a TCP FIN, and did not expire.
Default:
true
-
-
Save the changes (click File > Save All).
-
Close the Database Tool (GuiDBEdit Tool).
-
Connect with the SmartConsole to the applicable Security Management Server or Domain Management Server.
-
Install the Access Control Policy.
Logging of NAT64 traffic
In the Security Gateway log for NAT64 connection, the source and destination IPv6 addresses show in their original IPv6 format.
To identify a NAT64 entry, in the Log Details window, look at the More section.
Field in Log |
Description |
---|---|
Xlate (NAT) Source IP |
Shows the translated source IPv4 address, to which the Security Gateway translated the original source IPv6 address |
Xlate (NAT ) Destination IP |
Shows the translated destination IPv4 address, to which the Security Gateway translated the original destination IPv6 address |
More |
Identifies the entry as NAT64 traffic ( |