%
% routing.tex
% Last Update: $Id$
%
%%%%%%%%%%%%%%%%%%%%%%%% Routing %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5

\chapter{Das Routing Paket}
\index{Routing}


\section{Einleitung}

    Im Routing-Paket werden Einstellungen zum Masquerading, Portfilter und
    Portforwarding vorgenommen.


\section{Das Men"u im Setup-Programm}

    Das Men"u im Setup-Programm ist wie folgt aufgebaut:

    \mbox {}

    \begin{tabular}{llll}
    & x. &  Service administration \\
    \end{tabular}
\eline
    \begin{tabular}{p{1cm}llll}
    & x. & Routing administration \\
    \end{tabular}
\eline
    \begin{tabular}{p{2cm}llll}
    & 1. &  View documentaion \\
    & 2. &  Edit configuration \\
    & 3. &  Advanced configuration file handling \\
    & 4. &  Show status \\
    & 5. &  Stop service \\
    & 6. &  Start servcice \\
    \end{tabular}

    \mbox {}

\section{Konfiguration}


\subsection{Routing}


\begin{description}

\config{START\_ROUTING}
{START\_ROUTING}
{STARTROUTING}
{
    Hier wird das Paket ein und ausgeschaltet.

    G"ultige Werte: yes, no

    Standardeinstellung: \texttt{START\_ROUTING='no'}
}


\config{MASQ\_NETWORK}
{MASQ\_NETWORK}
{MASQNETWORK}
{
    Hier sind die Netzwerke anzugeben, die nach au"sen hin maskiert werden
    sollen. Verwendet man nicht-offizielle IP-Adressen, wie z.B.
    192.168.x.x, und soll der Server als Zugang ins Internet verwendet
    werden, m"ussen diese hier unbedingt angegeben werden.

    Die Form ist:

    NETZWERKNUMMER/ANZAHL-DER-GESETZTEN-BITS-IN-NETMASK

    also z.B. f"ur Netze der Form 192.168.x.0:

    \texttt{MASQ\_NETWORK='192.168.6.0/24'}

    Hier sind also die ersten 24 Bits in der Netzwerkmaske gesetzt. Sollen
    mehrere Netze maskiert werden, sind diese durch Leerzeichen zu trennen.
    Soll kein Netz maskiert werden, muss der Variablen-Inhalt leer sein.
}

\end{description}


    Die Verwendung von IP-Masquerading hat zwar den Vorteil, dass mehrere
    Rechner im LAN "uber eine einzige offizielle IP-Adresse geroutet werden
    k"onnen, es gibt aber auch Nachteile, die man in Kauf nehmen muss.

    Ein gro"ses Problem ist zum Beispiel, dass kein Rechner von au"sen von sich
    aus eine Verbindung zu einem Rechner aufnehmen kann. Das ist zwar aus
    Sicherheitsgr"unden eigentlich durchaus erw"unscht, aber bestimmte
    Protokolle funktionieren nicht mehr, weil sie einen Verbindungsaufbau
    von au"sen einfach erfordern.

    Ein klassisches Beispiel ist ftp. Neben dem Kommunikationskanal, auf dem
    Befehle und Antworten ausgetauscht werden, wird ein weiterer Kanal (in
    Form eines IP-Ports) verwendet, um die eigentlichen Nutzdaten zu
    versenden. \fli verwendet daf"ur bestimmte Masquerading-Module, um
    solche zus"atzlichen Ports, die verwendet werden, ad hoc dann
    freizuschalten und an den internen Rechner weiterzuleiten, wenn sie
    ben"otigt werden. Dabei {\glqq{}horcht\grqq{}} das Masquerading-Modul in den
    Datenstrom, um zu erkennen, wann ein zus"atzlicher Port ben"otigt wird.

    Typische Anwendungen f"ur Masquerading-Module sind Chat-Protokolle und
    Spiele im Internet.

    Bisher wurde f"ur \fli das ftp-Masquerading-Modul immer automatisch
    geladen. Mittlerweile sind weitere Module verf"ugbar. Diese lassen sich
    auch mit zus"atzlichen Optionen aufrufen. Dies ist zum Beispiel dann
    n"otig, wenn ein FTP-Server auf einem anderen Port als 21 angesprochen
    werden soll. Hier eine "Ubersicht aller Module mit ihren Parametern, die
    vorgegebenen Werte sind die Standardwerte:


\begin{deflist} [ftp-]
    \item[ftp] File Transfer Protocol
    \item[irc] Internet Relay Chat
\end{deflist}


\subsubsection{Bemerkungen}


    mIRC ist standardm"a"sig falsch konfiguriert, sodass er nicht
    mit diesem Modul zusammenarbeitet. Um mIRC richtig einzustellen, geht
    man folgenderma"sen vor (Verbindung zum IRC-Server erst trennen): Im
    {\glqq{}Options\grqq{}}-Dialog: Auswahlliste: {\glqq{}Connect\grqq{}}, dann
    {\glqq{}Local Info\grqq{}}, hier beide Eingabefelder l"oschen (falls etwas
    drin steht), dann {\glqq{}Lookup Method:\grqq{}} auf {\glqq{}Normal\grqq{}} stellen.

    Alle Parameter, die eine Liste von Ports annehmen, k"onnen h"ochstens 12
    Ports "ubergeben bekommen.

    Nat"urlich kann man nicht f"ur jedes Protokoll, welches zus"atzliche Ports
    verwendet, ein separates Masquerading-Modul programmieren. Aus diesem
    Grund gibt es neben den oben aufgef"uhrten Modulen auch noch eine andere
    M"oglichkeit, neue Ports an einen internen Rechner weiterzuleiten. Siehe
    daf"ur auch die Beschreibung zum Port-Forwarding.


