Kapitel 4. Dienste

4.1. Grundlegende Dienste

4.1.1. DNS-Server

Der Domain-Name-Service (dns) ist für die Umwandlung von Internetadressen (z.B. www.debian.org) in numerische IP-Adressen (198.186.203.20) zuständig. Auch die umgekehrte Richtung ist möglich. Ohne diesen Dienst müsste man immer die IP-Adresse des Server kennen, auf den man z.B. beim Surfen zugreifen will. Zusätzlich zur IP-Adresse kann der dns-Server auch den Mailserver, der für eine Domain zuständig ist, speichern (sog. MX-Record). Weitere Infos wie Hardware-Ausstattung sind auch möglich, aber eher unüblich. Jede Domain ist in mindestens zwei dns-Servern eingetragen. Welche das sind, kann mit dem Programm whois herausgefunden werden.

Der gebräuchlichste dns-Server für Linux heißt bind. Mit apt-get install bind9 wird Version 9 installiert. Der Server selber wird mit der Datei /etc/bind/named.conf konfiguriert. Im options-Abschnitt müssen folgende Zeilen hinzugefügt werden:

options {
        forwarders {
                217.5.100.129;
                194.25.2.129;
        };


        allow-query {
                127.0.0.0/8;
                192.168.0.0/24;
        };

        allow-transfer {
                none;
        };

        listen-on {
                127.0.0.1;
                192.168.0.1;
        };
};
Damit ist der dns-Server nur vom internen Netzwerk erreichbar. Schließlich ist er auch nur für das interne Netzwerk zuständig. Am Ende von /etc/bind/named.conf müssen noch folgende Zeilen hinzugefügt werden:
zone "gm.rt.schule-bw.de" IN {
        type master;
        file "gm.rt.schule-bw.de-zone";
};

zone "0.168.192.in-addr.arpa" IN {
        type master;
        file "192.168.0-zone";
};
Jetzt müssen noch die sogenannten Zonen-Dateien erstellt werden. In diesen Dateien liegen die eigentlichen Informationen, die der dns-Server zur Umandlung von Domains in IP-Adressen benötigt. Zuerst erstellen wir die Datei /var/cache/bin/gm.rt.schule-bw.de-zone:
;
; /var/cache/bind/gm.rt.schule-bw.de-zone
;
$TTL 2D
@       IN      SOA     dns     root.gm.rt.schule-bw.de. (
                2003081201      ; serial JJJJMMTTNN
                8H              ; refresh rate
                2H              ; retry rate
                1W              ; expiration date
                2D )            ; minimum ttl

        IN      NS      dns
        IN      MX      10 mail

dns     IN      A       192.168.0.1
mail    IN      A       192.168.0.1
pop     IN      A       192.168.0.1
news    IN      A       192.168.0.1
server  IN      A       192.168.0.1
proxy   IN      A       192.168.0.1

www     IN      NS      dns1.belwue.de.
                ; www.gm.rt.schule-bw.de. wird von unserem
                ; dns-server nicht verwaltet, aber von belwue.
Diese Datei sorgt für die Auflösung eines Namens in seine IP-Adresse. Die andere Zonen-Datei ist für die umgekehrte Richtung da. /var/cache/bin/192.168.0-zone muss folgenden Inhalt haben:
;
; /var/cache/bind/192.168.0-zone
;
$TTL 2D
@       IN      SOA     dns.gm.rt.schule-bw.de. root.gm.rt.schule-bw.de. (
                2003081201      ; serial JJJJMMTTNN
                8H              ; refresh rate
                2H              ; retry rate
                1W              ; expiration date
                2D )            ; minimum ttl

        IN      NS      dns.gm.rt.schule-bw.de.

1       IN      PTR     server.gm.rt.schule-bw.de.
Mit /etc/init.d/bind reload wird die neue Konfiguration übernommen.

Damit unser Server seinen eigenen dns-Server auch benutzt, muss noch die Datei /etc/resolv.conf bearbeitet werden. Sie muss folgenden Inhalt haben:

#
# /etc/resolv.conf
#
search gm.rt.schule-bw.de
nameserver 192.168.0.1
Damit ist die Konfiguration des dns-Servers abgeschlossen.

4.1.2. dhcp-Server

Mit dem dhcp-Protokoll lassen sich die Clients automatisch konfigurieren. Da unser Netz die Adresse 192.168.0.0 hat und 192.168.0.1 und 192.168.0.254 schon belegt sind (Server und Netzdrucker), bleibt für die Clients im Prinzip der Adressbereich 2-253 übrig. Um aber für besondere Fälle (z.B. weitere Netzdrucker) noch einige Adressen frei zu haben, sollten die Clients nur folgenden Bereich nutzen: 140-253.

Zuerst muss der dhcp-Server wahrscheinlich installiert werden. Das geht mit dem Befehl apt-get install dhcp. Die Konfigurationsdatei heißt /etc/dhcpd.conf. Sie muss folgenden Inhalt haben:

#
# /etc/dhcpd.conf
#
default-lease-time 604800;  # 7 days
max-lease-time  2592000;    # 30 days

option domain-name "gm.rt.schule-bw.de";
option domain-name-servers      dns.gm.rt.schule-bw.de;
option lpr-servers           server.gm.rt.schule-bw.de;
option netbios-name-servers  server.gm.rt.schule-bw.de;
option time-servers          server.gm.rt.schule-bw.de;
option smtp-server             mail.gm.rt.schule-bw.de;
option pop-server               pop.gm.rt.schule-bw.de;
option www-server            server.gm.rt.schule-bw.de;

option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;

subnet 192.168.0.0 netmask 255.255.255.0 {
    range 192.168.0.140 192.168.0.253;
}
In der Datei /etc/default/dhcp steht, auf welchen Netzwerkkarten der dhcp-Server aktiv ist. Hier muss folgende Zeile stehen:
INTERFACES="eth0"
Mit /etc/init.d/dhcp restart wird die Konfiguration übernommen.

4.1.3. Mail Transfer Agent (SMTP/UUCP)

In diesem Abschnitt wird die Konfiguration des Mailsystems beschrieben. Zunächst muss uucp eingerichtet werden. uucp wird zum Abholen der Mails vom Provider verwendet (in unserem Fall: belwue). Dann muss der eigentliche MTA (Mail Transfer Agent) eingerichtet werden, der SMTP-Server. Dieser Server erhält über uucp die Mails der Domain gm.rt.schule-bw.de und verteilt diese an die Benutzer. Andererseits nimmt der SMTP-Server neue Mails von den Clients an und versendet sie über uucp.

4.1.3.1. uucp einrichten

Zunächst einmal muss die uucp-Software installiert werden: apt-get install uucp. Alle Konfigurationsdateien liegen in /etc/uucp/. Am besten werden in diesem Verzeichnis zuerst alle Konfigurationsdateien gelöscht.

Wir bearbeiten zuerst die Datei call. Hier werden drei Informationen benötigt: Der Systemname des Providers (hier: belwue), Login-Name und Passwort.

#
# /etc/uucp/call
#
# Format:
# system login passwd

belwue loginname passwort
"loginname" und "passwort" müssen natürlich noch ersetzt werden.

Die nächste Datei heißt config. Hier steht der UUCP-Name des lokalen Rechners.

#
# /etc/uucp/config
#
nodename loginname
Auch hier muss "loginname" ersetzt werden.

In der Datei sys werden die bekannten Systeme beschrieben, die verwendet werden sollen. Diese Datei sollte folgenden Inhalt haben:

#
# /etc/uucp/sys
#

###
# Globale Einstellung für alle Systeme

# Loginnamen und Passwort aus der Datei 'call' lesen
call-login    *
call-password *

# Keine Einschränkung der Zugriffszeit
time          any

###
# Systemspezifische Einstellungen

system belwue
       called-login  loginname
       commands      rnews rmail rsmtp rcsmtp crsmtp
       myname        loginname
       port type     tcp
       address       news.belwue.de
Hier muss wieder "loginname" ersetzt werden.

In der Datei /etc/hosts muss noch eine Zeile ergänzt werden:

129.143.4.4 news.belwue.de belwue

Neue Mails werden dann letztendlich mit folgendem Befehl abgeholt: uucico -r1 -sbelwue -f.

Die Konfiguration kann natürlich auch getestet werden. Dazu die folgenden Befehle eingeben; die Ausgabe sollte ähnlich sein.

server:~# su - uucp
uucp@server:~$ /usr/lib/uucp/uuchk
Local node name loginname
Spool directory /var/spool/uucp
Public directory /var/spool/uucppublic
Lock directory /var/lock
Log file /var/log/uucp/Log
Statistics file /var/log/uucp/Stats
Debug file /var/log/uucp/Debug
Global debugging level
uucico -l will strip login names and passwords
uucico will strip UUCP protocol commands
Start uuxqt once per uucico invocation

System: belwue
 Caller must log in as loginname
 Will use loginname as name of local system
 Call out using a specially defined port
 The port is defined as:
  Port name system belwue port
   Port type tcp
   TCP service uucp
   Characteristics: eight-bit-clean reliable end-to-end fullduplex
 Remote address news.belwue.de
 Chat script "" \r\c ogin:-BREAK-ogin:-BREAK-ogin: \L word: \P
 Chat script timeout 10
 Chat script incoming bytes stripped to seven bits
 Login name loginname
 Password passwort
 At any time may call if any work
 May retry the call up to 26 times
 May make local requests when calling
 May make local requests when called
 May send by local request: /
 May send by remote request: ~
 May accept by local request: ~
 May receive by remote request: ~
 May execute rnews rmail rsmtp rcsmtp crsmtp
 Execution path /bin /usr/bin /usr/local/bin /usr/sbin
 Will leave 50000 bytes available
 Public directory is /var/spool/uucppublic
 Will use any known protocol
