%
% tftpd.tex
% Last Update: $Id$
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Kapitel TFTPD %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{Das Tftpd-Paket}
\index{tfdpd}

\section{Einleitung}

    Das Trivial File Transfer Protocol (TFTP) ist ein sehr einfaches
    Datei"ubertragungsprotokoll. Es wurde 1980 auf der Basis von EFTP
    entwickelt. TFTP unterst"utzt lediglich das Lesen oder Schreiben
    von Dateien. Nicht vorhanden sind viele Funktionen des m"achtigeren
    FTP wie etwa Rechtevergabe mittels chmod, Anzeigen der vorhandenen
    Dateien oder Benutzerauthentifizierung.

\section{Funktionen}

    Das Tftpd-Paket stellt folgende Basis-Funktionalit"at zur Verf"ugung:

\subsubsection{Laden von Betriebssystemen und Konfigurationen}

    PC-BIOSe bieten heute die M"oglichkeit eines Netzboots, das hei"st
    Booten "uber ein Netzwerk, meist mit PXE. F"ur dieses Verfahren
    initialisiert das BIOS die Netzwerkkarte, sucht via DHCP einen
    Server und l"adt den ersten Teil des Betriebssystems (Kernel)
    mittels TFTP herunter. Dann wird der Kernel gestartet. Wenn TFTP
    verwendet wird, sind f"ur dieses Verfahren nur verbindungslose
    Protokolle erforderlich, die mit wenig Aufwand in einem ROM
    implementiert werden k"onnen.