\begin{description}

\config{MASQ\_MODULE\_N}
{MASQ\_MODULE\_N}
{MASQMODULEN}
{
    gibt die Anzahl der zu ladenden Masquerading-Module an.

    Die Standardeinstellung f"ur \texttt{MASQ\_MODULE\_N} ist '1'. Damit wird
    nur das erste Modul, n"amlich ftp, geladen. M"ochte man weitere Module laden,
    ist \texttt{MASQ\_MODULE\_N} entsprechend zu erh"ohen.

    G"ultige Werte: Zahl

    Standardeinstellung: \texttt{MASQ\_MODULE\_N='1'}
}


\config{MASQ\_MODULE\_x}
{MASQ\_MODULE\_x}
{MASQMODULEx}
{
    gibt das x'te zu ladende Masquerading-Modul an.

    \verb+MASQ_MODULE_1='ftp'+ \\
    \verb+MASQ_MODULE_2='irc'+ \\

    G"ultige Werte: Modul z.B. ftp

    Standardeinstellung: \texttt{MASQ\_MODULE\_x='ftp'}
}


\config{MASQ\_MODULE\_x\_OPTION}
{MASQ\_MODULE\_x\_OPTION}
{MASQMODULExOPTION}
{
    legt Optionen f"ur das jeweilige Modul fest. Kann leer bleiben.

    G"ultige Werte: Optionen

    Standardeinstellung: \texttt{MASQ\_MODULE\_x\_OPTION='{}'}
}


\config{ROUTE\_NETWORK}
{ROUTE\_NETWORK}
{ROUTENETWORK}
{
    Pakete, die zu von Hosts in diesen Subnetzen aufgebauten Verbindungen
    geh"oren, werden vom Router weitergeleitet (geforwarded).
    Zus"atzlich werden Pakete, die in diese Netze hineingehen, nicht maskiert.

    Dieses kann z.B. f"ur eine Verbindung zur Firma sinnvoll sein, wo
    Mitarbeiter dieser Firma von dort Zugang in das eigene Netz haben
    sollen. Das Format ist dasselbe wie bei \texttt{MASQ\_NETWORK}, also z.B.

    \texttt{ROUTE\_NETWORK='192.168.1.0/24'}

    Auch k"onnen hier wieder mehrere Netze angegeben werden.

    ROUTE\_NETWORK kann in der Regel einfach leer bleiben.

    Standardeinstellung: \texttt{ROUTE\_NETWORK='{}'}
}


\config{FORWARD\_HOST\_WHITE}
{FORWARD\_HOST\_WHITE}
{FORWARDHOSTWHITE}
{
    Hiermit kann eingestellt werden, ob die folgende Liste von Hosts
    eine Liste aller erlaubten ('yes') oder aller verbotenen Hosts
    ist ('no'), welche auf das Internet zugreifen d"urfen.
}