Eine weitere Möglichkeit, die Konfiguration zu testen, ist, die Mails abzuholen und dabei Debug-Ausgaben erzeugen zu lassen. Das geht mit uucico -r1 -x9 -sbelwue -f recht einfach. In /var/log/uucp/Debug stehen die ausführlichen Debug-Ausgaben. Die Datei /var/log/uucp/Log wird immer erweitert, wenn uucp benutzt wird.

4.1.3.2. exim (MTA) einrichten

Exim ist wahrscheinlich schon installiert. Mit eximconfig wird das Konfigurationsprogramm aufgerufen. Bei der ersten Frage muss Option 1 ausgewählt werden (Internet site). Die Antwort auf die nächste Frage ("visible mail name of your system") lautet gm.rt.schule-bw.de. Dann noch vier mal "none" also Antwort verwenden und die grobe Konfiguration ist abgeschlossen.

Jetzt kommt die feinere Konfiguration in der Datei /etc/exim/exim.conf. Um uucp mit exim verwenden zu können, müssen im Abschnitt Transports folgende Zeilen hinzugefügt werden:

######################################################################
#                      TRANSPORTS CONFIGURATION                      #
######################################################################
#                       ORDER DOES NOT MATTER                        #
#     Only one appropriate transport is called for each delivery.    #
######################################################################
uucp_pipe:
  driver = pipe
  command = "uux - -a$sender_address -r $host\!rmail ($local_part@$domain)"
  pipe_as_creator
  restrict_to_path
  path = "/usr/bin:/bin"
  return_output
Im Abschnitt Router müssen folgende Zeilen am Anfang des Abschnitts hinzugefügt werden (die Reihenfolge spielt eine Rolle):
######################################################################
#                      ROUTERS CONFIGURATION                         #
#            Specifies how remote addresses are handled              #
######################################################################
#                          ORDER DOES MATTER                         #
#  A remote address is passed to each in turn until it is accepted.  #
######################################################################
uucp:
  driver = domainlist
  transport = uucp_pipe
  route_list = "* belwue byname"
Damit wird die ausgehende Mail zuerst über uucp verschickt.

Im ersten Abschnitt (main configuration settings) muss die Variabel "trusted_users" gesucht werden. Folgendes muss geändert werden:

trusted_users  = mail:uucp
trusted_groups = uucp
Im selben Abschnitt müssen noch zwei Optionen gesucht und geändert werden:
host_accept_relay = 127.0.0.1 : 192.168.0.0/24
never_users = root
Damit können alle Computer im Netzwerk über den Server als SMTP-Server Nachrichten versenden mit beliebigen Absender und Empfänger. Die zweite Option verhindert, dass dem Benutzer root (also dem Systemadministrator) direkt Mails zugestellt werden. Die Mails an root müssen an einen anderen Benutzer weitergeleitet werden. Das passiert im nächsten Absatz.

Zur Mailkonfiguration gibt es noch eine zweite, sehr wichtige Datei: /etc/aliases. Hier können z.B. Weiterleitungen definiert werden. eximconfig hat schon eine neue Datei erstellt. Am Ende dieser Datei sollten folgende Zeilen hinzugefügt werden:

info:                   verwaltung, homepage
homepage:               thomas, alexander, jmueller, bohn, andreas
verwaltung:             root
sekretariat:            poststelle@xxxxxxxx.schule.bwl.de, \sekretariat
proxymaster:            root
root:                   andreas

# Anmerkung: Hier könnten noch Weiterleitungen von Mail an externe Adressen
# eingerichtet werden, zum Beispiel für Lehrer

andreas: a.dangel@gmx.de, \andreas
Die letzte Zeile ist ein Beispiel für eine externe Weiterleitung.

4.1.3.3. Regelmäßig Mails abholen

Soll der Server regelmäßig neue Mails abholen, muss der cron-Dienst entsprechend konfiguriert werden. In der Datei /etc/cron.d/getEmail steht eine neue cron-Konfiguration. Sie muss folgenden Inhalt haben:

#
# /etc/cron.d/getEmail
#

# min hour(s)         day month dow  user  command
0 7,10,13,15,17,19,21  *    *    *   root  /usr/local/sbin/getEmail
Die Datei /usr/local/sbin/getEmail sieht so aus:
#!/bin/sh
#
# /usr/local/sbin/getEmail
#

# Internetverbindung aufbauen: ping an news.belwue.de
ping -c 5 129.143.4.4 > /dev/null

# Mailqueue abarbeiten
/usr/sbin/exim -q

# neue Mails holen
/usr/sbin/uucico -r1 -sbelwue -f
Mit chmod 700 /usr/local/sbin/getEmail wird das Script ausführbar gemacht.

Standardmäßig wird die Mail-Warteschlange von exim alle 15 Minuten ausgeführt. Dies ist unnötig und verursacht nur häufige Internet-Einwahlen. Die Mail-Queue wird im Script /usr/local/sbin/getEmail auch ausgeführt (exim -q). Wir deaktivieren deshalb die Standardeinstellung. Dazu wird der Eintrag in der vierten Zeile in /etc/cron.d/exim mit einem "#" auskommentiert.