Provided by: shorewall_5.2.8-6_all 

NAME
nat - Shorewall one-to-one NAT file
SYNOPSIS
/etc/shorewall/nat
DESCRIPTION
This file is used to define one-to-one Network Address Translation (NAT).
Warning
If all you want to do is simple port forwarding, do NOT use this file. See
https://shorewall.org/FAQ.htm#faq1[1]. Also, in many cases, Proxy ARP (shorewall-proxyarp[2](5)) or
Proxy-NDP(shorewall6-proxyndp[3](5)) is a better solution that one-to-one NAT.
The columns in the file are as follows (where the column name is followed by a different name in
parentheses, the different name is used in the alternate specification syntax).
EXTERNAL - {address|?COMMENT}
External IP Address - this should NOT be the primary IP address of the interface named in the next
column and must not be a DNS Name.
If you put ?COMMENT in this column, the rest of the line will be attached as a comment to the
Netfilter rule(s) generated by the following entries in the file. The comment will appear delimited
by "/* ... */" in the output of "shorewall show nat"
To stop the comment from being attached to further rules, simply include ?COMMENT on a line by
itself.
INTERFACE - interfacelist[:[digit]]
Interfaces that have the EXTERNAL address. If ADD_IP_ALIASES=Yes in shorewall.conf[4](5), Shorewall
will automatically add the EXTERNAL address to this interface. Also if ADD_IP_ALIASES=Yes, you may
follow the interface name with ":" and a digit to indicate that you want Shorewall to add the alias
with this name (e.g., "eth0:0"). That allows you to see the alias with ifconfig. That is the only
thing that this name is good for -- you cannot use it anywhere else in your Shorewall configuration.
Each interface must match an entry in shorewall-interfaces[5](5). Shorewall allows loose matches to
wildcard entries in shorewall-interfaces[5](5). For example, ppp0 in this file will match a
shorewall-interfaces[5](5) entry that defines ppp+.
If you want to override ADD_IP_ALIASES=Yes for a particular entry, follow the interface name with ":"
and no digit (e.g., "eth0:").
INTERNAL - address
Internal Address (must not be a DNS Name).
ALLINTS - [Yes|No]
If Yes or yes, NAT will be effective from all hosts. If No or no (or left empty) then NAT will be
effective only through the interface named in the INTERFACE column.
This column was formerly labelled ALL INTERFACES.
LOCAL - [Yes|No]
If Yes or yes, NAT will be effective from the firewall system
RESTRICTIONS
DNAT rules always preempt one-to-one NAT rules. This has subtile consequences when there are sub-zones on
an interface. Consider the following:
/etc/shorewall/zones:
#ZONE TYPE OPTIONS IN OUT
# OPTIONS OPTIONS
fw firewall
net ipv4
loc ipv4
smc:net ipv4
/etc/shorewall/interfaces:
#ZONE INTERFACE OPTIONS
net eth0 dhcp,tcpflags,nosmurfs,routefilter,logmartians,sourceroute=0
loc eth1 tcpflags,nosmurfs,routefilter,logmartians
/etc/shorewall/hosts:
#ZONE HOST(S) OPTIONS
smc eth0:10.1.10.0/24
/etc/shorewall/nat:
#EXTERNAL INTERFACE INTERNAL ALLINTS LOCAL
10.1.10.100 eth0 172.20.1.100
Note that the EXTERNAL address is in the smc zone.
/etc/shorewall/rules:
#ACTION SOURCE DEST PROTO DPORT SPORT ORIGDEST RATE USER MARK CONNLIMIT TIME HEADERS SWITCH HELPER
?SECTION ALL
?SECTION ESTABLISHED
?SECTION RELATED
?SECTION INVALID
?SECTION UNTRACKED
?SECTION NEW
...
DNAT net loc:172.20.1.4 tcp 80
For the one-to-one NAT to work correctly in this configuration, one of two approaches can be taken:
1. Define a CONTINUE policy with smc as the SOURCE zone (preferred):
#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST
smc $FW CONTINUE
loc net ACCEPT
net all DROP info
# THE FOLLOWING POLICY MUST BE LAST
all all REJECT info
2. Set IMPLICIT_CONTINUE=Yes in shorewall.conf(5)[4].
FILES
/etc/shorewall/nat
/etc/shorewall6/nat
SEE ALSO
https://shorewall.org/NAT.htm[6]
https://shorewall.org/configuration_file_basics.htm#Pairs[7]
shorewall(8)
NOTES
1. https://shorewall.org/FAQ.htm#faq1
https://shorewall.org/FAQ.htm#faq1
2. shorewall-proxyarp
https://shorewall.org/manpages/shorewall-proxyarp.html
3. shorewall6-proxyndp
https://shorewall.org/manpages/shorewall-proxyndp.html
4. shorewall.conf
https://shorewall.org/manpages/shorewall.conf.html
5. shorewall-interfaces
https://shorewall.org/manpages/shorewall-interfaces.html
6. https://shorewall.org/NAT.htm
https://shorewall.org/NAT.htm
7. https://shorewall.org/configuration_file_basics.htm#Pairs
https://shorewall.org/configuration_file_basics.htm#Pairs
Configuration Files 09/24/2020 SHOREWALL-NAT(5)