<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">
<article id="shorewall_prerequisites">
  <!--$Id$-->

  <articleinfo>
    <title>Shorewall Requirements</title>

    <author>
      <firstname>Tom</firstname>

      <surname>Eastep</surname>
    </author>

    <pubdate><?dbtimestamp format="Y/m/d"?></pubdate>

    <copyright>
      <year>2001-2006</year>

      <holder>Thomas M Eastep</holder>
    </copyright>

    <legalnotice>
      <para>Permission is granted to copy, distribute and/or modify this
      document under the terms of the GNU Free Documentation License, Version
      1.2 or any later version published by the Free Software Foundation; with
      no Invariant Sections, with no Front-Cover, and with no Back-Cover
      Texts. A copy of the license is included in the section entitled
      <quote><ulink url="GnuCopyright.htm">GNU Free Documentation
      License</ulink></quote>.</para>
    </legalnotice>
  </articleinfo>

  <caution>
    <para><emphasis role="bold">This article applies to Shorewall 4.3 and
    later. If you are running a version of Shorewall earlier than Shorewall
    4.3.5 then please see the documentation for that
    release.</emphasis></para>
  </caution>

  <section id="Requirements">
    <title>Shorewall Requires:</title>

    <itemizedlist>
      <listitem>
        <para>A <emphasis role="bold">Linux</emphasis> kernel that supports
        Netfilter (No, it won't work on BSD or Solaris). I've tested with
        2.4.2 - 2.6.16. Check <ulink url="kernel.htm">here</ulink> for kernel
        configuration information.</para>
      </listitem>

      <listitem>
        <para>iptables 1.2 or later (but I recommend at least version
        1.3.3)</para>
      </listitem>

      <listitem>
        <para>Iproute (<quote>ip</quote> and "tc" utilities). The iproute
        package is included with most distributions but may not be installed
        by default. The official download site is <ulink type="remote"
        url="http://developer.osdl.org/dev/iproute2/download/">http://developer.osdl.org/dev/iproute2/download/</ulink>.
        Note that the Busybox versions of the iproute2 utilities
        (<firstterm>ip</firstterm> and <firstterm>tc</firstterm>) do not
        support all of the features required for advanced Shorewall
        use.</para>
      </listitem>

      <listitem>
        <para>A Bourne shell or derivative such as bash or ash. This shell
        must have correct support for variable expansion formats
        ${<emphasis>variable%pattern</emphasis>},
        ${<emphasis>variable%%pattern</emphasis>},
        ${<emphasis>variable#pattern</emphasis>} and
        ${<emphasis>variable##pattern</emphasis>}.</para>
      </listitem>

      <listitem>
        <para>Your shell must produce a sensible result when a number n (128
        &lt;= n &lt;= 255) is left shifted by 24 bits. You can check this at a
        shell prompt by:<itemizedlist>
            <listitem>
              <para>echo $((128 &lt;&lt; 24))</para>
            </listitem>

            <listitem>
              <para>The result must be either 2147483648 or
              -2147483648.</para>
            </listitem>
          </itemizedlist></para>
      </listitem>

      <listitem>
        <para>The firewall monitoring display is greatly improved if you have
        awk (gawk) installed.</para>
      </listitem>

      <listitem>
        <para>On the system where the Shorewall package itself is installed,
        you must have Perl installed (preferably Perl 5.8.10):</para>

        <itemizedlist>
          <listitem>
            <para>If you want to be able to use DNS names in your Shorewall6
            configuration files, then Perl 5.10 is required together with the
            Perl Socket6 module.</para>
          </listitem>

          <listitem>
            <para>Perl Cwd Module</para>
          </listitem>

          <listitem>
            <para>Perl File::Basename Module</para>
          </listitem>

          <listitem>
            <para>Perl File::Temp Module</para>
          </listitem>

          <listitem>
            <para>Perl Getopt::Long Module</para>
          </listitem>

          <listitem>
            <para>Perl Carp Module</para>
          </listitem>

          <listitem>
            <para>Perl FindBin Module</para>
          </listitem>

          <listitem>
            <para>Perl Scalar::Util Module</para>
          </listitem>
        </itemizedlist>
      </listitem>
    </itemizedlist>
  </section>
</article>