\begin{itemize}
  \item tftpd.\\
        Der
         \link{https://www.kernel.org/pub/software/network/tftp/}{Trivial File Transfer Protocol} Server. \\
\end{itemize}


\section{Installation}

    Das Tftpd-Paket wird "uber das Setup-Men"u im Untermen"u
    'Package administration' installiert.

    Die Verzeichnisstruktur befindet sich unter \texttt{/srv/tftpboot}



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

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

   \mbox {}

    \begin{tabular}{llll}
    & 4. &  Service administration \\
    \end{tabular}
\eline
    \begin{tabular}{p{1cm}llll}
    & x. & Tftpd service \\
    \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 service \\
    \end{tabular}

    \mbox{}

\section{"Anderung der Konfiguration}


    Die Konfiguration kann "uber den Men"upunkt \glqq{}Edit configuration\grqq{}
    ge"andert werden.

    Nachdem der Editor beendet wurde wird abgefragt, ob die Konfiguration
    aktiviert werden soll. Wird dies best"atigt, werden "uber ein Skript die
    modifizierten "Anderungen umgehend wirksam gemacht.

\section{Die Konfigurationsdatei}

    In der Konfigurationsdatei, die "uber das Men"u zug"anglich ist, sind
    folgende Parameter vorhanden; wer sie von Hand editieren will findet
    sie unter \\
    \texttt{/etc/config.d/tftpd}


\subsection{TFTPD (general settings)}

\begin{description}

\config{START\_TFTPD}
{START\_TFTPD}
{STARTTFTPD}
{
    Soll der tftpd-Server gestartet werden?

    G"ultige Werte: yes, no

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


\config{TFTPD\_ADD\_ARGS}
{TFTPD\_ADD\_ARGS}
{TFTPDADDARGS}
{
    Zus"atzliche Argumente beim Aufruf des tftpd.

    Hier sollten nur erfahrene Anwender Angaben machen.


\begin{small}
\begin{verbatim}
--ipv4, -4
      Connect with IPv4 only, even if IPv6 support was compiled in.

--ipv6, -6
      Connect with IPv6 only, if compiled in.

--listen, -l
      Run the server in standalone (listen) mode, rather than run from
      inetd.  In listen mode, the --timeout option is ignored, and the
      --address option can be used to specify a specific local address
      or port to listen to.

--foreground, -L
      Similar  to  --listen  but  do  not  detach  from the foreground
      process.  Implies --listen.

--address [address][:port], -a [address][:port]
      Specify a specific address and port to  listen  to  when  called
      with  the  --listen  or  --foreground option.  The default is to
      listen to the tftp port specified in /etc/services on all  local
      addresses.

      Please  note:  Numeric  IPv6 adresses must be enclosed in square
      brackets to avoid ambiguity with the optional port information.

--create, -c
      Allow new files to be created.   By  default,  tftpd  will  only
      allow  upload  of  files  that already exist.  Files are created
      with default permissions allowing anyone to read or write  them,
      unless the --permissive or --umask options are specified.

--secure, -s
      Change  root  directory  on startup.  This means the remote host
      does not need to pass along the directory as part of the  trans-
      fer,  and may add security.  When --secure is specified, exactly
      one directory should be specified on the command line.  The  use
      of  this  option is recommended for security as well as compati-
      bility with some boot  ROMs  which  cannot  be  easily  made  to
      include a directory name in its request.

--user username, -u username
      Specify  the  username  which  tftpd will run as; the default is
      'nobody'.  The user ID, group ID, and (if possible on the  plat-
      form) the supplementary group IDs will be set to the ones speci-
      fied in the system permission database for this username.

--umask umask, -U umask
      Sets the umask for newly created files to the  specified  value.
      The  default is zero (anyone can read or write) if the --permis-
      sive option is not specified, or  inherited  from  the  invoking
      process if --permissive is specified.

--permissive, -p
      Perform  no  additional permissions checks above the normal sys-
      tem-provided access controls for  the  user  specified  via  the
      --user option.

--pidfile pidfile, -P pidfile
      When run in standalone mode, write the process ID of the listen-
      ing server into pidfile.  On normal termination (SIGTERM or SIG-
      INT) the pid file is automatically removed.

--timeout timeout, -t timeout
      When run from inetd this specifies how long, in seconds, to wait
      for a second connection before terminating  the  server.   inetd
      will then respawn the server when another request comes in.  The
      default is 900 (15 minutes.)

--retransmit timeout, -T timeout
      Determine the default timeout, in microseconds, before the first
      packet  is retransmitted.  This can be modified by the client if
      the timeout or utimeout option is negotiated.   The  default  is
      1000000 (1 second.)

--mapfile remap-file, -m remap-file
      Specify the use of filename remapping.  The remap-file is a file
      containing the remapping rules.  See  the  section  on  filename
      remapping  below.   This  option may not be compiled in, see the
      output of in.tftpd -V to verify whether or not it is available.

--verbose, -v
      Increase the logging verbosity of tftpd.  This flag can be spec-
      ified multiple times for even higher verbosity.

--verbosity value
      Set the verbosity value to value.

--refuse tftp-option, -r tftp-option
      Indicate  that  a  specific RFC 2347 TFTP option should never be
      accepted.

--blocksize max-block-size, -B max-block-size
      Specifies the maximum permitted block size.  The permitted range
      for  this parameter is from 512 to 65464.  Some embedded clients
      request large block sizes and yet do not handle fragmented pack-
      ets  correctly; for these clients, it is recommended to set this
      value to the smallest MTU on your network  minus  32  bytes  (20
      bytes  for  IP,  8  for  UDP, and 4 for TFTP; less if you use IP
      options on your network.)  For example, on a  standard  Ethernet
      (MTU 1500) a value of 1468 is reasonable.

--port-range port:port, -R port:port
      Force  the  server port number (the Transaction ID) to be in the
      specified range of port numbers.

--version, -V
      Print the version number and configuration to  standard  output,
      then exit gracefully.
\end{verbatim}
\end{small}

    G"ultige Werte: siehe oben

    Standardeinstellung: \texttt{TFTPD\_ADD\_ARGS='-c'}
}

\end{description}


\section{Konfiguration des TFTP-Daemon}

    Der TFTP-Daemon (in.tftpd) ist standardm"a"sig nicht so
    konfiguriert, dass er Dateien empfangen kann/darf.

    Es muss in der Tftpd-Konfiguration daf"ur dann auf jeden Fall
    folgender Parameter gesetzt werden:\\
    \texttt{TFTPD\_ADD\_ARGS='-c'}
