Provided by: shorewall_5.2.8-6_all bug

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