\index{FORWARD\_HOST\_N}
\config{FORWARD\_HOST\_N /\\ FORWARD\_HOST\_x}
{FORWARD\_HOST\_x}
{FORWARDHOSTx}
{
    Normalerweise soll allen Rechnern im LAN der Internet-Zugang
    erlaubt sein. Dann ist \texttt{FORWARD\_HOST\_WHITE='no'} einzustellen
    und \texttt{FORWARD\_HOST\_N='0'} zu setzen. Anderenfalls setzt man
    \texttt{FORWARD\_HOST\_N} auf die Anzahl der verbotenen/erlaubten Rechner
    und tr"agt diese in \texttt{FORWARD\_HOST\_x} ein.
}


\index{FORWARD\_DENY\_PORT\_N}
\config{FORWARD\_DENY\_PORT\_N /\\ FORWARD\_DENY\_PORT\_x}
{FORWARD\_DENY\_PORT\_x}
{FORWARDDENYPORTx}
{
    Hier k"onnen Ports angegeben werden, die generell nicht in das
    Internet geroutet werden sollen. Sinnvoll sind hier zum Beispiel
    die SMB-Ports 137-139, die von Windows f"ur Netzwerkfreigaben
    verwendet werden. Deshalb ist standardm"a"sig eingestellt:

    \verb+FORWARD_DENY_PORT_N='1'+ \\
    \verb+FORWARD_DENY_PORT_1='137:139    REJECT'+
}


\index{INPUT\_ACCEPT\_PORT\_N}
\config{INPUT\_ACCEPT\_PORT\_N /\\ INPUT\_ACCEPT\_PORT\_x}
{INPUT\_ACCEPT\_PORT\_x}
{INPUTACCEPTPORTx}
{
    Standardm"a"sig sind alle Ports nach au"sen zu, eine Verbindung zum Router
    ist nicht m"oglich. Ports, auf denen ein Dienst nach au"sen angeboten
    wird, m"ussen hier angegeben werden.

    Ein Eintrag besteht dabei aus einem einzelnem Port bzw. einem ganzen
    Port-Bereich (zwei Ports durch Doppelpunkt getrennt) und einer
    optionalen Protokollangabe (TCP oder UDP). Wird kein Protokoll
    angegeben, werden auf dem Port beide Protokolle akzeptiert. Am Beispiel
    der ssh, die ihren Dienst auf Port 22 "uber das TCP-Protokoll anbietet,
    w"urde das wie folgt aussehen:

    \verb+INPUT_ACCEPT_PORT_N='1'      # no. of ports to accept from outside + \\
    \verb+INPUT_ACCEPT_PORT_1='22 TCP' # e.g. allow connection to ssh service +
}

\end{description}


\subsection{Port-Forwarding}

    F"ur einige Internet-Protokolle ist es n"otig, einen Verbindungsaufbau
    eines Rechners von au"sen in das interne Netz umzuleiten. Ist das Netz
    nach au"sen hin maskiert (IP-Masquerading), also nur eine offizielle IP-
    Adresse f"ur das gesamte LAN vorhanden, kann man bestimmte Ports oder
    Protokolle, die von au"sen erreichbar sein sollen, auf einen bestimmten
    internen Rechner umleiten. Dieses nennt man Port-Forwarding (bzw.
    allgemeiner Destination Network Address Translation, kurz DNAT). Die
    Problematik des Port-Forwarding wurde bei der Beschreibung von
    \texttt{MASQ\_MODULE\_N} bereits angesprochen (s.o.).

    Oft m"ussen bei Spielen, Chat oder Internet-Telefonie solche Ports
    freigeschaltet werden. K"onnen dies die Masquerading-Module selber nicht
    l"osen, kann man selbst Port-Weiterleitungen einrichten.


\begin{description}

\config{PORTFW\_N}
{PORTFW\_N}
{PORTFWN}
{
    Hiermit wird die Anzahl der Port-Weiterleitungen angegeben. Diese werden
    in \texttt{PORTFW\_x\_SOURCE}, \texttt{PORTFW\_x\_SOURCE} und
    \texttt{PORTFW\_x\_PROTOCOL} definiert.
}


