<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">
<refentry>
  <refmeta>
    <refentrytitle>shorewall-nat</refentrytitle>

    <manvolnum>5</manvolnum>
  </refmeta>

  <refnamediv>
    <refname>nat</refname>

    <refpurpose>Shorewall one-to-one NAT file</refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <cmdsynopsis>
      <command>/etc/shorewall/nat</command>
    </cmdsynopsis>
  </refsynopsisdiv>

  <refsect1>
    <title>Description</title>

    <para>This file is used to define one-to-one Network Address Translation
    (NAT).</para>

    <warning>
      <para>If all you want to do is simple port forwarding, do NOT use this
      file. See <ulink
      url="../FAQ.htm#faq1">http://www.shorewall.net/FAQ.htm#faq1</ulink>.
      Also, in many cases, Proxy ARP (<ulink
      url="shorewall-proxyarp.html">shorewall-proxyarp</ulink>(5)) is a better
      solution that one-to-one NAT.</para>
    </warning>

    <para>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).</para>

    <variablelist>
      <varlistentry>
        <term><emphasis role="bold">EXTERNAL</emphasis> -
        {<emphasis>address</emphasis>|[?]COMMENT}</term>

        <listitem>
          <para>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.</para>

          <para>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"</para>

          <para>To stop the comment from being attached to further rules,
          simply include COMMENT on a line by itself.</para>

          <note>
            <para>Beginning with Shorewall 4.5.11, ?COMMENT is a synonym for
            COMMENT and is preferred.</para>
          </note>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><emphasis role="bold">INTERFACE</emphasis> -
        <emphasis>interfacelist</emphasis>[<emphasis
        role="bold">:</emphasis>[<emphasis>digit</emphasis>]]</term>

        <listitem>
          <para>Interfaces that have the <emphasis
          role="bold">EXTERNAL</emphasis> address. If ADD_IP_ALIASES=Yes in
          <ulink url="shorewall.conf.html">shorewall.conf</ulink>(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 <emphasis>digit</emphasis> 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. <emphasis
          role="bold">That is the only thing that this name is good for -- you
          cannot use it anywhere else in your Shorewall configuration.
          </emphasis></para>

          <para>Each interface must match an entry in <ulink
          url="shorewall-interfaces.html">shorewall-interfaces</ulink>(5).
          Shorewall allows loose matches to wildcard entries in <ulink
          url="shorewall-interfaces.html">shorewall-interfaces</ulink>(5). For
          example, <filename class="devicefile">ppp0</filename> in this file
          will match a <ulink
          url="shorewall-interfaces.html">shorewall-interfaces</ulink>(5)
          entry that defines <filename
          class="devicefile">ppp+</filename>.</para>

          <para>If you want to override ADD_IP_ALIASES=Yes for a particular
          entry, follow the interface name with ":" and no digit (e.g.,
          "eth0:").</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><emphasis role="bold">INTERNAL</emphasis> -
        <emphasis>address</emphasis></term>

        <listitem>
          <para>Internal Address (must not be a DNS Name).</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><emphasis role="bold">ALL INTERFACES</emphasis> (allints) -
        [<emphasis role="bold">Yes</emphasis>|<emphasis
        role="bold">No</emphasis>]</term>

        <listitem>
          <para>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 <emphasis role="bold">INTERFACE</emphasis>
          column.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><emphasis role="bold">LOCAL</emphasis> - [<emphasis
        role="bold">Yes</emphasis>|<emphasis role="bold">No</emphasis>]</term>

        <listitem>
          <para>If <emphasis role="bold">Yes</emphasis> or <emphasis
          role="bold">yes</emphasis>, NAT will be effective from the firewall
          system</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>FILES</title>

    <para>/etc/shorewall/nat</para>
  </refsect1>

  <refsect1>
    <title>See ALSO</title>

    <para><ulink
    url="http://shorewall.net/NAT.htm">http://shorewall.net/NAT.htm</ulink></para>

    <para><ulink
    url="http://shorewall.net/configuration_file_basics.htm#Pairs">http://shorewall.net/configuration_file_basics.htm#Pairs</ulink></para>

    <para>shorewall(8), shorewall-accounting(5), shorewall-actions(5),
    shorewall-blacklist(5), shorewall-hosts(5), shorewall_interfaces(5),
    shorewall-ipsets(5), shorewall-maclist(5), shorewall-masq(5),
    shorewall-netmap(5), shorewall-params(5), shorewall-policy(5),
    shorewall-providers(5), shorewall-proxyarp(5), shorewall-rtrules(5),
    shorewall-routestopped(5), shorewall-rules(5), shorewall.conf(5),
    shorewall-secmarks(5), shorewall-tcclasses(5), shorewall-tcdevices(5),
    shorewall-tcrules(5), shorewall-tos(5), shorewall-tunnels(5),
    shorewall-zones(5)</para>
  </refsect1>
</refentry>