<?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>shorewall6-rtrules</refentrytitle>

    <manvolnum>5</manvolnum>

    <refmiscinfo>Configuration Files</refmiscinfo>
  </refmeta>

  <refnamediv>
    <refname>rtrules</refname>

    <refpurpose>Shorewall6 Routing Rules file</refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <cmdsynopsis>
      <command>/etc/shorewall6/rtrules</command>
    </cmdsynopsis>
  </refsynopsisdiv>

  <refsect1>
    <title>Description</title>

    <para>Entries in this file cause traffic to be routed to one of the
    providers listed in <ulink
    url="/manpages6/shorewall6-providers.html">shorewall6-providers</ulink>(5).</para>

    <para>The columns in the file are as follows.</para>

    <variablelist>
      <varlistentry>
        <term><emphasis role="bold">SOURCE</emphasis> (Optional) - {<emphasis
        role="bold">-</emphasis>|<emphasis>interface</emphasis>|<emphasis>address</emphasis>|<emphasis>interface</emphasis><firstterm>:</firstterm><emphasis>&lt;address</emphasis>&gt;}</term>

        <listitem>
          <para>An ip <emphasis>address</emphasis> (network or host) that
          matches the source IP address in a packet. May also be specified as
          an <emphasis>interface</emphasis> name optionally followed by ":"
          and an address. If the device <emphasis role="bold">lo</emphasis> is
          specified, the packet must originate from the firewall
          itself.</para>

          <para>Beginning with Shorewall 4.5.0, you may specify
          &amp;<replaceable>interface</replaceable> in this column to indicate
          that the source is the primary IP address of the named
          interface.</para>

          <para>Beginning with Shorewall 4.6.8, you may specify a
          comma-separated list of addresses in this column.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><emphasis role="bold">DEST</emphasis> (Optional) - {<emphasis
        role="bold">-</emphasis>|<emphasis>address</emphasis>}</term>

        <listitem>
          <para>An ip address (network or host) that matches the destination
          IP address in a packet.</para>

          <para>If you choose to omit either <emphasis
          role="bold">SOURCE</emphasis> or <emphasis
          role="bold">DEST</emphasis>, place "-" in that column. Note that you
          may not omit both <emphasis role="bold">SOURCE</emphasis> and
          <emphasis role="bold">DEST</emphasis>.</para>

          <para>Beginning with Shorewall 4.6.8, you may specify a
          comma-separated list of addresses in this column.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><emphasis role="bold">PROVIDER</emphasis> -
        {<emphasis>provider-name</emphasis>|<emphasis>provider-number</emphasis>|<emphasis
        role="bold">main</emphasis>}</term>

        <listitem>
          <para>The provider to route the traffic through. May be expressed
          either as the provider name or the provider number. May also be
          <emphasis role="bold">main</emphasis> or 254 for the main routing
          table. This can be used in combination with VPN tunnels, see example
          2 below.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><emphasis role="bold">PRIORITY</emphasis> -
        <emphasis>priority</emphasis><emphasis
        role="bold">[!]</emphasis></term>

        <listitem>
          <para>The rule's numeric <emphasis>priority</emphasis> which
          determines the order in which the rules are processed. Rules with
          equal priority are applied in the order in which they appear in the
          file.</para>

          <variablelist>
            <varlistentry>
              <term>1000-1999</term>

              <listitem>
                <para>Before Shorewall-generated 'MARK' rules</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term>11000-11999</term>

              <listitem>
                <para>After 'MARK' rules but before Shorewall-generated rules
                for ISP interfaces.</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term>26000-26999</term>

              <listitem>
                <para>After ISP interface rules but before 'default'
                rule.</para>
              </listitem>
            </varlistentry>
          </variablelist>

          <para>Beginning with Shorewall 5.0.2, the priority may be followed
          optionally by an exclaimation mark ("!"). This causes the rule to
          remain in place if the interface is disabled.</para>

          <caution>
            <para>Be careful when using rules of the same PRIORITY as some
            unexpected behavior can occur when multiple rules have the same
            SOURCE. For example, in the following rules, the second rule
            overwrites the first unless the priority in the second is changed
            to 19001 or higher:</para>

            <programlisting>2601:601:8b00:bf0::/64 2001:470:b:787::542 provider1 19000
2601:601:8b00:bf0::/64 -                   provider2 19000</programlisting>
          </caution>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><emphasis role="bold">MARK -
        {-|<replaceable>mark</replaceable>[/<replaceable>mask</replaceable>]}</emphasis></term>

        <listitem>
          <para>Optional -- added in Shorewall 4.4.25. For this rule to be
          applied to a packet, the packet's mark value must match the
          <replaceable>mark</replaceable> when logically anded with the
          <replaceable>mask</replaceable>. If a
          <replaceable>mask</replaceable> is not supplied, Shorewall supplies
          a suitable provider mask.</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>Examples</title>

    <variablelist>
      <varlistentry>
        <term>Example 1:</term>

        <listitem>
          <para>You want all traffic coming in on eth1 to be routed to the
          ISP1 provider.</para>

          <programlisting>        #SOURCE                 DEST            PROVIDER        PRIORITY    MASK
        eth1                    -               ISP1            1000
</programlisting>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>FILES</title>

    <para>/etc/shorewall6/rtrules</para>
  </refsect1>

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

    <para><ulink
    url="/MultiISP.html">http://www.shorewall.net/MultiISP.html</ulink></para>

    <para>shorewall6(8), shorewall6-accounting(5), shorewall6-actions(5),
    shorewall6-blacklist(5), shorewall6-hosts(5), shorewall6-interfaces(5),
    shorewall6-maclist(5), shorewall6-netmap(5),shorewall6-params(5),
    shorewall6-policy(5), shorewall6-providers(5), shorewall6-routestopped(5),
    shorewall6-rules(5), shorewall6.conf(5), shorewall6-secmarks(5),
    shorewall6-tcclasses(5), shorewall6-tcdevices(5), shorewall6-mangle(5),
    shorewall6-tos(5), shorewall6-tunnels(5), shorewall6-zones(5)</para>
  </refsect1>
</refentry>