\config{PORTFW\_x\_SOURCE}
{PORTFW\_x\_SOURCE}
{PORTFWxSOURCE}
{
    Pakete sind an ein bestimmtes Ziel gerichtet (normalerweise eine IP-
    Adresse und ein Port) und geh"oren zu einem bestimmten Protokoll. Dieses
    Ziel ist in einem maskierten Netz der Router, das eigentliche Ziel liegt
    aber im maskierten Netz, die Pakete m"ussen also dorthin weitergereicht
    werden.

    \texttt{PORTFW\_x\_SOURCE} gibt an, an welches Ziel Pakete gerichtet sein
    m"ussen, um weitergeleitet zu werden. Kommt ein solches Paket am Router
    an, wird es an das eigentliche Ziel weitergeleitet.

    Folgende Formate sind hier m"oglich:

    \texttt{PORTFW\_x\_SOURCE='<port>'}

    Leitet alle Pakete, die bei aktiver Internetverbindung auf dem
    Port <port> ankommen an einen anderen Rechner weiter.

    \texttt{PORTFW\_x\_SOURCE='<port1>-<port2>'}

    Leitet alle Pakete, die auf den Ports im Bereich zwischen \texttt{<port1>}
    und \texttt{<port2>} ankommen, an einen anderen Rechner weiter.

    \texttt{PORTFW\_x\_SOURCE='<ip>:<port>'}

    Leitet alle Pakete, die auf der IP \texttt{<ip>} des Routers auf Port
    \texttt{<port>} ankommen, an einen anderen Rechner weiter.
}


\config{PORTFW\_x\_TARGET}
{PORTFW\_x\_TARGET}
{PORTFWxTARGET}
{
    Dieser Parameter gibt das Ziel eines Port-Forwardings an. Dies ist in
    der Regel ein anderer Computer im internen Netzwerk. Folgende Formate
    sind hier m"oglich:

    \texttt{PORTFW\_x\_TARGET='<ip>'}

    Leitet alle Pakete, die f"ur diese Regel ankommen, an den Rechner mit der
    IP \texttt{<ip>} weiter.

    \texttt{PORTFW\_x\_TARGET='<ip>:<port>'}

    Leitet alle Pakete, die f"ur diese Regel ankommen, an den Rechner mit der
    IP \texttt{<ip>} an den Port \texttt{<port>} weiter. Diese Regel ist f"ur
    Portbereiche (\texttt{<port1>-<port2>}) unzul"assig!
}


\config{PORTFW\_x\_PROTOCOL}
{PORTFW\_x\_PROTOCOL}
{PORTFWxPROTOCOL}
{
    Dieser Parameter gibt das Protokoll an, f"ur das diese Regel zutrifft.
    Zugelassen sind hier \texttt{'tcp'}, \texttt{'udp'}, \texttt{'gre'} und
    die Angabe der Protokollnummer (siehe  \link{http://www.iana.org/assignments/protocol-numbers}{Liste der Protokoll-Nummern} der IANA).
}


\config{PACKETFILTER\_LOG}
{PACKETFILTER\_LOG}
{PACKETFILTERLOG}
{
    Hier kann eingestellt werden, ob abgelehnte Zugriffe von au"sen "uber die
    Syslog-Schnittstelle protokolliert werden sollen.

    Hier eine kurze Erkl"arung der wichtigsten Elemente einer Protokollzeile:

    \texttt{IN=ppp0 OUT= MAC= SRC=217.238.54.176 DST=217.235.38.43 LEN=48
              TOS=0x00 PREC=0x00 TTL=124 ID=30343 DF PROTO=TCP SPT=3087
              DPT=4662 WINDOW=16384 RES=0x00 SYN URGP=0 }

    \begin{deflist} [PROTO=TCP-]
      \item[IN]        Device, auf dem das Paket hereinkam
      \item[SRC]       Quelladresse des Paketes (Source)
	  \item[DST]       Zieladresse des Paketes (Destination)
      \item[LEN]       L"ange des Pakets in Bytes (Length)
      \item[TOS]       Type Of Service
      \item[TTL]       Time To Live, Anzahl der Hops, bis das Paket gel"oscht wird
      \item[PROTO=TCP] TCP Paket
      \item[SPT]       Quellport (Source Port)
	  \item[DPT]       Zielport (Destination Port)
      \item[ID]        IP-ID, wird mit jedem Paket vom Sender um eins erh"oht
    \end{deflist}

    Standardeinstellung: \texttt{PACKETFILTER\_LOG='no'}
}


\end{description}
