Ce contenu n'est pas disponible dans la langue sélectionnée.
6.3. Configuring NAT using nftables
nftables
, you can configure the following network address translation (NAT
) types:
- Masquerading
- Source NAT (
SNAT
) - Destination NAT (
DNAT
) - Redirect
6.3.1. The different NAT types: masquerading, source NAT, destination NAT, and redirect Copier lienLien copié sur presse-papiers!
NAT
) types:
Masquerading and source NAT (SNAT)
NAT
types to change the source IP address of packets. For example, Internet Service Providers do not route private IP ranges, such as 10.0.0.0/8
. If you use private IP ranges in your network and users should be able to reach servers on the Internet, map the source IP address of packets from these ranges to a public IP address.
SNAT
are very similar. The differences are:
- Masquerading automatically uses the IP address of the outgoing interface. Therefore, use masquerading if the outgoing interface uses a dynamic IP address.
SNAT
sets the source IP address of packets to a specified IP and does not dynamically look up the IP of the outgoing interface. Therefore,SNAT
is faster than masquerading. UseSNAT
if the outgoing interface uses a fixed IP address.
Destination NAT (DNAT)
NAT
type to route incoming traffic to a different host. For example, if your web server uses an IP address from a reserved IP range and is, therefore, not directly accessible from the Internet, you can set a DNAT
rule on the router to redirect incoming traffic to this server.
Redirect
6.3.2. Configuring masquerading using nftables Copier lienLien copié sur presse-papiers!
nftables
automatically uses the new IP when replacing the source IP.
ens3
interface to the IP set on ens3
.
Procedure 6.9. Configuring masquerading using nftables
- Create a table:
nft add table nat
# nft add table nat
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Add the
prerouting
andpostrouting
chains to the table:nft -- add chain nat prerouting { type nat hook prerouting priority -100 \; } nft add chain nat postrouting { type nat hook postrouting priority 100 \; }
# nft -- add chain nat prerouting { type nat hook prerouting priority -100 \; } # nft add chain nat postrouting { type nat hook postrouting priority 100 \; }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Important
Even if you do not add a rule to theprerouting
chain, thenftables
framework requires this chain to match incoming packet replies.Note that you must pass the--
option to thenft
command to avoid that the shell interprets the negative priority value as an option of thenft
command. - Add a rule to the
postrouting
chain that matches outgoing packets on theens3
interface:nft add rule nat postrouting oifname "ens3" masquerade
# nft add rule nat postrouting oifname "ens3" masquerade
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.3.3. Configuring source NAT using nftables Copier lienLien copié sur presse-papiers!
SNAT
) enables you to change the IP of packets sent through an interface to a specific IP address.
ens3
interface to 192.0.2.1
.
Procedure 6.10. Configuring source NAT using nftables
- Create a table:
nft add table nat
# nft add table nat
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Add the
prerouting
andpostrouting
chains to the table:nft -- add chain nat prerouting { type nat hook prerouting priority -100 \; } nft add chain nat postrouting { type nat hook postrouting priority 100 \; }
# nft -- add chain nat prerouting { type nat hook prerouting priority -100 \; } # nft add chain nat postrouting { type nat hook postrouting priority 100 \; }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Important
Even if you do not add a rule to theprerouting
chain, thenftables
framework requires this chain to match outgoing packet replies.Note that you must pass the--
option to thenft
command to avoid that the shell interprets the negative priority value as an option of thenft
command. - Add a rule to the
postrouting
chain that replaces the source IP of outgoing packets throughens3
with192.0.2.1
:nft add rule nat postrouting oifname "ens3" snat to 192.0.2.1
# nft add rule nat postrouting oifname "ens3" snat to 192.0.2.1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Additional resources
- For more information, see Section 6.6.2, “Forwarding incoming packets on a specific local port to a different host”
6.3.4. Configuring destination NAT using nftables Copier lienLien copié sur presse-papiers!
NAT
enables you to redirect traffic on a router to a host that is not directly accessible from the Internet.
80
and 443
of the router to the host with the 192.0.2.1
IP address.
Procedure 6.11. Configuring destination NAT using nftables
- Create a table:
nft add table nat
# nft add table nat
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Add the
prerouting
andpostrouting
chains to the table:nft -- add chain nat prerouting { type nat hook prerouting priority -100 \; } nft add chain nat postrouting { type nat hook postrouting priority 100 \; }
# nft -- add chain nat prerouting { type nat hook prerouting priority -100 \; } # nft add chain nat postrouting { type nat hook postrouting priority 100 \; }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Important
Even if you do not add a rule to the postrouting chain, thenftables
framework requires this chain to match outgoing packet replies.Note that you must pass the--
option to thenft
command to avoid that the shell interprets the negative priority value as an option of thenft
command. - Add a rule to the prerouting chain that redirects incoming traffic on the
ens3
interface sent to port 80 and 443 to the host with the 192.0.2.1 IP:nft add rule nat prerouting iifname ens3 tcp dport { 80, 443 } dnat to 192.0.2.1
# nft add rule nat prerouting iifname ens3 tcp dport { 80, 443 } dnat to 192.0.2.1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Depending on your environment, add either a SNAT or masquerading rule to change the source address:
- If the
ens3
interface used dynamic IP addresses, add a masquerading rule:nft add rule nat postrouting oifname "ens3" masquerade
# nft add rule nat postrouting oifname "ens3" masquerade
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - If the
ens3
interface uses a static IP address, add aSNAT
rule. For example, if theens3
uses the 198.51.100.1 IP address:nft add rule nat postrouting oifname "ens3" snat to 198.51.100.1
# nft add rule nat postrouting oifname "ens3" snat to 198.51.100.1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Additional resources
- For more information, see Section 6.3.1, “The different NAT types: masquerading, source NAT, destination NAT, and redirect”
6.3.5. Configuring a redirect using nftables Copier lienLien copié sur presse-papiers!
redirect
feature is a special case of destination network address translation (DNAT) that redirects packets to the local machine depending on the chain hook.
Procedure 6.12. Configuring a redirect using nftables
- Create a table:
nft add table nat
# nft add table nat
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Add the prerouting chain to the table:
nft -- add chain nat prerouting { type nat hook prerouting priority -100 \; }
# nft -- add chain nat prerouting { type nat hook prerouting priority -100 \; }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Note that you must pass the--
option to thenft
command to avoid that the shell interprets the negative priority value as an option of thenft
command. - Add a rule to the prerouting chain that redirects incoming traffic on port 22 to port 2222:
nft add rule nat prerouting tcp dport 22 redirect to 2222
# nft add rule nat prerouting tcp dport 22 redirect to 2222
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Additional resources
- For more information, see Section 6.3.1, “The different NAT types: masquerading, source NAT, destination NAT, and redirect”