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.
SNATsets the source IP address of packets to a specified IP and does not dynamically look up the IP of the outgoing interface. Therefore,SNATis faster than masquerading. UseSNATif 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 natCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Add the
preroutingandpostroutingchains 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 thepreroutingchain, thenftablesframework requires this chain to match incoming packet replies.Note that you must pass the--option to thenftcommand to avoid that the shell interprets the negative priority value as an option of thenftcommand. - Add a rule to the
postroutingchain that matches outgoing packets on theens3interface:nft add rule nat postrouting oifname "ens3" masquerade
# nft add rule nat postrouting oifname "ens3" masqueradeCopy 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 natCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Add the
preroutingandpostroutingchains 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 thepreroutingchain, thenftablesframework requires this chain to match outgoing packet replies.Note that you must pass the--option to thenftcommand to avoid that the shell interprets the negative priority value as an option of thenftcommand. - Add a rule to the
postroutingchain that replaces the source IP of outgoing packets throughens3with192.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.1Copy 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 natCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Add the
preroutingandpostroutingchains 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, thenftablesframework requires this chain to match outgoing packet replies.Note that you must pass the--option to thenftcommand to avoid that the shell interprets the negative priority value as an option of thenftcommand. - Add a rule to the prerouting chain that redirects incoming traffic on the
ens3interface 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.1Copy 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
ens3interface used dynamic IP addresses, add a masquerading rule:nft add rule nat postrouting oifname "ens3" masquerade
# nft add rule nat postrouting oifname "ens3" masqueradeCopy to Clipboard Copied! Toggle word wrap Toggle overflow - If the
ens3interface uses a static IP address, add aSNATrule. For example, if theens3uses 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.1Copy 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 natCopy 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 thenftcommand to avoid that the shell interprets the negative priority value as an option of thenftcommand. - 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 2222Copy 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”