08.01.2013 Aufrufe

Ein Mehrbenutzersystem in der Praxis Netzwerk Linux/Unix

Ein Mehrbenutzersystem in der Praxis Netzwerk Linux/Unix

Ein Mehrbenutzersystem in der Praxis Netzwerk Linux/Unix

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>E<strong>in</strong></strong> <strong>Mehrbenutzersystem</strong> <strong>in</strong> <strong>der</strong> <strong>Praxis</strong><br />

<strong>Netzwerk</strong><br />

L<strong>in</strong>ux/<strong>Unix</strong><br />

Kursunterlagen<br />

-Universitäten Gött<strong>in</strong>gen und Freiburg-<br />

pr<strong>in</strong>ter<br />

Internet<br />

WAN<br />

hera<br />

.dom.test<br />

zeus<br />

.dom.test<br />

LAN<br />

WLAN<br />

192.168.1.0/24<br />

aphrodite<br />

.dom.test<br />

Dirk von Suchodoletz (dirk@goe.net)<br />

mit Beiträgen von:<br />

Frank Schwichtenberg<br />

Daniel van Ross<br />

Tim Oliver Kaiser<br />

Steffen Wagner<br />

Stefan Koospal<br />

Korrekturgelesen und zusammengestellt von:<br />

Antonia Blanke<br />

3. Auflage<br />

22. Mai 2006


Alle <strong>in</strong> diesem Dokument ersche<strong>in</strong>enden Produktnamen dienen nur zu Identifikationszwecken<br />

und s<strong>in</strong>d Eigentum ihrer jeweiligen Besitzer.


Inhaltsverzeichnis<br />

1 <strong>E<strong>in</strong></strong>leitung <strong>Netzwerk</strong> 1<br />

1.1 Zu diesen Unterlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1<br />

1.2 Bezeichnung von Dateien und Verzeichnissen . . . . . . . . . . . . . . . . . 2<br />

1.3 Begriffserklärungen - Bereich <strong>Netzwerk</strong> . . . . . . . . . . . . . . . . . . . . . 2<br />

1.4 Begriffserklärungen - Telefonie . . . . . . . . . . . . . . . . . . . . . . . . . 5<br />

2 OSI-Schichtenmodell 9<br />

2.1 Kategorisierungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9<br />

2.2 Protokollhierarchien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9<br />

2.2.1 Hierarchie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9<br />

2.3 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10<br />

2.4 Die e<strong>in</strong>zelnen Schichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />

2.4.1 Bitübertragungsschicht . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />

2.4.2 Sicherungsschicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />

2.4.3 Vermittlungsschicht . . . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />

2.4.4 Transportschicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />

2.4.5 Sitzungsschicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />

2.4.6 Darstellungsschicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />

2.4.7 Verarbeitungsschicht . . . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />

2.5 Konzepte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />

2.5.1 Protokolle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14<br />

2.6 <strong>E<strong>in</strong></strong>ordnungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14<br />

2.7 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15<br />

2.7.1 OSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15<br />

2.7.2 <strong>Netzwerk</strong>e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16<br />

3 LAN Hardware 17<br />

3.1 Ethernet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17<br />

3.1.1 Ethernet-Adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19<br />

3.1.2 Koaxialkabelbasierte Netze für 10 MBit . . . . . . . . . . . . . . . . 19<br />

3.1.3 Twisted-Pair-basierte Verkabelungen 10/100 Mbit . . . . . . . . . . . 20<br />

3.1.4 1000 Mbit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20<br />

3.1.5 Ethernet unter L<strong>in</strong>ux . . . . . . . . . . . . . . . . . . . . . . . . . . 20<br />

3.2 Funk-Netze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22<br />

3.3 TokenR<strong>in</strong>g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24<br />

3.4 <strong>Netzwerk</strong>-Interfaces von L<strong>in</strong>ux . . . . . . . . . . . . . . . . . . . . . . . . . 26<br />

3.5 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27<br />

3.5.1 Ethernet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27<br />

3


4 INHALTSVERZEICHNIS<br />

4 WAN Hardware 29<br />

4.1 <strong>E<strong>in</strong></strong>leitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29<br />

4.2 Leistung und Kosten <strong>der</strong> e<strong>in</strong>zelnen Technologien . . . . . . . . . . . . . . . 30<br />

4.2.1 Leistung / Datendurchsatz . . . . . . . . . . . . . . . . . . . . . . . 30<br />

4.2.2 Kosten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30<br />

4.3 Telefonnetze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30<br />

4.3.1 Das klassische Telefonnetz . . . . . . . . . . . . . . . . . . . . . . . . 31<br />

4.3.2 Digitale Telefonnetze - ISDN . . . . . . . . . . . . . . . . . . . . . . 31<br />

4.3.3 Mobilfunknetze nach dem GSM-Standard . . . . . . . . . . . . . . . 32<br />

4.3.4 GPRS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32<br />

4.3.5 HSCSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33<br />

4.3.6 Mobilfunknetze <strong>der</strong> dritten Generation - UMTS . . . . . . . . . . . . 33<br />

4.4 ISDN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34<br />

4.5 Modem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34<br />

4.6 ADSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34<br />

4.6.1 Designüberlegungen . . . . . . . . . . . . . . . . . . . . . . . . . . . 35<br />

4.6.2 Übertragungsmethoden . . . . . . . . . . . . . . . . . . . . . . . . . 35<br />

4.6.3 Vorteile <strong>der</strong> neuen Technik . . . . . . . . . . . . . . . . . . . . . . . 36<br />

4.6.4 Benutzung unter L<strong>in</strong>ux . . . . . . . . . . . . . . . . . . . . . . . . . 37<br />

4.7 ATM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37<br />

4.7.1 Die ATM-Zelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38<br />

4.8 FDDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40<br />

4.9 Mobilfunknetze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40<br />

4.9.1 GSM, HSCSD, GPRS und UMTS . . . . . . . . . . . . . . . . . . . 40<br />

4.10 <strong>Netzwerk</strong>adapter für Mobilfunknetze . . . . . . . . . . . . . . . . . . . . . . 41<br />

5 TCP-IP 43<br />

5.1 Schaffung von ”Inter-Nets” . . . . . . . . . . . . . . . . . . . . . . . . . . . 43<br />

5.2 Überblick über TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44<br />

5.3 Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46<br />

5.4 Internet Protocol (IP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46<br />

5.5 Spezifikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48<br />

5.5.1 IPv4-Standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48<br />

5.5.2 Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48<br />

5.5.3 Adressbereiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49<br />

5.5.4 Spezielle IP-Adressen . . . . . . . . . . . . . . . . . . . . . . . . . . 50<br />

5.5.5 Private IP-Adressen . . . . . . . . . . . . . . . . . . . . . . . . . . . 51<br />

5.6 Der IP-Hea<strong>der</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52<br />

5.6.1 Fragmentierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53<br />

5.7 IP-Rout<strong>in</strong>g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53<br />

5.7.1 Pr<strong>in</strong>zip <strong>der</strong> IP-Netze . . . . . . . . . . . . . . . . . . . . . . . . . . . 54<br />

5.7.2 Rout<strong>in</strong>g (Die Wege im Netz) . . . . . . . . . . . . . . . . . . . . . . 55<br />

5.7.3 <strong>E<strong>in</strong></strong>faches Hostrout<strong>in</strong>g . . . . . . . . . . . . . . . . . . . . . . . . . . 56<br />

5.7.4 Rout<strong>in</strong>gentscheidung . . . . . . . . . . . . . . . . . . . . . . . . . . . 56<br />

5.7.5 Subnett<strong>in</strong>g und Supernett<strong>in</strong>g . . . . . . . . . . . . . . . . . . . . . . 58<br />

5.7.6 QoS-Rout<strong>in</strong>g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60<br />

5.8 Address Resolution Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . 61<br />

5.8.1 ARP - Hilfsprotokoll des IP . . . . . . . . . . . . . . . . . . . . . . . 61<br />

5.8.2 Funktionsweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62


INHALTSVERZEICHNIS 5<br />

5.8.3 ARP unter L<strong>in</strong>ux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64<br />

5.8.4 <strong>E<strong>in</strong></strong>gebaute Sicherheitslücken . . . . . . . . . . . . . . . . . . . . . . 66<br />

5.8.5 Gefahrenabwehr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68<br />

5.8.6 ARP und doppelte IP-Adressen . . . . . . . . . . . . . . . . . . . . . 69<br />

5.8.7 Proxy-ARP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70<br />

5.8.8 Probleme durch Proxy-ARP . . . . . . . . . . . . . . . . . . . . . . . 71<br />

5.9 ICMP - Internet Control Message Protocol . . . . . . . . . . . . . . . . . . 72<br />

5.10 Doma<strong>in</strong>-Name-Service (DNS) . . . . . . . . . . . . . . . . . . . . . . . . . . 73<br />

5.11 Transmission Control Protocol (TCP) . . . . . . . . . . . . . . . . . . . . . 75<br />

5.12 User Datagram Protocol (UDP) . . . . . . . . . . . . . . . . . . . . . . . . . 77<br />

5.13 Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78<br />

5.14 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78<br />

5.14.1 Internets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78<br />

5.14.2 Internet Protokoll / Hea<strong>der</strong> . . . . . . . . . . . . . . . . . . . . . . . 78<br />

5.14.3 IP-Netze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79<br />

5.14.4 Fragmentierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79<br />

5.14.5 IP-Rout<strong>in</strong>g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80<br />

5.14.6 ARP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80<br />

6 L<strong>in</strong>ux im <strong>Netzwerk</strong> 81<br />

6.1 IP-Konfiguration unter L<strong>in</strong>ux . . . . . . . . . . . . . . . . . . . . . . . . . . 81<br />

6.1.1 Die traditionellen Tools . . . . . . . . . . . . . . . . . . . . . . . . . 81<br />

6.1.2 Rout<strong>in</strong>g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82<br />

6.1.3 Next Generation IP-Config . . . . . . . . . . . . . . . . . . . . . . . 83<br />

6.1.4 Das Kommando ip . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83<br />

6.1.5 Erste Schritte mit ip . . . . . . . . . . . . . . . . . . . . . . . . . . . 85<br />

6.2 Weitergehende Anwendungen von IProute2 . . . . . . . . . . . . . . . . . . 86<br />

6.2.1 Weitere Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87<br />

6.2.2 Rout<strong>in</strong>g Policy Database . . . . . . . . . . . . . . . . . . . . . . . . 88<br />

6.2.3 Generelle 2-Wege-Routen . . . . . . . . . . . . . . . . . . . . . . . . 89<br />

6.2.4 Dienste-basiertes Rout<strong>in</strong>g . . . . . . . . . . . . . . . . . . . . . . . . 91<br />

6.3 Überprüfung <strong>der</strong> Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . 91<br />

6.4 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91<br />

6.4.1 IP-Konfiguration und Erreichbarkeit . . . . . . . . . . . . . . . . . . 91<br />

6.4.2 Datenverkehr zählen . . . . . . . . . . . . . . . . . . . . . . . . . . . 92<br />

7 DHCP 93<br />

7.1 Automatische IP-Zuweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . 93<br />

7.2 Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93<br />

7.3 DHCP-Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96<br />

7.3.1 DHCP-Standardoptionen . . . . . . . . . . . . . . . . . . . . . . . . 97<br />

7.3.2 DHCP-DNS-Verb<strong>in</strong>dung . . . . . . . . . . . . . . . . . . . . . . . . . 98<br />

7.4 Benutzerdef<strong>in</strong>ierte Optionen . . . . . . . . . . . . . . . . . . . . . . . . . . . 99<br />

7.5 Die Verwendung von Vendor-Code-Identifiern . . . . . . . . . . . . . . . . . 100<br />

7.6 DHCP-Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101<br />

7.7 DHCP mit LDAP-Backend . . . . . . . . . . . . . . . . . . . . . . . . . . . 104<br />

7.8 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106<br />

7.8.1 DHCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106


6 INHALTSVERZEICHNIS<br />

8 DNS 107<br />

8.1 <strong>E<strong>in</strong></strong>stieg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107<br />

8.1.1 Enstehungsgeschichte . . . . . . . . . . . . . . . . . . . . . . . . . . 107<br />

8.1.2 DNS - Das virtuelle IP-Telefonbuch . . . . . . . . . . . . . . . . . . 109<br />

8.1.3 Regeln für die Namensgebung . . . . . . . . . . . . . . . . . . . . . . 109<br />

8.1.4 Registrieren und Verwalten von Doma<strong>in</strong>s . . . . . . . . . . . . . . . 110<br />

8.2 Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111<br />

8.2.1 Nameserver und Zuständigkeiten . . . . . . . . . . . . . . . . . . . . 111<br />

8.2.2 Cach<strong>in</strong>g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113<br />

8.2.3 Primärer und sekundäre Nameserver . . . . . . . . . . . . . . . . . . 113<br />

8.3 DNS-Server mit L<strong>in</strong>ux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113<br />

8.3.1 Der Dämon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114<br />

8.3.2 Die DNS-Datenbank . . . . . . . . . . . . . . . . . . . . . . . . . . . 115<br />

8.3.3 Starten und Anhalten des Nameservers . . . . . . . . . . . . . . . . 117<br />

8.3.4 Slave-Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117<br />

8.3.5 Delegation e<strong>in</strong>er Subdoma<strong>in</strong> . . . . . . . . . . . . . . . . . . . . . . . 118<br />

8.4 Dynamische Updates <strong>der</strong> Zonendateien . . . . . . . . . . . . . . . . . . . . . 119<br />

8.4.1 Sicherheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119<br />

8.5 DNS bekommt neue Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . 121<br />

8.5.1 ENUM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121<br />

8.5.2 IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122<br />

8.5.3 DNS als Bannerfilter . . . . . . . . . . . . . . . . . . . . . . . . . . . 122<br />

8.6 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123<br />

8.6.1 Rechnernamen im Internet . . . . . . . . . . . . . . . . . . . . . . . 123<br />

8.6.2 Doma<strong>in</strong> Name Service (DNS) . . . . . . . . . . . . . . . . . . . . . . 124<br />

8.6.3 DNS Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124<br />

9 Webserver 125<br />

9.1 Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125<br />

9.2 HTTP-Kommunikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126<br />

9.3 Was ist e<strong>in</strong> Webserver? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127<br />

9.4 Apache 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127<br />

9.4.1 Erweiterte Funktionalität . . . . . . . . . . . . . . . . . . . . . . . . 127<br />

9.5 Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127<br />

9.5.1 Optionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128<br />

9.5.2 Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129<br />

9.5.3 User-WWW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129<br />

9.6 Webserver Erweiterungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130<br />

9.6.1 Die Benutzer-Homepage - mod userdir . . . . . . . . . . . . . . . . . 131<br />

9.6.2 URL-Umschreiber mod rewrite . . . . . . . . . . . . . . . . . . . . . 131<br />

9.6.3 Zugriffskontrollen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131<br />

9.6.4 Kompression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133<br />

9.6.5 Das Web-DAV Modul . . . . . . . . . . . . . . . . . . . . . . . . . . 133<br />

9.6.6 Vrituelle Webserver . . . . . . . . . . . . . . . . . . . . . . . . . . . 134<br />

9.7 SSL (Secure Socket Layer) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135<br />

9.7.1 Funktionsweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136<br />

9.7.2 Zertifikate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136<br />

9.7.3 Zertifikate erzeugen . . . . . . . . . . . . . . . . . . . . . . . . . . . 136<br />

9.7.4 Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137


INHALTSVERZEICHNIS 7<br />

9.8 CGI (-Modul) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137<br />

9.9 PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138<br />

9.9.1 Das Apache-PHP-Modul . . . . . . . . . . . . . . . . . . . . . . . . . 139<br />

9.10 SSI (Server Side Includes) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140<br />

9.11 Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141<br />

9.12 HTTP-Kommunikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142<br />

9.13 Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142<br />

9.14 HTTP-Kommunikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143<br />

9.15 Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143<br />

9.16 HTTP-Kommunikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144<br />

9.17 Dokumentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144<br />

10 Mail 145<br />

10.1 SMTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146<br />

10.1.1 E-Mail-Adresse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147<br />

10.1.2 Versenden e<strong>in</strong>er E-Mail . . . . . . . . . . . . . . . . . . . . . . . . . 147<br />

10.1.3 Mail-Body . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148<br />

10.1.4 E-Mail Hea<strong>der</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149<br />

10.1.5 Open-Relay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150<br />

10.1.6 Sicherheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150<br />

10.2 sendmail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152<br />

10.3 exim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152<br />

10.4 POP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153<br />

10.5 IMAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155<br />

10.6 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156<br />

10.6.1 Dienste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156<br />

11 Fileserver 157<br />

11.1 <strong>Unix</strong>-<strong>Netzwerk</strong>dateisystem - NFS . . . . . . . . . . . . . . . . . . . . . . . . 157<br />

11.1.1 NFS im <strong>E<strong>in</strong></strong>satz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158<br />

11.1.2 NFS und Portmapper . . . . . . . . . . . . . . . . . . . . . . . . . . 159<br />

11.1.3 NFS-Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161<br />

11.1.4 NFS-Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161<br />

11.1.5 NFS und (Un)Sicherheit . . . . . . . . . . . . . . . . . . . . . . . . . 161<br />

11.2 Andrew Filesystem (AFS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162<br />

11.2.1 Die Clientseite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162<br />

11.3 File Transfer Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166<br />

11.3.1 Dateiarchiv - FTP-Server . . . . . . . . . . . . . . . . . . . . . . . . 166<br />

11.3.2 FTP-Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166<br />

11.4 Das M<strong>in</strong>imal-FTP (TFTP) . . . . . . . . . . . . . . . . . . . . . . . . . . . 166<br />

11.5 Weitere Fileserver-Konzepte . . . . . . . . . . . . . . . . . . . . . . . . . . . 169<br />

11.6 Network Block Devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170<br />

11.7 NBDs im <strong>E<strong>in</strong></strong>satz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171<br />

11.7.1 Erste Versuche mit NBD . . . . . . . . . . . . . . . . . . . . . . . . 171<br />

11.7.2 NBD und Filesysteme . . . . . . . . . . . . . . . . . . . . . . . . . . 172<br />

11.7.3 DNBD - e<strong>in</strong>e spezialisierte Alternative . . . . . . . . . . . . . . . . . 173<br />

11.8 Spezielle Blockdevice-Erweiterungen . . . . . . . . . . . . . . . . . . . . . . 175


8 INHALTSVERZEICHNIS<br />

12 Samba 177<br />

12.1 Samba - Brücke zwischen Microsoft- und <strong>Unix</strong>-Welt . . . . . . . . . . . . . 177<br />

12.1.1 <strong>E<strong>in</strong></strong>satzgebiete von Samba . . . . . . . . . . . . . . . . . . . . . . . . 177<br />

12.2 Erste Versuche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178<br />

12.2.1 W<strong>in</strong>dows-Server - L<strong>in</strong>ux-Client . . . . . . . . . . . . . . . . . . . . . 178<br />

12.2.2 L<strong>in</strong>ux-Server - W<strong>in</strong>dows-Client . . . . . . . . . . . . . . . . . . . . . 180<br />

12.3 Weitergehende Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . 181<br />

12.3.1 Homeverzeichnisse für W<strong>in</strong>dows und L<strong>in</strong>ux . . . . . . . . . . . . . . 183<br />

12.3.2 Druckerfreigaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184<br />

12.3.3 Nachrichtendienst auf L<strong>in</strong>ux-Clients . . . . . . . . . . . . . . . . . . 184<br />

12.4 Die zentrale Samba-Konfigurationsdatei . . . . . . . . . . . . . . . . . . . . 184<br />

12.4.1 Struktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185<br />

12.4.2 Wichtige Optionen <strong>in</strong> <strong>der</strong> Sektion [global] . . . . . . . . . . . . . . . 185<br />

12.4.3 Wichtige Optionen <strong>der</strong> an<strong>der</strong>en Abschnitte . . . . . . . . . . . . . . 186<br />

12.4.4 Virtuelle Samba-Server . . . . . . . . . . . . . . . . . . . . . . . . . 187<br />

12.5 Controller-Funktionalität . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187<br />

12.5.1 Der W<strong>in</strong>dows Namensdienst . . . . . . . . . . . . . . . . . . . . . . . 187<br />

12.5.2 NetBIOS Namen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188<br />

12.5.3 Der Nameserver (WINS) . . . . . . . . . . . . . . . . . . . . . . . . . 190<br />

12.6 Samba als PDC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191<br />

12.6.1 Benutzerprofile und Logon-Skripten . . . . . . . . . . . . . . . . . . 192<br />

12.7 Samba und LDAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194<br />

12.7.1 Konfiguration des LDAP-Servers . . . . . . . . . . . . . . . . . . . . 195<br />

12.7.2 Die neue Samba-Konfiguration . . . . . . . . . . . . . . . . . . . . . 195<br />

12.7.3 Die IDEALX-Skripten . . . . . . . . . . . . . . . . . . . . . . . . . . 197<br />

12.7.4 Fazit von Samba-LDAP-Aktionen . . . . . . . . . . . . . . . . . . . 202<br />

13 Ressourcenverwaltung 203<br />

13.1 <strong>E<strong>in</strong></strong>leitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203<br />

13.2 NIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203<br />

13.2.1 Zielsetzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203<br />

13.2.2 NIS-Datenbanken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203<br />

13.2.3 NIS-Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204<br />

13.2.4 NIS-Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204<br />

13.3 Hierarchische Datenbank: LDAP . . . . . . . . . . . . . . . . . . . . . . . . 204<br />

13.3.1 Intro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204<br />

13.3.2 Was kann mit LDAP abgebildet werden . . . . . . . . . . . . . . . . 205<br />

13.3.3 Das Datenmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206<br />

13.3.4 Das Protokoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209<br />

13.4 LDAP praktisch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209<br />

13.4.1 Server- und Clientprogramme unter L<strong>in</strong>ux . . . . . . . . . . . . . . . 209<br />

13.4.2 <strong>E<strong>in</strong></strong>e e<strong>in</strong>fache Beispielkonfiguration . . . . . . . . . . . . . . . . . . . 210<br />

13.4.3 Absicherung durch SSL . . . . . . . . . . . . . . . . . . . . . . . . . 213<br />

14 Drucken im Netz 219<br />

14.1 <strong>E<strong>in</strong></strong>leitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219<br />

14.1.1 Anfor<strong>der</strong>ungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219<br />

14.1.2 Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220<br />

14.2 CUPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220


INHALTSVERZEICHNIS 9<br />

14.2.1 Client-Server-Architektur . . . . . . . . . . . . . . . . . . . . . . . . 221<br />

14.2.2 IPP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221<br />

14.2.3 Funktionsweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222<br />

14.2.4 Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222<br />

14.2.5 Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222<br />

14.3 Alternativen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223<br />

15 Wichtige <strong>Netzwerk</strong>kommandos 225<br />

15.1 Offene Dateien und <strong>Netzwerk</strong>verb<strong>in</strong>dungen . . . . . . . . . . . . . . . . . . 225<br />

15.2 netstat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225<br />

15.3 Systemprogramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226<br />

15.3.1 Dämonen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226<br />

15.4 <strong>Netzwerk</strong>konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227<br />

15.4.1 <strong>Netzwerk</strong>tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227<br />

15.4.2 <strong>Netzwerk</strong>überwachung . . . . . . . . . . . . . . . . . . . . . . . . . . 229<br />

16 <strong>Netzwerk</strong>überwachung<br />

16.1 Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

231<br />

231<br />

16.2 SNMP - Das Simple Network Mangement Protocol . . . . . . . . . . . . . .<br />

16.2.1 Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

231<br />

231<br />

16.3 Die Datendef<strong>in</strong>ition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232<br />

16.3.1 Der SNMP-Namensraum und die Management Information Bases . . 233<br />

16.3.2 Die SNMP-Agenten . . . . . . . . . . . . . . . . . . . . . . . . . . . 234<br />

16.3.3 Der Kommunikations-Code <strong>der</strong> Agenten . . . . . . . . . . . . . . . . 234<br />

16.4 SNMP-Implementierungen unter L<strong>in</strong>ux . . . . . . . . . . . . . . . . . . . . . 235<br />

16.5 Kommandos zur Datenbeschaffung . . . . . . . . . . . . . . . . . . . . . . . 235<br />

16.6 Konfiguration des UCD-SNMP . . . . . . . . . . . . . . . . . . . . . . . . . 236<br />

16.6.1 Der Kopf def<strong>in</strong>iert die Zugriffs-Policies . . . . . . . . . . . . . . . . . 236<br />

16.6.2 Parameter <strong>der</strong> ”Enterprise”-Erweiterungen . . . . . . . . . . . . . . 237<br />

16.6.3 Erweiterung durch externe Skripten und Programme . . . . . . . . . 237<br />

16.7 Überwachung weiterer Parameter . . . . . . . . . . . . . . . . . . . . . . . . 238<br />

16.7.1 Weitergehende Ergänzungen . . . . . . . . . . . . . . . . . . . . . . . 239<br />

16.7.2 Parameter <strong>der</strong> Host-Ressource-Erweiterungen . . . . . . . . . . . . . 240<br />

16.8 MRTG als Frontend zur Anzeige von Zeitreihen . . . . . . . . . . . . . . . . 241<br />

16.9 <strong>E<strong>in</strong></strong>ige abschließende Worte zu SNMP . . . . . . . . . . . . . . . . . . . . . 242<br />

16.10Weiterführende Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242<br />

17 Systemsicherheit 245<br />

17.1 Generelle Überlegungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245<br />

17.2 Sicherheit auf dem Rechner . . . . . . . . . . . . . . . . . . . . . . . . . . . 245<br />

17.2.1 <strong>E<strong>in</strong></strong>leitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245<br />

17.2.2 Passwörter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245<br />

17.2.3 Der Adm<strong>in</strong>-Account . . . . . . . . . . . . . . . . . . . . . . . . . . . 246<br />

17.2.4 /etc/passwd und /etc/shadow . . . . . . . . . . . . . . . . . . . . . . 246<br />

17.2.5 Locken o<strong>der</strong> ausloggen . . . . . . . . . . . . . . . . . . . . . . . . . . 246<br />

17.2.6 Setuid und Verzeichnisse . . . . . . . . . . . . . . . . . . . . . . . . . 246<br />

17.2.7 Setuid und Mount<strong>in</strong>g . . . . . . . . . . . . . . . . . . . . . . . . . . 247<br />

17.2.8 Browser, CGI / Java-Applet und B<strong>in</strong>aries, per Mail . . . . . . . . . 247<br />

17.2.9 Physikalischer Zugriff . . . . . . . . . . . . . . . . . . . . . . . . . . 247<br />

17.3 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247


10 INHALTSVERZEICHNIS<br />

17.4 Sicherheit im <strong>Netzwerk</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248<br />

17.4.1 <strong>E<strong>in</strong></strong>leitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248<br />

17.4.2 Gesicherte Verb<strong>in</strong>dungen . . . . . . . . . . . . . . . . . . . . . . . . 248<br />

17.4.3 ssh und scp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248<br />

17.4.4 Der Intenet-”Super”-Daemon (x)<strong>in</strong>etd . . . . . . . . . . . . . . . . . 249<br />

17.4.5 xhost + und das unsichtbare Fenster . . . . . . . . . . . . . . . . . . 250<br />

17.4.6 .rhosts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250<br />

17.4.7<br />

Überprüfung <strong>der</strong> <strong>Netzwerk</strong>sicherheit eigener und an<strong>der</strong>er Rechner . . 250<br />

17.4.8 Firewall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251<br />

17.5 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251<br />

17.5.1 Secure Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251<br />

18 Sicheres IP 253<br />

18.1 Sicherheitsprobleme des <strong>der</strong>zeitigen IP-Standards . . . . . . . . . . . . . . . 253<br />

18.1.1 Intro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253<br />

18.1.2 Offener Datentransport . . . . . . . . . . . . . . . . . . . . . . . . . 253<br />

18.1.3 Absicherung - Lösungsansätze . . . . . . . . . . . . . . . . . . . . . . 255<br />

18.2 VPNs - Sichere Netze über das Internet . . . . . . . . . . . . . . . . . . . . 257<br />

18.3 CIPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257<br />

18.3.1 Idee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257<br />

18.3.2 Aufsetzen von CIPE . . . . . . . . . . . . . . . . . . . . . . . . . . . 259<br />

18.4 IPsec-Theorie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260<br />

18.5 IPsec praktisch - FreeSWAN . . . . . . . . . . . . . . . . . . . . . . . . . . . 262<br />

18.5.1 Konfigurationsmöglichkeiten von IPsec . . . . . . . . . . . . . . . . . 263<br />

18.5.2 <strong>E<strong>in</strong></strong>richtung von IPsec unter L<strong>in</strong>ux . . . . . . . . . . . . . . . . . . . 264<br />

18.5.3 <strong>E<strong>in</strong></strong>schaltbare Optionen . . . . . . . . . . . . . . . . . . . . . . . . . 265<br />

18.5.4 Konfiguration von IPsec-Verb<strong>in</strong>dungen . . . . . . . . . . . . . . . . . 266<br />

18.6 Kommerzielle VPN-Lösungen . . . . . . . . . . . . . . . . . . . . . . . . . . 267<br />

18.6.1 Cisco-VPN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267<br />

18.6.2 Verwendung <strong>der</strong> Cisco-Tools . . . . . . . . . . . . . . . . . . . . . . . 270<br />

18.6.3 <strong>E<strong>in</strong></strong>satzszenarien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272<br />

18.6.4 Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273<br />

18.7 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273<br />

19 Firewall 275<br />

19.1 Aufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275<br />

19.2 <strong>E<strong>in</strong></strong>- und Austragen von cha<strong>in</strong>s und Filter-Regeln . . . . . . . . . . . . . . . 276<br />

19.2.1 Pakete genauer spezifizieren . . . . . . . . . . . . . . . . . . . . . . . 276<br />

19.2.2 ”Match Extensions” und Erweiterbarkeit . . . . . . . . . . . . . . . 277<br />

19.3 von ”masquerad<strong>in</strong>g” und ”packet mangl<strong>in</strong>g” . . . . . . . . . . . . . . . . . . 279<br />

19.3.1 Network Address Translation . . . . . . . . . . . . . . . . . . . . . . 279<br />

19.3.2 packet mangl<strong>in</strong>g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280<br />

19.4 connection track<strong>in</strong>g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281<br />

19.5 Referenzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282


Kapitel 1<br />

<strong>E<strong>in</strong></strong>leitung <strong>Netzwerk</strong><br />

1.1 Zu diesen Unterlagen<br />

Der Kurs ”L<strong>in</strong>ux und <strong>Netzwerk</strong>e” soll <strong>in</strong> die Begriffswelt vernetzter Rechner e<strong>in</strong>führen. Vorgestellt<br />

werden die Grundlagen von <strong>Netzwerk</strong>en und darauf aufbauende Applikationen. Zur<br />

besseren <strong>E<strong>in</strong></strong>ordnung <strong>der</strong> unterschiedlichen <strong>Netzwerk</strong>-Layer ist das OSI-Schichtenmodell<br />

vorangestellt. Gefolgt wird dieses von Ausführungen zu <strong>der</strong>zeitig verfügbarer <strong>Netzwerk</strong>hardware,<br />

wie Ethernet o<strong>der</strong> Funk-Lan und verfügbaren <strong>Netzwerk</strong>anschlüssen, wie Modem,<br />

ISDN, ATM und ADSL. Alle Erläuterungen erfolgen am Beispiel des Betriebssystems L<strong>in</strong>ux.<br />

Im Zuge des Skriptes werden etliche Programme vorgestellt, welche zu Konfiguration,<br />

Tests, Fehlersuche, Betrieb bestimmter Dienste und Abfragen dieser benötigt werden.<br />

Diese Unterlagen wurden aus Anlass mehrerer Vorlesungen, Sem<strong>in</strong>are und e<strong>in</strong>iger Fortbildungskurse<br />

zum Thema “L<strong>in</strong>ux und Adm<strong>in</strong>istration <strong>in</strong> <strong>Netzwerk</strong>en”, ”L<strong>in</strong>ux als Beispiel<br />

e<strong>in</strong>es <strong>Netzwerk</strong>betriebssystems” o<strong>der</strong> ”<strong>E<strong>in</strong></strong>führung <strong>in</strong> IP-<strong>Netzwerk</strong>e” zusammengestellt. Sie<br />

s<strong>in</strong>d <strong>in</strong>zwischen e<strong>in</strong> geme<strong>in</strong>sames Projekt des Rechenzentrums <strong>der</strong> Universität Freiburg und<br />

<strong>der</strong> mathematischen Fakultät Gött<strong>in</strong>gen. Die Unterlagen werden permanent aktualisiert, jedoch<br />

können e<strong>in</strong>ige Teile durchaus älteren Datums se<strong>in</strong>.<br />

Sollte es Fehler <strong>in</strong> den Texten o<strong>der</strong> Probleme geben, bitte ich Sie, mich e<strong>in</strong>fach zu<br />

benachrichtigen. 1 Viele Teile stammen von Artikeln ab, die ich irgendwann mal <strong>in</strong> <strong>der</strong><br />

e<strong>in</strong>en o<strong>der</strong> an<strong>der</strong>en Publikumszeitschrift veröffentlicht hatte.<br />

Ich habe daher nichts dagegen, wenn diese Unterlagen ganz o<strong>der</strong> zum Teil für an<strong>der</strong>e<br />

Projekte Verwendung f<strong>in</strong>den. Ich möchte dann nur auf den Haftungsausschluss h<strong>in</strong>weisen<br />

und bitten, die Quellen zu überprüfen und gegebenenfalls zu kennzeichnen. Deshalb möchte<br />

ich die GPL möchte auf diese Unterlagen angewandt sehen.<br />

Das Skript erhebt ke<strong>in</strong>en Anspruch auf Vollständigkeit o<strong>der</strong> Orig<strong>in</strong>alität. Vieles f<strong>in</strong>det<br />

man im Internet o<strong>der</strong> <strong>in</strong> Lehrbüchern ebenso gut o<strong>der</strong> besser. Dort nachzuschlagen und zu<br />

vergleichen, sei den Lesern nachdrücklich ans Herz gelegt. Dennoch wird immer wie<strong>der</strong> e<strong>in</strong><br />

”eigener” Weg <strong>der</strong> Darstellung begangen, wobei manches über den normalen Umfang e<strong>in</strong>er<br />

<strong>E<strong>in</strong></strong>führung h<strong>in</strong>ausgehen kann. Dafür kommen manche traditionell breits abgehandelten<br />

Gebiete hier recht kurz weg. Manches fehlt auch ganz, weil man es woan<strong>der</strong>s leicht f<strong>in</strong>den<br />

kann. Dieses Skript will und kann ke<strong>in</strong> Lehrbuch ersetzen (das brauchen Sie außerdem),<br />

son<strong>der</strong>n ergänzen. Das “Self-L<strong>in</strong>ux”-Projekt 2 bietet e<strong>in</strong>e vernünftige Ergänzung zu den<br />

vorliegenden Unterlagen.<br />

<strong>E<strong>in</strong></strong>iges wird an<strong>der</strong>s als gewohnt präsentiert. Es werden Beispiele und auch zusätzliche<br />

Informationen angeboten, die nicht unbed<strong>in</strong>gt zum Prüfungsstoff gehören, aber gut zu wis-<br />

1 beispielsweise per Mail an dirk@goe.net<br />

2 www.selfl<strong>in</strong>ux.org<br />

1


2 KAPITEL 1. EINLEITUNG NETZWERK<br />

sen s<strong>in</strong>d (o<strong>der</strong> die man hier bequemer f<strong>in</strong>det). Dafür entfallen viele Aspekte, die <strong>in</strong> den<br />

Standard-Lehrbüchern gut dargestellt o<strong>der</strong> weitgehend bekannt s<strong>in</strong>d. Die weiterführende<br />

Literatur f<strong>in</strong>det sich am Ende e<strong>in</strong>es Abschnitts. Ich hoffe, dass diese Kursunterlagen den<br />

<strong>E<strong>in</strong></strong>stieg <strong>in</strong> <strong>Netzwerk</strong>e und L<strong>in</strong>ux <strong>in</strong> diesen erleichtern. Die Beispiele habe ich <strong>in</strong> den meisten<br />

Fällen selbst ausprobiert und Angaben aus Konfigurationsdateien stammen aus me<strong>in</strong>er<br />

eigenen <strong>Praxis</strong>. Trotzdem können Fehler enthalten se<strong>in</strong>, die ich dann zu entschuldigen bitte<br />

...<br />

1.2 Bezeichnung von Dateien und Verzeichnissen<br />

Zur Erhöhung <strong>der</strong> Lesbarkeit werden alle auführbaren Dateien/Systembefehle durch Fettdruck,<br />

z.B. dhcpd hervorgehoben. Alle Konfigurationsdateien, IP- und MAC-Adressen,<br />

Hostnamen werden italic gesetzt, um sie vom Druckbild hervorzuheben.<br />

Um den Lesefluss nicht stark zu stören, werden viele Erläuterungen als Fussnoten angefügt.<br />

Auch alle L<strong>in</strong>ks zu den entsprechenden Webseiten s<strong>in</strong>d hier zu f<strong>in</strong>den.<br />

1.3 Begriffserklärungen - Bereich <strong>Netzwerk</strong><br />

Im folgenden werden e<strong>in</strong>ige Begriffe und Abkürzungen erläutert, die im Bereich L<strong>in</strong>ux im<br />

<strong>Netzwerk</strong> und Internet häufig vorkommen.<br />

Bandbreite wird <strong>in</strong> mehreren Bedeutungen benutzt: Zum e<strong>in</strong>en ist die Bandbreite e<strong>in</strong><br />

Mass für die Breite e<strong>in</strong>es Frequenzbands. Die Differenz zwischen e<strong>in</strong>er oberen und e<strong>in</strong>er<br />

unteren Grenzfrequenz, die nie über- o<strong>der</strong> unterschritten wird. So hat beispielsweise hat e<strong>in</strong><br />

analoges Telefonsignal, das <strong>in</strong> e<strong>in</strong>em Frequenzbandbereich von 300 Hz bis 3400 Hz übertragen<br />

wird, e<strong>in</strong>e Bandbreite von 3100 Hz. An<strong>der</strong>erseits ist die Bandbreite e<strong>in</strong> Mass für die<br />

Anzahl Bits pro Sekunde, die gleichzeitig über e<strong>in</strong>e Kommunikationsleitung transferiert<br />

werden können. So hat das klassische Ethernet e<strong>in</strong>e Bandbreite von 10 Mbit/s.<br />

CSMA Carrier Sense Multiple Access beschreibt das Zugriffsverfahren für bestimmte<br />

Broadcast-Netze, wie Ethernet o<strong>der</strong> TokenR<strong>in</strong>g. Dabei gibt es zwei wichtige Ausprägungen:<br />

CD steht für Collision Detection, das Erkennen und CA für Collision Avoidance - das<br />

Vermeiden von Paketzusammenstößen. Ersteres ist charakteristisch für Ethernet, das Zweite<br />

für TokenR<strong>in</strong>g o<strong>der</strong> FDDI.<br />

Datenübertragungsrate Die maximale Datenübertragungsrate R lässt sich gemäss dem<br />

Nyquist-Theorem folgen<strong>der</strong>massen berechnen: Wenn das Signal aus V diskreten Stufen<br />

besteht: R = 2Hlog2V Bit/s. Nach Shannon beträgt die maximale Datenübertragungsrate<br />

R e<strong>in</strong>es rauschenden Kanals mit e<strong>in</strong>er Bandbreite von H Hz und e<strong>in</strong>em Rauschabstand von<br />

S/N gleich Hlog2(1 + S/N), die maximale Anzahl von Bit pro Sekunde.<br />

Dezibel (dB) ist e<strong>in</strong> e<strong>in</strong>heitenloses Maß. Bel ist nach dem Physiker Alexan<strong>der</strong> Graham<br />

Bell benannt. In <strong>der</strong> Nachrichtentechnik verwendet kommt üblicherweise die Masse<strong>in</strong>heit<br />

Dezibel (dB) zum <strong>E<strong>in</strong></strong>satz. Das Dezibel ist e<strong>in</strong> logarithmisches Maß. Es vere<strong>in</strong>facht<br />

die Berechnung <strong>der</strong> Dämpfung o<strong>der</strong> Verstärkung. Damit müssen für die Ermittlung <strong>der</strong><br />

Verstärkung e<strong>in</strong>es Gesamtsystems nur die e<strong>in</strong>zelnen dB-Werte addiert werden. <strong>E<strong>in</strong></strong>e Rechnung<br />

<strong>der</strong> Sendeleistung (beispielsweise e<strong>in</strong>es WLAN-Access-Po<strong>in</strong>ts) addiert die Leistung


1.3. BEGRIFFSERKLÄRUNGEN - BEREICH NETZWERK 3<br />

des Sen<strong>der</strong>s/Empfängers zur Leistung e<strong>in</strong>es eventuell verwendeten Verstärkers und <strong>der</strong> Antennenleistung.<br />

Von diesem Wert zieht man den Leistungsverlust durch Kabel, Stecker<br />

und eventuellem Blitzschutz ab. <strong>E<strong>in</strong></strong>e Verän<strong>der</strong>ung um 3dB entspricht immer e<strong>in</strong>er Leistungsverdoppelung<br />

o<strong>der</strong> Halbierung. Die <strong>E<strong>in</strong></strong>heit Dezibel Milliwatt (dBm) beschreibt den<br />

Leistungspegel bezogen auf e<strong>in</strong> Milliwatt. Die <strong>E<strong>in</strong></strong>heit ist e<strong>in</strong>e absolute Angabe. 20 dBm entsprechen<br />

e<strong>in</strong>er Leistung von 100 mW, 0dBm entsprechen 1 mW. Der Antennengew<strong>in</strong>n <strong>in</strong> dBi<br />

beschreibt die Leistungsverbesserung gegenüber e<strong>in</strong>em isotrophen Kugelstrahler. Sobald die<br />

Leistung nicht mehr <strong>in</strong> alle Richtungen gleichmäßig, son<strong>der</strong>n bezogen auf e<strong>in</strong> bestimmtes<br />

Raumsegment abgegeben wird, erhält man e<strong>in</strong>en Gew<strong>in</strong>n.<br />

Diskless X-Station Diskless X-Station me<strong>in</strong>t Workstations auf PC-Basis. Diese Geräte<br />

mounten ihr Dateisystem von e<strong>in</strong>em Fileserver und gestatten dem Benutzer das lokale<br />

Ausführen von Applikationen, sowie den Zugriff auf alle Laufwerke, <strong>in</strong>stallierte Erweiterungshardware<br />

(Audio, Video, SCSI, USB ...) und angeschlossene Perepheriegeräte.<br />

DHCP Dynamic Host Control Protocol. DHCP basiert auf UDP und benutzt für den<br />

Server-Kanal Port 67 und den Client-Kanal Port 68.<br />

Durchsatz o<strong>der</strong> Datendurchsatz bezeichnet die gemessene Leistung e<strong>in</strong>es Kanals und<br />

wird <strong>in</strong> Bit pro Sekunde (bps) angegeben.<br />

ERP und EIRP machen Angaben zur abgestrahlten Leistung von Antennen. ERP (Effective<br />

Radiated Power) gibt die effektiv abgestrahlte Leistung <strong>in</strong> <strong>der</strong> Hauptstrahlungsrichtung<br />

<strong>der</strong> Antenne an. EIRP (Effective Isotropic Radiated Power) wird benutzt um Richtantennen<br />

zu charakterisieren. EIRP gibt an, wie stark e<strong>in</strong>e ungerichtete Antenne (isotrop) senden<br />

müsste, um die gleiche Wirkung zu erzielen wie die Richtantenne <strong>in</strong> ihrer Hauptsen<strong>der</strong>ichtung.<br />

FTP Das File Transfer Protocal ist e<strong>in</strong>e <strong>der</strong> ältesten Möglichkeiten über TCP/IP Dateien<br />

zwischen Rechnern zu kopieren. Es verwendet das verb<strong>in</strong>dungsorientierte TCP und<br />

verwendet Port 23.<br />

LAN Local Area Network. Me<strong>in</strong>t <strong>Netzwerk</strong>e e<strong>in</strong>er ger<strong>in</strong>gen bis mittleren Ausbreitung,<br />

die sich üblicherweise <strong>der</strong> Ethernet-, ATM-, TokenR<strong>in</strong>g- o<strong>der</strong> FDDI-Technologie bedienen.<br />

Latenz ist die Dauer, die e<strong>in</strong>e Nachricht von e<strong>in</strong>em Ende e<strong>in</strong>es <strong>Netzwerk</strong>s zum an<strong>der</strong>en<br />

braucht. Die Zeitspanne, e<strong>in</strong>e Nachricht von e<strong>in</strong>em Ende e<strong>in</strong>es <strong>Netzwerk</strong>s zum an<strong>der</strong>en und<br />

wie<strong>der</strong> zurück zu senden, wird als Round Trip Time (RTT) des <strong>Netzwerk</strong>s bezeichnet, sie<br />

bewegt sich (<strong>in</strong> den meisten Netzen) meist im Millisekundenbereich.<br />

MIME Multipurpose Internet Mail Extension ist e<strong>in</strong> Kodierstandard, <strong>der</strong> die Struktur<br />

und den Aufbau von E-Mails und an<strong>der</strong>en Internetnachrichten festlegt.<br />

Modulation Unter Modulation versteht man die Verän<strong>der</strong>ung von Merkmalen e<strong>in</strong>es Signals,<br />

z.B. <strong>der</strong> Frequenz, Amplitude o<strong>der</strong> Phase, um Informationen zu kodieren.<br />

NFS Network File System. NFS ist e<strong>in</strong> UDP-basiertes Protokoll, das Dateisysteme über<br />

e<strong>in</strong> TCP/IP-<strong>Netzwerk</strong> zur Verfügung stellen kann.


4 KAPITEL 1. EINLEITUNG NETZWERK<br />

Nyquist-Theorem besagt, dass e<strong>in</strong> Signal mit <strong>der</strong> Bandbreite H durch 2H Abtastwerte<br />

pro Sekunde vollständig rekonstruiert werden kann. An<strong>der</strong>s ausgedrückt kann e<strong>in</strong> Signal<br />

<strong>der</strong> Frequenz f mit 2f Abtastwerten vollständig rekonstruiert werden.<br />

OSI-Schichtenmodell Dieses Modell <strong>der</strong> International Organization for Standardization<br />

(ISO) betrifft die Organisation von Datenfernübertragungen und veranschaulicht die<br />

ebenenorientierte Denkweise <strong>in</strong> <strong>der</strong> Informatik.<br />

Port Neben <strong>der</strong> IP-Adresse verfügt e<strong>in</strong> Rechner über jeweils 65.535 TCP bzw. UDP-<br />

Ports. Damit wird es möglich viele verschiedene Dienste auf e<strong>in</strong>em Rechner gleichzeitig<br />

anzubieten, bzw. viele gleichzeitige Verb<strong>in</strong>dunge aufzubauen.<br />

Server Der Server ist e<strong>in</strong> Diensteanbieter im klassichen TCP/IP-Client-Server-Modell,<br />

d.h. er stellt, meistens zentral, bestimmte Funktionalitäten, wie Mail-, File- und Webdienste<br />

o<strong>der</strong> Applikationen zur Verfügung. Benutzer können sich an e<strong>in</strong>em Server anmelden, werden<br />

aber nur <strong>in</strong> den seltensten Fällen physisch vor dem Gerät sitzen.<br />

Signal-Rausch-Abstand (englisch: Signal Noise Ratio (SNR) beschreibt das Verhältnis<br />

<strong>der</strong> Signalstärke S zur Rauschstärke N , also die Intensität des thermischen Rauschens <strong>in</strong><br />

e<strong>in</strong>em Übertragungskanal: S/N , und wird <strong>in</strong> Dezibel (dB) gemessen. Es ist e<strong>in</strong> Mass für<br />

die Re<strong>in</strong>heit e<strong>in</strong>es Signals.<br />

SSH Secure Shell Verb<strong>in</strong>dung. Diese ist dem Telnet auf jeden Fall vorzuziehen, da sie<br />

verschlüsselt erfolgt. Das Programm auf <strong>der</strong> Serverseite heisst üblicherweise sshd, die Clientapplikation<br />

ssh.<br />

Telnet <strong>E<strong>in</strong></strong>es <strong>der</strong> ersten Protokolle <strong>der</strong> TCP/IP-Suite, um sich an entfernten Rechnern<br />

anmelden zu können. Telnet verwendet als Transportprotokoll TCP und arbeitet auf Port<br />

21. Der Daemon, d.h. <strong>der</strong> H<strong>in</strong>tergrundprozess, <strong>der</strong> den Telnet-Dienst auf e<strong>in</strong>em Rechner<br />

anbietet, heisst üblicherweise (<strong>in</strong>.)telnetd und wird meistens über den Internet-Super-<br />

Daemon (x)<strong>in</strong>etd gestartet. Die Clientapplikation heisst e<strong>in</strong>fach telnet. Heutzutage aus<br />

Sicherheitsgründen kaum noch Telnet-Server, jedoch lassen sich mit Telnet e<strong>in</strong>fache Tests<br />

auf TCP-basierte Dienste loslassen.<br />

TFTP Trivial File Transfer Protocol. TFTP stellt e<strong>in</strong>e stark vere<strong>in</strong>fachte Version des<br />

FTP dar und arbeitet auf Basis von UDP Port 69.<br />

UDP User Datagram Protocol. UDP ist Teil von TCP/IP und stellt e<strong>in</strong>e Implementation<br />

<strong>der</strong> Transportschicht dar. UDP arbeitet verb<strong>in</strong>dungslos.<br />

User Agent o<strong>der</strong> Benutzeragent, -programm ist e<strong>in</strong> Client Programm <strong>in</strong> <strong>Netzwerk</strong>verb<strong>in</strong>dungen.<br />

Es <strong>in</strong>itiiert Anfragen, beispiel e<strong>in</strong> Browser an e<strong>in</strong>en Web-Server.<br />

WAN Wide Area Network. Me<strong>in</strong>t <strong>Netzwerk</strong>e mit großer räumlicher Ausdehnung, die sich<br />

üblicherweise <strong>der</strong> ISDN o<strong>der</strong> ATM Technologie bedienen. (Lichtwellenleiter, Kupferkabel)


1.4. BEGRIFFSERKLÄRUNGEN - TELEFONIE 5<br />

XDMCP Das X display message control protocol steuert die Grafikschnittstelle auf <strong>Unix</strong>-<br />

Systemen. Diese Schnittstelle ist netzwerktransparent. Dabei erfolgt die Ausgabe des Grafikoberfläche<br />

des Servers lokal auf <strong>der</strong> Masch<strong>in</strong>e. Die Bentutzere<strong>in</strong>gaben durch Tastatur und<br />

Maus werden über XDMCP an den Server weitergereicht.<br />

1.4 Begriffserklärungen - Telefonie<br />

Im folgenden werden e<strong>in</strong>ige Begriffe und Abkürzungen erläutert, die im Bereich digitaler<br />

Telefonnetze, Mobiltelefonie, Voice-over-IP, ISDN häufig verwendet werden.<br />

ACM Die Address Complete Message signalisiert im PSTN, dass das Rout<strong>in</strong>g e<strong>in</strong>es Telefonanrufes<br />

erfolgt ist. Üblicherweise erhält <strong>der</strong> Anrufer <strong>in</strong> <strong>der</strong> Zwischenzeit das Rufzeichen,<br />

Ansagen wie ”The person you have called is temporarily not available”, ”This number is no<br />

longer <strong>in</strong> service” ... <strong>E<strong>in</strong></strong> PSTN-2-SIP Gateway muss e<strong>in</strong>e solche Meldung geeignet weitergeben<br />

- durch ”early media” (def<strong>in</strong>iert <strong>in</strong> RFC2543) und/o<strong>der</strong> durch 183 Session Progress.<br />

AIN Advanced Intelligent Network, siehe auch IN.<br />

ANM steht für Answer Message im PSTN.<br />

BSC Base Station Controller.<br />

BSS bezeichnet das Base Station System. Dieses besteht aus e<strong>in</strong>em o<strong>der</strong> mehreren BSC.<br />

BTS Base Transceiver Station .<br />

CCI Der Call Charge Indicator ist e<strong>in</strong> ISUP Parameterfeld.<br />

CdPN Called Party Number ist e<strong>in</strong> Teil <strong>der</strong> ISUP Message. Dieses Feld enthält den NPI<br />

(Number<strong>in</strong>g Plan Indicator), beispielsweise ”E.164” und NOA (Nature of Address, z.B.<br />

”national”).<br />

CgPN Call<strong>in</strong>g Party Number ist e<strong>in</strong> weiterer Teil <strong>der</strong> ISUP Message.<br />

CPC Die Call<strong>in</strong>g Party Category ist e<strong>in</strong> ISUP Parameterfeld.<br />

CSD Circuit Switched Data ist e<strong>in</strong> Begriff aus dem Bereich <strong>der</strong> GSM-Telefonnetze und<br />

bezeichnet den Standard zum Datenaustausch. Die Nutzdatenrate beschränkte sich auf<br />

maximal 9,6 kBit/s. In <strong>der</strong> GSM-Phase-2 wurde die Geschw<strong>in</strong>digkeit <strong>der</strong> Datenübertragung<br />

auf 14,4 kBit/s erhöht, <strong>in</strong> <strong>der</strong> GSM-Phase-2+ die Bündelung mehrerer Kanäle ermöglicht.<br />

DTAP Der Direct Transfer Application Part ist das Call Control Protocol zwischen MS<br />

und MSC.<br />

FCI Der Forward Call Indicator ist e<strong>in</strong> ISUP Parameterfeld.


6 KAPITEL 1. EINLEITUNG NETZWERK<br />

GPRS Der General Packet Radio Service benötigt ke<strong>in</strong>e eigene Infrastruktur, son<strong>der</strong>n ist<br />

lediglich e<strong>in</strong>e Erweiterung <strong>der</strong> bestehenden GSM-Netze. GPRS-Mobiltelefone stellen für den<br />

schnellen Austausch <strong>der</strong> Datenpakete e<strong>in</strong>e dauerhafte Verb<strong>in</strong>dung zu e<strong>in</strong>em <strong>E<strong>in</strong></strong>wahlpunkt<br />

(APN = Acces Po<strong>in</strong>t Name) <strong>in</strong>s Netz her. Für die Datenkommunikation wird es Endgeräten<br />

erlaubt mehrere GSM-Kanäle zusammenzufassen und für die Kommunikation zu reservieren.<br />

Bandbreiten <strong>in</strong> Funknetzen haben immer e<strong>in</strong> Problem: Alle Nutzer e<strong>in</strong>er Zelle teilen<br />

sich e<strong>in</strong> geme<strong>in</strong>sames Medium. Wollen alle geme<strong>in</strong>sam zugreifen, s<strong>in</strong>kt für jeden e<strong>in</strong>zelnen<br />

die erreichbare Datenrate. n <strong>der</strong> <strong>E<strong>in</strong></strong>führungsphase von GPRS wurde netzseitig e<strong>in</strong>e Bandbreite<br />

von 53,6 kbit/s (4 Kanäle à 13,4 kbit/s) pro Funkzelle vorgesehen. Stehen alle acht<br />

Kanäle für GPRS zur Verfügung, würde die Bandbreite auf 107,2 kbit/s steigen. Weitere<br />

Steigerungen durch bessere Fehlerprotokoll erlaubten theoretische 171,2 kbit/s (acht Kanäle<br />

a 21,4 kbit/s). Mobiltelefone arbeiten momentan mit 13,4 kbit/s pro Kanal. Sie können je<br />

nach Gerät zwei bis drei Kanäle zusammenfassen.<br />

GMSC Gateway Mobile Switch<strong>in</strong>g Centre.<br />

GSM Global System of Mobile Telecommunication bezeichnet allgeme<strong>in</strong> den weltweiten<br />

Generation 2 Standard digitalen Mobilfunks.<br />

HLR Home Location Register<br />

HSCSD High Speed Circuit Switched Data, <strong>der</strong> Nachfolger von CSD, erreicht e<strong>in</strong>e maximale<br />

Datentransferrate von 57,6 kBit/s. Der Unterschied zwischen den beiden Systemen<br />

liegt <strong>in</strong> den verwendeten Protokollen und <strong>der</strong> Übertragungstechnik. Wie bei e<strong>in</strong>er Telefonleitung<br />

steht bei HSCSD jedem User e<strong>in</strong> dedizierter Nutzkanal exklusiv zur Verfügung. Die<br />

Zahl <strong>der</strong> gleichzeitig aktiven Teilnehmern ist für die verfügbare Bandbreite nicht relevant<br />

und nur durch die maximale Zellkapazität (bezogen auf aktive Teilnehmer) beschränkt.<br />

IAM steht für Initial Address Message im PSTN und ist Bestandteil des ISUP. IAM<br />

entspricht <strong>der</strong> ISDN Message ”Setup” und <strong>der</strong> SIP Message INVITE.<br />

IMSI Die International Mobile Subscriber Identity ist auf <strong>der</strong> SIM-Karte h<strong>in</strong>terlegt. Sie<br />

besteht aus maximal 15 Ziffern, wobei die ersten drei Ziffern für die MCC und die folgenden<br />

zwei o<strong>der</strong> drei Ziffern für die MNC vorgesehen s<strong>in</strong>d. Dabei bezeichnet MCC den Mobile<br />

Country Code und MNC (Mobile Network Code) den Betreiber des Mobilfunknetzes <strong>in</strong>nerhalb<br />

e<strong>in</strong>es Landes. Unterhalb des MCC ist <strong>der</strong> MNC immer e<strong>in</strong>heitlich zwei o<strong>der</strong> drei<br />

Ziffern lang. Der Rest ist die MSIN, Mobile Subscriber Identification Number. Sie dient zur<br />

Identifikation e<strong>in</strong>es Benutzers im PLMN.<br />

IN Intelligent Network me<strong>in</strong>t <strong>in</strong> <strong>der</strong> Telco-Szene mo<strong>der</strong>ne digitale circuit-switched Telefonnetze,<br />

die noch großartigere Form wird mit AIN bezeichnet.<br />

Interface An<strong>der</strong>s als <strong>in</strong> paketorientierten IP-<strong>Netzwerk</strong>en, wo die <strong>E<strong>in</strong></strong>haltung von (offenen)<br />

Protokollen und Standards e<strong>in</strong>e wesentliche Voraussetzung ist, spielen im Bereich<br />

klassische Telefonie Interfaces e<strong>in</strong>e große Rolle für die Signalisierung zwischen Komponenten<br />

des <strong>Netzwerk</strong>s. So bezeichnet das A Interface die Verb<strong>in</strong>dung zwischen MSC und BSC,<br />

Abis liegt zwischen BSC und BTS, D zwischen MSC und HLR und Um für die Funkverb<strong>in</strong>dung<br />

zwischen MS und BTS. Im Bereich des ISDN bezeichnet S0 die Schnittstelle zwischen


1.4. BEGRIFFSERKLÄRUNGEN - TELEFONIE 7<br />

NTBA und den Endgeräten, wie ISDN-Telefon o<strong>der</strong> AB-Wandler. Uk0 ist die Zweidraht-<br />

Kupferschnittstelle zwischen NTBA und Vermittlungsstelle.<br />

ISDN Integrated Services Digital Network ist e<strong>in</strong> weltweiter Standard <strong>der</strong> leitungsvermittelten<br />

(circuit-switched) Telefonie. Endbenutzer haben mit dem sogenannten Basic Rate<br />

Interface (BRI) zu tun. Grosse Nebenstellenanlagen s<strong>in</strong>d mittels Primary Rate Interfaces<br />

(PRI) mit dem öffentlichen Telefonnetz verbunden.<br />

ISUP Der ISDN User Part regelt die Inter-Circuit-Signalisierung von Anrufen und ist für<br />

<strong>der</strong>en Auf- und Abbau zuständig. Diese kann mittels SS7 o<strong>der</strong> alternativ mittels D-Kanal<br />

(Q.931) erfolgen. ISUP be<strong>in</strong>haltet folgende Fel<strong>der</strong>: IAM, CgPN, CdPN, USI, FCI, CPC,<br />

CCI.<br />

MSC Das Mobile Service Switch<strong>in</strong>g Centre ist die zentrale Schaltstelle im Telefonie-<br />

<strong>Netzwerk</strong>. Es ist verbunden mit dem Radio Access Network (RAN), welches von den BTS<br />

und BSCs gebildet wird, welche wie<strong>der</strong>um das Public Land Mobile Network (PLMN) bilden.<br />

MISDN Die Mobile Station ISDN Number wird dazu verwendet Benutzer zu identifizieren,<br />

wenn Verb<strong>in</strong>dungen aufgebaut werden. Sie besteht aus maximal 15 Ziffern, 3 wobei die<br />

ersten e<strong>in</strong>s, zwei o<strong>der</strong> drei Ziffern für den Country Code (CC) und anschliessende Ziffern<br />

für den National Dest<strong>in</strong>ation Code (NDC) stehen. Letzterer bezeichnet üblicherweise die<br />

”Vorwahlen” <strong>der</strong> diversen Mobilfunkanbieter. Der Rest ist dann die Subscriber Number<br />

(SN), welche den Benutzer <strong>in</strong>nerhalb e<strong>in</strong>es PLMN Nummernplans e<strong>in</strong>sortiert. Die MISDN<br />

ist dabei nicht(!) auf <strong>der</strong> SIM gespeichert und ist nicht auf <strong>der</strong> MS feststellbar. Unabhängig<br />

davon kann sich je<strong>der</strong> die Nummer natürlich irgendwo h<strong>in</strong> speichern, was aber für das Netz<br />

ke<strong>in</strong>e Auswirkungen hat.<br />

MS Die Mobile Station ist das Benutzerendgerät <strong>in</strong> Mobilfunknetzen, welches man <strong>in</strong> <strong>der</strong><br />

Hand hält. Dieses besteht aus dem Mobiltelefon, dem Mobile Equipment (ME) und <strong>der</strong><br />

SIM-Card. Jedes Mobiltelefon hat e<strong>in</strong>e e<strong>in</strong>deutige Kennung (IMEI - International Mobile<br />

Equipment Identifier), die hardcodiert im Gerät h<strong>in</strong>terlegt ist.<br />

MSRN Die Mobile Station Roam<strong>in</strong>g Number ist e<strong>in</strong>e temporäre Nummer, die e<strong>in</strong>er MS<br />

zugeordnet wird, wenn e<strong>in</strong>e Verb<strong>in</strong>dung aufgebaut wird. Dieses ist notwendig, da zwar die<br />

MISDN e<strong>in</strong>en Benutzer identifiziert, aber nichts darüber aussagt, wo er sich gerade bef<strong>in</strong>det.<br />

PBX Private Branch eXchange me<strong>in</strong>t die Endbenutzer Vermittlungsstelle.<br />

PLMN Public Land Mobile Network. So s<strong>in</strong>d GSM und UMTS Beispiele für PLMNs.<br />

GSM unterscheidet hier noch <strong>in</strong> Home PLMN (HPLMN), Visited PLMN (VPLMN) und<br />

Interrogat<strong>in</strong>g PLMN (IPLMN)<br />

3 Im Gegensatz zu den bekannten IP-Adressen handelt es sich hier um aufe<strong>in</strong>an<strong>der</strong>folgende Dezimalziffern.<br />

Das liegt an <strong>der</strong> langen Historie von Telefonnetzen, die traditionell Teilnehmern Ziffernfolgen des<br />

Dezimalsystems zuordnen.


8 KAPITEL 1. EINLEITUNG NETZWERK<br />

POTS Pla<strong>in</strong> Old Telephony System bezeichnet oft die klassische ”Analog”-Teleonie über<br />

die 2-Draht-Kupferleitung.<br />

PSTN Das Public Switched Telephone Network me<strong>in</strong>t das klassische System <strong>der</strong> (digitalen)<br />

Telefonie. Üblicherweise wird hierfür ISDN e<strong>in</strong>gesetzt.<br />

REL ist e<strong>in</strong>e ISUP Message (Release) und entspricht dem ”Release” des ISDN.<br />

RLC ist e<strong>in</strong>e ISUP Message (Release complete) und entspricht dem ”Release Complete”<br />

des ISDN.<br />

SIM Subscriber Identification Module ist e<strong>in</strong> Chip (auf e<strong>in</strong>em genormten Stück Plastik,<br />

das <strong>in</strong> das ME gesteckt wird), welcher den sogenannten Subscriber (Mobilfunkbenutzer)<br />

gegenüber dem GSM-Netz identifiziert.<br />

SIP Session Initiation Protocol ist e<strong>in</strong> Application Layer Protocol welches auf Basis von<br />

TCP o<strong>der</strong> UDP Session-Setup, In-Session-Info und Session-Close-Services für <strong>in</strong>teraktive<br />

Dienste wie Telefonie, Video-Conferenc<strong>in</strong>g o<strong>der</strong> Multi-User-Games zur Verfügung stellen<br />

kann.<br />

SS7 Das Signalisierungs System (Signal<strong>in</strong>g System) 7 ist e<strong>in</strong> Standard <strong>der</strong> Out-of-Band-<br />

Signalisierung <strong>in</strong> digitalen Telefonnetzen.<br />

UTMS H<strong>in</strong>ter <strong>der</strong> Abkürzung Universal Mobile Telecommunications System steckt <strong>der</strong><br />

1998 von <strong>der</strong> ETSI (Abkürzung für European Telecommunications Standard Institute)<br />

vorgestellte Breitband-Mobilfunkstandard <strong>der</strong> 3. Generation (G3). Die Weiterentwicklung<br />

und Pflege des Standards unterliegt <strong>in</strong>zwischen dem 3GPP (3rd Generation Partnership<br />

Project). Zu den wesentlichen Leistungsmerkmale von UMTS zählt die Übertragung von<br />

Sprache und Audiodaten, die Übermittlung von multimedialen Inhalten sowie <strong>der</strong> schnelle<br />

Zugriff auf das Internet. UMTS ermöglicht Datenübertragungsraten von 364 kbit/s bis zu<br />

2 Mbit/s, womit Stream<strong>in</strong>g Video und Audio Übertragung, sowie Bildtelefonie ermöglicht<br />

werden sollen. Diese Übertragungsraten erreicht UMTS durch den asynchronen Transfermodus<br />

kurz ATM-Verfahren im sogenannten Codemultiplexverfahren. Als Funk-Technologie<br />

kommt Wideband CDMA (WCDMA) im Frequenzbereich um die 2 GHz zum <strong>E<strong>in</strong></strong>satz.<br />

VLR Visitor Location Register ist e<strong>in</strong> Begriff auf dem Bereich digitaler Mobilfunknetze<br />

<strong>der</strong> zweiten (GSM) und dritten Generation (UMTS).


Kapitel 2<br />

OSI-Schichtenmodell<br />

2.1 Kategorisierungen<br />

Computernetze s<strong>in</strong>d durchaus komplex aufgebaut. Nicht jede Applikation soll diese Komplexität<br />

jeweils nachvollziehen müssen. An dieser Stelle wird wie<strong>der</strong>um Abstraktion verlangt.<br />

Dies ist durchaus vergleichbar mit den Aufgaben von Betriebssystemen, welche die<br />

Hardware virtualisieren. <strong>E<strong>in</strong></strong>e ”saubere” Trennung <strong>der</strong> Aufgaben (im S<strong>in</strong>ne <strong>der</strong> Programmierung<br />

von Schnittstellen) ist erfor<strong>der</strong>lich. Sonst wären Applikationen schwer zu warten,<br />

schlecht erweiterbar und im Laufe ihrer Weiterentwicklung kaum überschaubar. Deshalb ist<br />

e<strong>in</strong> strukturierter Aufbau notwendig. Hierfür erfolgt die Vere<strong>in</strong>barung von Protokollen und<br />

die Def<strong>in</strong>ition von Schnittstellen.<br />

Für die Modellierung von <strong>Netzwerk</strong>en bietet das OSI-Schichtenmodell e<strong>in</strong>e Orientierung.<br />

Dieses schafft e<strong>in</strong>e hierarchische Aufteilung <strong>der</strong> Hardware und Programme <strong>in</strong> Module, die<br />

jedoch durchaus von sehr verschiedenen Lieferanten stammen können.<br />

2.2 Protokollhierarchien<br />

Protokolle s<strong>in</strong>d Regeln, die den Austausch von Nachrichten - o<strong>der</strong> allgeme<strong>in</strong>er das Verhalten<br />

- zwischen (Kommunikations-) Partnern regeln (”Protocols are formal rules of behaviour”).<br />

Die Verletzung e<strong>in</strong>es vere<strong>in</strong>barten Protokolls erschwert die Kommunikation o<strong>der</strong> macht sie<br />

sogar gänzlich unmöglich.<br />

<strong>E<strong>in</strong></strong> Beispiel für e<strong>in</strong> Protokoll ”aus dem täglichen Leben” ist z.B. <strong>der</strong> Sprechfunkverkehr:<br />

Die Kommunikationspartner bestätigen den Empfang e<strong>in</strong>er Nachricht mit ”Roger” und<br />

leiten e<strong>in</strong>en Wechsel <strong>der</strong> Sprechrichtung mit ”Over” e<strong>in</strong>. Beendet wird die Verb<strong>in</strong>dung<br />

schließlich mit ”Over and out”.<br />

Ähnliche Protokolle werden auch beim Datenaustausch zwischen verschiedenen Computern<br />

benötigt - auch wenn hier die Komplexität <strong>der</strong> Anfor<strong>der</strong>ungen etwas höher ist.<br />

Aufgrund dieser höheren Komplexität werden viele Aufgabe nicht von e<strong>in</strong>em e<strong>in</strong>zigen Protokoll<br />

abgewickelt. In <strong>der</strong> Regel kommen e<strong>in</strong>e ganze Reihe von Protokollen, mit verschiedenen<br />

Teilaufgaben, zum <strong>E<strong>in</strong></strong>satz. Diese Protokolle s<strong>in</strong>d dann <strong>in</strong> Form von Protokollschichten<br />

mit jeweils unterschiedlichen Funktionen angeordnet.<br />

2.2.1 Hierarchie<br />

Jede Schicht n enthält Instanzen für den Datenaustausch mit <strong>der</strong> Partner<strong>in</strong>stanz <strong>der</strong> gleichen<br />

Schicht n <strong>in</strong> an<strong>der</strong>en Computern. Die Vere<strong>in</strong>barungen, nach denen diese Kommunikation<br />

abgewickelt wird, nennt man das Protokoll <strong>der</strong> Schicht n. Praktisch kommunizieren die<br />

9


10 KAPITEL 2. OSI-SCHICHTENMODELL<br />

Schichten nicht direkt mite<strong>in</strong>an<strong>der</strong>, son<strong>der</strong>n jede Schicht gibt <strong>der</strong> darunterliegenden Schicht<br />

die Daten und Steuer<strong>in</strong>formationen. Man kann sich vorstellen, dass jede Schicht (bis auf<br />

die unterste Schicht, die nur für das Senden und Empfangen e<strong>in</strong>es nicht formatierten Bitstroms<br />

zuständig ist) die erhaltenen Daten <strong>in</strong> e<strong>in</strong>en Umschlag steckt, <strong>in</strong> dem zusätzlich<br />

Informationen für die korrespondierende Schicht auf <strong>der</strong> an<strong>der</strong>en Masch<strong>in</strong>e stecken, die für<br />

die korrekte Wie<strong>der</strong>herstellung <strong>der</strong> Daten nötig s<strong>in</strong>d. Auf <strong>der</strong> untersten Schicht (Schicht<br />

1) f<strong>in</strong>det die tatsächliche Kommunikation auf dem darunterliegenden Medium statt. Auf<br />

<strong>der</strong> an<strong>der</strong>en Masch<strong>in</strong>e werden nun die Daten von <strong>der</strong> untersten Schicht <strong>in</strong> Empfang genommen<br />

und an die Schicht 2 übergeben. Diese öffnet den Umschlag und stellt mit den dar<strong>in</strong><br />

enthaltenen Informationen die korrekte Nachricht für Schicht 3 wie<strong>der</strong> her. Dies geschieht<br />

solange, bis die oberste Schicht erreicht ist. Diesen Satz von Schichten und Protokollen<br />

nennt man Protokollarchitektur. Das Schichtenmodell und die Protokollarchitektur, sowie<br />

die standardisierten Kommunikationsprotokolle bilden das OSI-Referenzmodell.<br />

2.3 Motivation<br />

Der Name des Modells lautet “Open Systems Interconnection”. Dieses Referenzmodell ist<br />

als Vorschlag für die Standardisierung von <strong>Netzwerk</strong>protokollen durch die ISO entstanden.<br />

Es wurde etwas später bzw. <strong>in</strong> gewissem Maße zeitgleich zu TCP/IP vorgeschlagen. Es<br />

sollte deshalb eher als theoretisches Konzept denn als technische Leitl<strong>in</strong>ie <strong>der</strong> Entwicklung<br />

von <strong>Netzwerk</strong>schichten verstanden werden.<br />

Layer<br />

7<br />

6<br />

5<br />

4<br />

3<br />

2<br />

1<br />

Application<br />

Presentation<br />

Session<br />

Transport<br />

Network<br />

Data l<strong>in</strong>k<br />

Physical<br />

ftp,http,smtp,pop3<br />

A<br />

TCP, UDP, SPX, Appleshare<br />

IP, IPX, Appletalk<br />

N<br />

Ethernet-, ATM-Switch<br />

Ethernet, TokenR<strong>in</strong>g, ISDN<br />

Application<br />

Presentation<br />

Session<br />

Transport<br />

Network<br />

Data l<strong>in</strong>k<br />

Physical<br />

Host A Host B<br />

Real Connection<br />

A User-Application<br />

Virtual Connection<br />

Flow of Data from A to B<br />

N Network-Protocol<br />

Abbildung 2.1: OSI-Schichtenmodell<br />

Name of Unit<br />

Packet<br />

Kaum e<strong>in</strong> Protokoll für Internets setzt alle Vorschläge des Schichtenmodells um. Trotzdem<br />

ist es hilfreich für die Strukturierung und Abgrenzung von <strong>Netzwerk</strong>protokollen und<br />

zum Verständnis für die Funktion von <strong>Netzwerk</strong>en.<br />

Frame<br />

Bit


2.3. MOTIVATION 11<br />

Hardware (-nahe) Protokolle für LANs und WANs lassen sich mit OSI erklären und<br />

e<strong>in</strong>ordnen. Auch die Abbildung <strong>der</strong> Dienste <strong>der</strong> TCP/IP-Suite kann <strong>in</strong>nerhalb des OSI-<br />

Modells erfolgen. Die Kommunikation zwischen verschiedenen Hosts läßt sich anhand von<br />

OSI gut veranschaulichen. Deshalb wird dieses durchaus immer noch erwähnt bzw. gelehrt.<br />

Die sieben Schichten entstammen folgenden Designpr<strong>in</strong>zipen:<br />

• <strong>E<strong>in</strong></strong>e Schicht sollte dort entstehen, wo e<strong>in</strong> neuer Abstraktionsgrad benötigt wird<br />

• Jede Schicht soll genau def<strong>in</strong>ierte Funktionen erfüllen<br />

• Bei <strong>der</strong> Funktionswahl sollte die Def<strong>in</strong>ition <strong>in</strong>ternational genormter Protokolle berücksichtigt<br />

werden<br />

• Grenzen zwischen Schnittstellen so wählen, dass möglichst wenig Informationsfluß<br />

über Schnittstellen notwendig wird<br />

• Es s<strong>in</strong>d so viele Schichten vorzusehen, dass ke<strong>in</strong>e Notwendigkeit besteht mehrere verschiedene<br />

Funktionen <strong>in</strong> e<strong>in</strong>er Schicht zu implementieren<br />

Schichten von unten nach oben (d.h. ausgehend von <strong>der</strong> Hardware hoch zur Applikation)<br />

s<strong>in</strong>d <strong>in</strong> <strong>der</strong> Tabelle dargestellt.<br />

# Schicht Layer<br />

(engl.)<br />

7 Anwendungs- application<br />

-<br />

6 Darstellungs- presentation<br />

-<br />

5 Kommunikationssteuer<br />

Orientiert Aufgabe Prot.<br />

Anwen-dungs- Verb<strong>in</strong>dung zwischen<br />

Benutzern<br />

und <strong>der</strong>en Tätigkeiten<br />

Anwendungs- Datenformat des<br />

Informationsaustausches<br />

session - Anwendungs- Verb<strong>in</strong>dung zwischen<br />

Prozessen<br />

auf verschiedenen<br />

Rechnern<br />

4 Transport- transport - Transport- Zusammensetzung<br />

<strong>der</strong> Nachrichten<br />

3 Vermittlungs- network - Transport- Adressierung<br />

<strong>der</strong> Nachrichten<br />

zwischen Rechnern<br />

2 Sicherungs- data l<strong>in</strong>k - Transport- Beseitigung<br />

Übertraguns-<br />

von<br />

fehlern<br />

Störungen<br />

durch<br />

1 Bitübertraphysical - Transport- Betrieb <strong>der</strong> Netzgungskarten<br />

Tabelle 2.1: Das OSI-Modell mit Beispiel FTP als TCP/IP-Protokoll<br />

FTP<br />

TCP<br />

TCP<br />

IP


12 KAPITEL 2. OSI-SCHICHTENMODELL<br />

2.4 Die e<strong>in</strong>zelnen Schichten<br />

Im OSI-Modell s<strong>in</strong>d die Schichten 1 - 4 transportorientiert; sie entsprechen den verschiedenen<br />

<strong>Netzwerk</strong>protokollen, welche <strong>in</strong> <strong>der</strong> <strong>Netzwerk</strong>hardware o<strong>der</strong> im Betriebssystem implementiert<br />

s<strong>in</strong>d. Die Schichten 5 - 7 arbeiten anwendungsorientiert; sie f<strong>in</strong>den üblicherweise<br />

<strong>in</strong>nerhalb e<strong>in</strong>er Anwendung statt. Jede Schicht soll sich dabei nur <strong>der</strong> Dienste <strong>der</strong> darunterliegenden<br />

Schicht bedienen. Die Implementation ist dabei beliebig, d.h. liegt im Ermessen<br />

des Anwen<strong>der</strong>s o<strong>der</strong> <strong>Netzwerk</strong>designers. Der Austausch von Schichten soll dabei möglich<br />

se<strong>in</strong>, wenn die neue Schicht die Funktionen <strong>der</strong> alten zur Verfügung stellt.<br />

Die Aufgaben <strong>der</strong> e<strong>in</strong>zelnen Schichten lassen sich wie folgt beschreiben:<br />

2.4.1 Bitübertragungsschicht<br />

regelt die Übertragung von ”rohen” Bits über den Kommunikationskanal. Dabei handelt<br />

es sich um e<strong>in</strong>en unstrukturierten Bitstrom. Die Bitübertragungsschicht enthält die Def<strong>in</strong>ition,<br />

welcher elektrischer, physikalischer Zustand e<strong>in</strong>er b<strong>in</strong>ären ”Null” bzw. e<strong>in</strong>er ”<strong>E<strong>in</strong></strong>s”<br />

entspricht. Dazu zählt beispielsweise, welche Länge e<strong>in</strong> bestimmter Zustand andauern muss<br />

o<strong>der</strong> mit wieviel Volt signalisiert wird. Weiterh<strong>in</strong> erfolgt die Festlegung, wie gross bestimmte<br />

Toleranzen se<strong>in</strong> dürfen, damit e<strong>in</strong> Signal noch <strong>in</strong>terpretiert werden kann und welche<br />

Abstände zwischen verschiedenen Zuständen liegen, damit diese sauber <strong>in</strong>terpretiert werden<br />

können.<br />

Weiterh<strong>in</strong> zählt dazu die Festlegung von Kabeltypen und -qualitäten (optisch bzw. elektrisch)<br />

o<strong>der</strong> die Def<strong>in</strong>ition von Funkstandards für drahtlose Übermittlung. Bestandteil ist<br />

weiterh<strong>in</strong> die Def<strong>in</strong>ition von Steckern und Buchsen, die Anzahl benötigter A<strong>der</strong>n und die<br />

full- o<strong>der</strong> halfduplex Datenkommunikation.<br />

2.4.2 Sicherungsschicht<br />

übernimmt die Umwandlung des rohen Datenkanals <strong>der</strong> Bitübertragungsschicht <strong>in</strong> e<strong>in</strong>e<br />

Leitung, welche virtuell frei von unerkannten Übertragungsfehlern ist. Dies geschieht durch<br />

die Aufteilung des Datenstroms <strong>in</strong> Frames1 . Dabei erfolgt das Setzen von Rahmengrenzen<br />

durch spezielle Kontrollbits. Weiterh<strong>in</strong> werden e<strong>in</strong>fache Prüfmechanismen geschaffen z.B.<br />

durch die <strong>E<strong>in</strong></strong>führung von CRC-Prüfsummen. Die Sicherungsschicht erlaubt weiterh<strong>in</strong> e<strong>in</strong>e<br />

Datenverkehrskontrolle. Sie kann Meldungen von Überschwemmungen e<strong>in</strong>es Empfängers<br />

generieren. Darüberh<strong>in</strong>aus regelt sie die Zugriffssteuerung <strong>in</strong> Broadcastnetzen.<br />

2.4.3 Vermittlungsschicht<br />

sichert die Steuerung des Teilnetzbetriebes. Sie ist sozusagen verantwortlich für die Auswahl<br />

<strong>der</strong> Paketrouten auf dem Weg vom Ursprungs- zum Bestimmungsort. Die auftretenden<br />

Routen können statisch, d.h. fest verdrahtet se<strong>in</strong> o<strong>der</strong> dynamisch für jede Sitzung festgelegt<br />

werden. Es geht auch noch dynamischer: Für jedes Paket e<strong>in</strong>er Sitzung wird e<strong>in</strong>e Route<br />

generiert.<br />

Bei Überlastungen <strong>der</strong> Teilnetze mit zuvielen Paketen muss e<strong>in</strong>e Engpass- bzw. Stausteuerung<br />

erfolgen. Darüberh<strong>in</strong>aus können Abrechnungsfunktionen2 <strong>in</strong> dieser Schicht implementiert<br />

se<strong>in</strong>. Die Vermittlungsschicht überw<strong>in</strong>det verschiedene Hardwareprotokolle. Sie<br />

kann Pakete <strong>in</strong> die angepaßte Größe für jedes Teilnetz umbauen.<br />

1 an<strong>der</strong>er Name für Paket, um die Daten”häppchen” <strong>der</strong> verschiedenen Schichten unterscheiden zu können<br />

2 z.B. für die Paketdurchleitung; da kaum e<strong>in</strong> Anbieter jede End-zu-Endverb<strong>in</strong>dung im eigenen Netz<br />

realisieren kann


2.5. KONZEPTE 13<br />

2.4.4 Transportschicht<br />

ist für die Entgegennahme <strong>der</strong> Daten aus <strong>der</strong> Sitzungsschicht verantwortlich. Die Transportschicht<br />

regelt gegebenenfalls die geeignete Zerstückelung des e<strong>in</strong>treffenden Datenstromes.<br />

Diese Daten werden an die Vermittlungsschicht weitergegeben.<br />

Die Transportschicht bietet e<strong>in</strong>e End-zu-End-Kontrolle <strong>der</strong> Korrektheit <strong>der</strong> Pakete und<br />

<strong>der</strong>en Reihenfolge. Dadurch erhält <strong>der</strong> Anwen<strong>der</strong> e<strong>in</strong>en fehlerfreien Punkt-zu-Punkt-Datenkanal.<br />

Die Transportschicht ist echte End-zu-End-Schicht, d.h. sie stellt die Ebene dar, auf<br />

<strong>der</strong> Programme Informationen mite<strong>in</strong>an<strong>der</strong> austauschen können. Weiterh<strong>in</strong> erlaubt sie das<br />

Multiplexen mehrerer Datenströme, da e<strong>in</strong> Host durchaus mehrere Verb<strong>in</strong>dungen unterhalten<br />

kann.<br />

2.4.5 Sitzungsschicht<br />

soll den Benutzern an verschiedenen Masch<strong>in</strong>en erlauben, Sitzungen mite<strong>in</strong>an<strong>der</strong> aufzubauen,<br />

d.h. e<strong>in</strong>erseits e<strong>in</strong>en gewöhnlichen Datentransport zu realisieren, aber auch zusätzliche<br />

Dienste anzubieten. Dialogsteuerungen und Tokenmanagement e<strong>in</strong>iger Anwendungen könnten<br />

<strong>in</strong> <strong>der</strong> Sitzungsschicht verortet werden. Weitere mögliche Aufgaben wären die Synchronisation<br />

z.B. Recovery e<strong>in</strong>es Datenstransfers nach e<strong>in</strong>em längerem Ausfall. Die genannten<br />

Beschreibungen deuten bereits an, dass diese Schicht sich schwer abgrenzen läßt.<br />

2.4.6 Darstellungsschicht<br />

realisiert Funktionen, die sich mit Syntax und Semantik <strong>der</strong> übertragenen Informationen<br />

beschäftigen. Hierzu zählt die Kodierung <strong>der</strong> Daten auf vere<strong>in</strong>barte Weise 3 . In <strong>der</strong> Darstellungsschicht<br />

erfolgt die Umwandlung spezieller Daten- und Objektstrukturen e<strong>in</strong>es Rechners<br />

<strong>in</strong> die für die Netzübertragung geeignete Form.<br />

2.4.7 Verarbeitungsschicht<br />

wird <strong>in</strong> e<strong>in</strong>igen Darstellungen auch Anwendungsschicht genannt. Sie bezieht sich auf die<br />

letztendlich auf e<strong>in</strong>em Host ablaufenden <strong>Netzwerk</strong>-Applikationen. Diese können z.B. e<strong>in</strong>e<br />

e<strong>in</strong>heitliche Term<strong>in</strong>alemulation 4 umfassen, die e<strong>in</strong>e Vielzahl sehr unterschiedlicher Term<strong>in</strong>altypen<br />

darstellen kann. Damit wird an<strong>der</strong>en Programmen (und <strong>der</strong>en Programmierern)<br />

die Ausgaben von Text und die Entgegennahme von Tastature<strong>in</strong>gaben erleichtert.<br />

Weiterh<strong>in</strong> könnte die Verarbeitungsschicht den Dateitransfer über verschiedene Standards<br />

von Dateisystemen und Namenskonventionen h<strong>in</strong>weg organisieren. Diese Erörterungen<br />

lassen sich ebenso auf Email-, Webdienste etc. anwenden.<br />

2.5 Konzepte<br />

Für den Zusammenschluss verschiedener Netze s<strong>in</strong>d spezielle Hardwarekomponenten notwendig.<br />

Diese regeln die Übergänge zwischen verschiedenen Teilnetzen und <strong>Netzwerk</strong>technologien,<br />

die sich sowohl im Medientyp, den Adressierungsschemata und den Frameformaten<br />

unterscheiden können.<br />

3<br />

little- o<strong>der</strong> bigendian, ASCII o<strong>der</strong> Unicode, Kodierung negativer Ganzzahlen als <strong>E<strong>in</strong></strong>er- o<strong>der</strong> Zweierkomplement,<br />

...<br />

4<br />

Mit ”Term<strong>in</strong>als” s<strong>in</strong>d im heutigen Sprachgebrauch die virtuellen Nachbildungen <strong>der</strong> meist seriellen<br />

Datensichtgeräte an Workstations o<strong>der</strong> Ma<strong>in</strong>frames geme<strong>in</strong>t.


14 KAPITEL 2. OSI-SCHICHTENMODELL<br />

Diese Hardwarekomponenten können wie Hosts mit m<strong>in</strong>destens zwei Interfaces aufgefaßt<br />

werden. Sie sollen sich wie e<strong>in</strong> Host 5 im jeweiligen Teil-Netz verhalten, wobei die Zahl von<br />

Übergängen zwischen verschiedenen <strong>Netzwerk</strong>en möglichst nicht begrenzt se<strong>in</strong> sollte. Hierfür<br />

dient <strong>der</strong> <strong>E<strong>in</strong></strong>satz sogenannter ”Router”.<br />

Weiterh<strong>in</strong>:<br />

• Schaffung e<strong>in</strong>es Adressierungsschemas, welches hardwareunabhängig (z.B. von <strong>der</strong><br />

Ethernetadressierung) ist<br />

• Schaffung e<strong>in</strong>es virtuellen Netzes; die Netzstuktur dieses ”Super”-Netzes muss von<br />

Topologie und Ausdehnung <strong>der</strong> darunterliegenden Netze unabhängig se<strong>in</strong><br />

• abstraktes Kommunikationssystem, .h. Soft- und Hardwarelösungen bilden e<strong>in</strong>e Illusion<br />

e<strong>in</strong>es geme<strong>in</strong>samen übergreifenden Netzes<br />

2.5.1 Protokolle<br />

”Protokoll” dient als geme<strong>in</strong>same Vere<strong>in</strong>barung (Standard) über die Kommunikationsparameter.<br />

Es wurden verschiedene Protokolle für den genannten Aufgabenbereich geschaffen:<br />

• TCP/IP als bekanntester Vertreter dieser Gruppe, da das weltweite Internet dieses<br />

verwendet<br />

• IPX/SPX als <strong>Netzwerk</strong>protokoll von Novell<br />

• Appletalk: <strong>Netzwerk</strong>dienst <strong>der</strong> Apple-Mac<strong>in</strong>tosh-Architektur<br />

• DECnet: Vernetzung von <strong>Unix</strong>-Workstations<br />

• X25: ITU-Standard für WAN-Technologien, Angebot von Telefongesellschaften<br />

Diese Protokolle besitzen Rout<strong>in</strong>gfähigkeit, d.h. verschiedene Netze können über spezielle<br />

Rechner (Router) mite<strong>in</strong>an<strong>der</strong> gekoppelt werden. Sie bieten e<strong>in</strong>en e<strong>in</strong>heitlichen bzw. ”globalen”<br />

Adressraum und s<strong>in</strong>d für verschiedene <strong>Netzwerk</strong>hardware verfügbar. An<strong>der</strong>e Protokolle,<br />

z.B. NetBIOS von Microsoft, s<strong>in</strong>d nur im LAN e<strong>in</strong>setzbar, weil sie über ke<strong>in</strong> globales<br />

Adressschema verfügen, nicht rout<strong>in</strong>gfähig s<strong>in</strong>d und nur auf bestimmte <strong>Netzwerk</strong>hardware<br />

anwendbar s<strong>in</strong>d.<br />

Mit <strong>der</strong> Ausdehnung <strong>der</strong> Firmennetze, dem Ausbruch des Rechners aus dem Rechenzentrum,<br />

<strong>der</strong> Popularisierung von Computern spielen <strong>Netzwerk</strong>e e<strong>in</strong>e immer größere Rolle.<br />

Deshalb wurde e<strong>in</strong> allgeme<strong>in</strong> standardisiertes, nichtproprietäres <strong>Netzwerk</strong>protokoll gesucht,<br />

welches gleichzeitig die Unabhängigkeit von bestimmten Herstellern besitzt. Betriebserfahrungen<br />

und Robustheit im <strong>E<strong>in</strong></strong>satz waren weitere Argumente. Die TCP/IP-Suite hat sich<br />

umfassend durchgesetzt; an<strong>der</strong>e Protokolle s<strong>in</strong>d nur mehr Ran<strong>der</strong>sche<strong>in</strong>ungen.<br />

2.6 <strong>E<strong>in</strong></strong>ordnungen<br />

Nach dem Aufbau e<strong>in</strong>es Theoriegerüstes <strong>in</strong> Form des OSI-Modells, läßt sich nun e<strong>in</strong>e <strong>E<strong>in</strong></strong>ordnung<br />

<strong>der</strong> im Folgenden vorgestellten <strong>Netzwerk</strong>protokolle <strong>in</strong> e<strong>in</strong>em kurzen Ausblick vornehmen.<br />

Dabei wird sichtbar, welche Protokolle jeweils für die Umsetzung bestimmter Aufgaben<br />

benötigt werden.<br />

5 e<strong>in</strong>faches Mitglied <strong>in</strong> e<strong>in</strong>em <strong>Netzwerk</strong>


2.7. AUFGABEN 15<br />

Ethernet, TokenR<strong>in</strong>g, ADSL, ISDN o<strong>der</strong> Modem def<strong>in</strong>ieren <strong>in</strong> erster L<strong>in</strong>ie verschiedene<br />

Typen von Bitübertragungsschichten. Sie stellen die Übertragungsstandards, was Kabel<br />

und elektrische bzw. optische Signalisierung, Verb<strong>in</strong>dungslängen etc. betrifft, sicher. Sie bestimmen<br />

außerdem die Datenraten und Half- o<strong>der</strong> Fullduplex-Betrieb, sowie die Kodierung<br />

<strong>der</strong> Daten für beste Erkennung und höchste Datenraten.<br />

Weiterh<strong>in</strong> implementieren Ethernet- und TokenR<strong>in</strong>g jeweils die Medienzugriffsverfahren,<br />

wie CSMA/CD o<strong>der</strong> CA6 , die <strong>der</strong> Sicherungsschicht zuzuordnen s<strong>in</strong>d. MAC-Adressierung<br />

ist ebenfalls e<strong>in</strong> Konzept <strong>der</strong> Sicherungsschicht. Ethernetswitches arbeiten auf dieser und<br />

schalten virtuelle Punkt-zu-Punkt-Verb<strong>in</strong>dungen auf dieser Ebene. Ethernet implementiert<br />

weiterh<strong>in</strong> Verfahren zur Congestioncontrol. Auch Korrekturverfahren, wie sie bei Modemkommunikation<br />

def<strong>in</strong>iert werden, s<strong>in</strong>d <strong>der</strong> Sicherungsschicht zuzuordnen.<br />

Das Internet-Protokoll läßt sich <strong>der</strong> Vermittlungsschicht zuordnen. Es übernimmt die<br />

Paketadressierung <strong>der</strong> End-zu-End-Zustellung und implementiert die Rout<strong>in</strong>gfunktionalitäten.<br />

IP kann dabei auf austauschbare Bitübertragungs- bzw. Sicherungsschichten zurückgreifen.<br />

Es kann über Ethernet, GPRS, ADSL, ISDN o<strong>der</strong> Modem ohne Än<strong>der</strong>ungen im<br />

Protokoll arbeiten. Dabei nimmt es evtl. Paketgrößenanpassungen vor. Dies geschieht durch<br />

die Steuerung <strong>der</strong> Paketfragmentierung auf dem Weg und durch den Zusammenbau im Zielhost.<br />

Der Weg e<strong>in</strong>es Paketes von Rechner A zu Rechner B durch e<strong>in</strong> <strong>Netzwerk</strong> liesse sich<br />

im OSI-Modell wie folgt veranschaulichen.<br />

Weg e<strong>in</strong>es Datenpaketes von Host A zu B über e<strong>in</strong>en Router<br />

Host A Eth-HUB Router Switch Host B<br />

2.7 Aufgaben<br />

2.7.1 OSI<br />

Abbildung 2.2: Weg e<strong>in</strong>es Paketes durch OSI-Schichten<br />

1. Wor<strong>in</strong> unterscheiden sich das OSI- und TCP-Schichtenmodell?<br />

6 Carrier Sense Multiple Access with Collision Detection bzw. Collision Avoidance<br />

Schicht<br />

7<br />

6<br />

5<br />

4<br />

3<br />

2<br />

1


16 KAPITEL 2. OSI-SCHICHTENMODELL<br />

2. Warum kann es passieren, dass e<strong>in</strong>zelne Schichten vielfach nochmal unterteilt wurden?<br />

3. Was s<strong>in</strong>d Gründe um geschichtete Protokolle zu verwenden?<br />

4. <strong>E<strong>in</strong></strong> System verwendet e<strong>in</strong>e n-Layer Protokollhierarchie. <strong>E<strong>in</strong></strong>e Applikation generiert e<strong>in</strong>e<br />

Nachricht von <strong>der</strong> Länge N Bytes. Auf je<strong>der</strong> Schicht wird e<strong>in</strong> H Byte langer Hea<strong>der</strong><br />

angefügt. Welcher Anteil <strong>der</strong> <strong>Netzwerk</strong>bandbreite wird alle<strong>in</strong> durch die Hea<strong>der</strong><strong>in</strong>formation<br />

belegt?<br />

5. Welche OSI-Schicht handelt die folgenden Aufgaben ab: a) Aufteilung des zu übertragenden<br />

Datenstroms <strong>in</strong> Frames und b) festzustellen, welche Route durch das <strong>Netzwerk</strong><br />

benutzt werden soll?<br />

2.7.2 <strong>Netzwerk</strong>e<br />

1. Was s<strong>in</strong>d die wesentlichen Unterschiedungen von packet-switch<strong>in</strong>g und circuit-switched<br />

Networks?<br />

2. Wodurch kommen Ende-zu-Ende-Verzögerungen zustande? Woraus setzt sich die Gesamtverzögerung<br />

zusammen? Annahme: Pakete bewegen sich entlang e<strong>in</strong>er festgelegten<br />

Route.


Kapitel 3<br />

LAN Hardware<br />

3.1 Ethernet<br />

Die <strong>in</strong> LANs am weitesten verbreitete Hardware ist im allgeme<strong>in</strong>en unter dem Namen Ethernet<br />

bekannt. Es umfaßt die Schichten 1 und 2 des ISO/OSI-Modells. Ethernets s<strong>in</strong>d <strong>in</strong> <strong>der</strong><br />

Installation relativ günstig, was, zusammen mit Übertragungsraten von bis zu 1000 Megabit<br />

pro Sekunde, zu se<strong>in</strong>er starken Popularität gesorgt hat.<br />

ISO/OSI<br />

Application<br />

Presentation<br />

Session<br />

Transport<br />

Network<br />

Data L<strong>in</strong>k<br />

IEEE 802.3<br />

reference model<br />

Upper-layer<br />

protocols<br />

MAC-Client<br />

Media Access (MAC)<br />

Physical Physical (PHY)<br />

IEEE 802-spcific<br />

IEEE 802.3-spcific<br />

Media-specific<br />

Abbildung 3.1: Ethernet im OSI-Schichtenmodell<br />

<strong>E<strong>in</strong></strong> Nachteil <strong>der</strong> Ethernet-Technologie ist die begrenzte Länge <strong>der</strong> Kabel, was die Verwendung<br />

auf LAN’s (Local Area Network) beschränkt. Allerd<strong>in</strong>gs kann man aber mehrere<br />

Ethernet-Segmente mite<strong>in</strong>an<strong>der</strong> verb<strong>in</strong>den, <strong>in</strong>dem man sogenannte Repeater, Bridges o<strong>der</strong><br />

Router verwendet. Repeater kopieren e<strong>in</strong>fach die Signale zwischen zwei o<strong>der</strong> mehreren Segmenten,<br />

was bedeutet, dass alle Segmente zusammenarbeiten, als wäre es e<strong>in</strong> e<strong>in</strong>zelnes<br />

Ethernet. Aufgrund <strong>der</strong> Tim<strong>in</strong>g-Anfor<strong>der</strong>ungen dürfen zwischen zwei Hosts im <strong>Netzwerk</strong><br />

nicht mehr als vier Repeater verwendet werden. Bridges und Router s<strong>in</strong>d da schon etwas<br />

aufwendiger. Sie analysieren die e<strong>in</strong>gehenden Daten und leiten sie nur dann weiter, wenn<br />

sich <strong>der</strong> empfangende Host nicht im lokalen Ethernet bef<strong>in</strong>det.<br />

Ethernet arbeitet wie e<strong>in</strong> Bus-System, bei dem e<strong>in</strong> Host die Pakete (o<strong>der</strong> Frames) mit<br />

e<strong>in</strong>er Größe von bis zu 1500 Byte an e<strong>in</strong>en an<strong>der</strong>en Host <strong>in</strong> demselben Ethernet übertragen<br />

kann. <strong>E<strong>in</strong></strong> Host wird dabei über e<strong>in</strong>e sechs Byte lange Adresse (MAC) angesprochen, die<br />

<strong>in</strong> die Firmware <strong>der</strong> Ethernet-Karte fest e<strong>in</strong>getragen ist. Diese Adressen werden von <strong>der</strong><br />

FCC <strong>in</strong> den USA zugeteilt. Die Sequenz von zweistelligen Hexadezimalzahlen, die jeweils<br />

durch Doppelpunkte vone<strong>in</strong>an<strong>der</strong> getrennt werden, kennt <strong>in</strong>zwischen fast je<strong>der</strong>, <strong>der</strong> mit<br />

17


18 KAPITEL 3. LAN HARDWARE<br />

Transmission or<strong>der</strong>: left-to-right, bit serial<br />

FCS error detection coverage<br />

FCS generation span<br />

PRE SFD DA SA Length/Type Data Pad FCS<br />

7 1 6 6 4 46 - 1500 4<br />

Field length <strong>in</strong> bytes<br />

Abbildung 3.2: Aufbau des Ethernet-Hea<strong>der</strong>s<br />

<strong>Netzwerk</strong>en zu tun hat.<br />

<strong>E<strong>in</strong></strong> Ethernet-Hea<strong>der</strong> beg<strong>in</strong>nt mit e<strong>in</strong>er 64 bit (8 octets) langen Sequenz aus Nullen<br />

und <strong>E<strong>in</strong></strong>sen um e<strong>in</strong> Paket e<strong>in</strong>zuleiten. Dieses ist zur Synchronisation <strong>der</strong> angeschlossenen<br />

Geräte und zur Collision Detection erfor<strong>der</strong>lich. Die ersten sieben Bytes besitzen jeweils<br />

e<strong>in</strong>en Wert von 10101010 während das letzte Byte mit dem Wert 10101011 das Ende <strong>der</strong><br />

Präambel ankündigt. Es folgen die Ziel und Quelladresse (jeweils 6 octets lang) und die Art<br />

des darüberliegenden Protokolls (kodiert <strong>in</strong> 2 octets). Nach den m<strong>in</strong>imal 46 und maximal<br />

1500 Byte Daten schliesst sich e<strong>in</strong>e Prüfsumme (4 octets lang). Unterschreitet e<strong>in</strong>e Datagrammgröße<br />

46 Bytes, so muss mit Zusatz-Bits erweitert werden. Die Vermittlungsschicht<br />

verwendet das Längen-Feld im Hea<strong>der</strong>, um die Füllbits zu erkennen. Durch das CRC-Feld<br />

wird überprüft, ob irgendwelche Bits im Rahmen durch äußere <strong>E<strong>in</strong></strong>flüsse (z.B. Dämpfung<br />

<strong>der</strong> Signalstärke, elektromagnetische Umgebungsstörungen, usw.) gekippt (komplementiert)<br />

wurden. Der Client berechnet den Wert des CRC-Feldes aus den übrigen Bits im Rahmen<br />

e<strong>in</strong>schließlich <strong>der</strong> Präambelbits. Der Server wendet auf die empfangenden Bits im Rahmen<br />

dieselbe Berechnung an (CRC-Prüfung) und überprüft damit den vom Client e<strong>in</strong>getragenen<br />

Wert.<br />

Ethernet arbeitet nach dem CSMA/CD-Verfahren, was ”Carrier Sense Multiple Access/Collision<br />

Detection” bedeutet. Bevor e<strong>in</strong>e Datenübertragung beg<strong>in</strong>nt, wird <strong>der</strong> Zustand<br />

des Netzes von <strong>der</strong> sendewilligen Station überprüft. Jede Station darf immer dann<br />

senden, wenn <strong>in</strong> diesem Moment ke<strong>in</strong>e an<strong>der</strong>e Station Daten überträgt. Deshalb kann jede<br />

Station simultan horchen und senden.<br />

<strong>E<strong>in</strong></strong> von e<strong>in</strong>em Rechner ausgesandter Frame wird von allen vorhandenen Rechnern registriert,<br />

aber nur <strong>der</strong> Ziel-Host liest das Paket und verarbeitet es. Hier<strong>in</strong> liegt e<strong>in</strong> Sicherheitsproblem<br />

von Ethernet, weil e<strong>in</strong> Rechner e<strong>in</strong>fach alle im Netz kursierenden Frames<br />

untersuchen kann.<br />

<strong>E<strong>in</strong></strong>e sendende Station überprüft - zur Sicherstellung, dass sie alle<strong>in</strong>e sendete - ob das gesendete<br />

Signal gleich dem empfangenden ist. Sollte dies nicht <strong>der</strong> Fall se<strong>in</strong>, so verschickt die<br />

Station e<strong>in</strong> Störsignal (Jam-Sequence), um allen an<strong>der</strong>en Stationen zu signalisieren, dass<br />

e<strong>in</strong>e Kollision stattfand. Anschliessend stellt sie das Senden e<strong>in</strong>. Die an<strong>der</strong>e gleichzeitig<br />

sendende Station registriert dieses Signal und stellt ebenfalls das Senden e<strong>in</strong>. Der nächste<br />

Sendeversuch erfolgt zeitversetzt um e<strong>in</strong>en Zufallsfaktor, damit e<strong>in</strong> weiteres Zusammentreffen<br />

von Paketen vermieden wird.<br />

Bef<strong>in</strong>det sich jedoch e<strong>in</strong>e sehr hohe Last auf dem <strong>Netzwerk</strong>, so wird - aufgrund dieses<br />

Verfahrens zu Kollisionsbehebung - <strong>der</strong> Datendurchsatz dieser <strong>Netzwerk</strong>technologie stark<br />

e<strong>in</strong>geschränkt. Mo<strong>der</strong>ne <strong>Netzwerk</strong>komponenten wie Switches reduzieren das Sicherheitsund<br />

Kollisionsproblem, <strong>in</strong> dem sie zum e<strong>in</strong>en die Datenpakete nur noch an dem Port zur<br />

Verfügung stellen, an dem e<strong>in</strong>e bestimmte MAC anliegt (hierzu haben diese Geräte übli-


3.1. ETHERNET 19<br />

cherweise e<strong>in</strong>en Speicher von 1000 - 8000 MAC-Adressen) und zum an<strong>der</strong>en wird per Store&Forward<br />

das Zusammentreffen von Paketen vermeiden.<br />

3.1.1 Ethernet-Adapter<br />

Die Protokolle s<strong>in</strong>d <strong>in</strong> e<strong>in</strong>en sogenannten Adapter, welcher auch als <strong>Netzwerk</strong>schnittstellenkarte<br />

bekannt ist und <strong>der</strong> mit e<strong>in</strong>em ROM sowie mit e<strong>in</strong>em DSP-Chip versehen ist, implementiert.<br />

<strong>E<strong>in</strong></strong> Adapter ist e<strong>in</strong>e halbautonome <strong>E<strong>in</strong></strong>heit. Er besitzt e<strong>in</strong>e eigene feste Adresse,<br />

MAC-Adresse (Media Access Controll), welche bei <strong>der</strong> Herstellung <strong>in</strong> das ROM des Adapters<br />

fest e<strong>in</strong>gebrannt wird. Diese Adresse ist sechs Bytes lang und wird normalerweise <strong>in</strong><br />

hexa-dezimaler Notation ausgedrückt. Somit leitet die Vermittlungsschicht des sendenden<br />

Clients Datagramme an den Adapter <strong>der</strong> Sicherungsschicht weiter, während dieser dann die<br />

Erweiterung des Ethernet-Hea<strong>der</strong>s übernimmt und den so entstandenen Rahmen auf <strong>der</strong><br />

Kommunikationsleitung überträgt.<br />

Der Adapter des empfangenden Servers extrahiert dann die Datagramme aus den Rahmen<br />

und leitet sie nach <strong>der</strong> Überprüfung auf Fehler gegebenenfalls an die Vermittlungsschicht<br />

weiter. Der Adapter besitzt die Freiheit e<strong>in</strong>en Rahmen zu verwerfen, falls er feststellt,<br />

dass dieser fehlerhaft ist, ohne die oberen Schichten <strong>in</strong>formieren zu müssen. <strong>E<strong>in</strong></strong><br />

wesentlicher Grund dafür, warum man auf <strong>der</strong> Sicherungsschicht MAC-Adressen und ke<strong>in</strong>e<br />

gewöhnliche IP-Adressen verwendet, ist, dass dann die Adapter kaum an<strong>der</strong>e Protokolle <strong>der</strong><br />

Vermittlungsschicht (z.B. IPX, DECNet) unterstützten könnten und somit ihre Flexibilität<br />

verlieren würden.<br />

Adressauflösungsprotokolle wie ARP, dienen den Sende-Adaptern, aus den Ziel-IP-<br />

Adressen die MAC-Adressen <strong>der</strong> entsprechenden Empfangs-Adapter zu ermitteln. Es ist<br />

zu erwähnen, dass ARP nur die IP-Adressen <strong>in</strong> MAC-Adressen auflöst, <strong>der</strong>en Hosts sich im<br />

gleichen LAN bef<strong>in</strong>den.<br />

3.1.2 Koaxialkabelbasierte Netze für 10 MBit<br />

TERM<br />

50Ohm<br />

max. 30 Stationen pro Segment max. 100 Stationen pro Segment<br />

PC 1<br />

CHEAPER-NET T-Connector<br />

2,5m<br />

PC 2<br />

TERM<br />

50Ohm TERM<br />

50Ohm<br />

WS 1 WS 2 WS 3<br />

10Base2 max. 4 Repeater<br />

Repeater<br />

10Base5<br />

185m<br />

MAUI<br />

500m<br />

Abbildung 3.3: Regeln <strong>in</strong> BNC-Netzen<br />

YELLOW-CABLE<br />

TERM<br />

50Ohm<br />

Th<strong>in</strong> Ethernet, Cheaper Net o<strong>der</strong> auch BNC bezeichnet die <strong>in</strong>zwischen veraltetete Vernetzung<br />

mittels 50 Ohm abgeschirmten Koaxialkabel (wie beim Rundfunk; Verb<strong>in</strong>dungsstücke<br />

und -kupplungen s<strong>in</strong>d <strong>in</strong> BNC-Technik ausgeführt. Die Enden müssen mit Endwi<strong>der</strong>ständen<br />

”term<strong>in</strong>iert”, d.h. abgeschlossen werden.). Diese Topologie ist preiswert und<br />

recht e<strong>in</strong>fach; neue Knoten s<strong>in</strong>d mit ger<strong>in</strong>gem Aufwand e<strong>in</strong>zufügen. Die Nachteile liegen jedoch<br />

<strong>in</strong> <strong>der</strong> primitiven Technik und se<strong>in</strong>er Empf<strong>in</strong>dlichkeit. Die Unterbrechung des Kabels<br />

an e<strong>in</strong>er Stelle führt zum Ausfall des ganzen <strong>Netzwerk</strong>(-segment)es. Bezeichnet wird dieser<br />

Standard mit 10Base2. Mittels Cheapernet können bis zu 185 m überbrückt werden. Der<br />

ursrpüngliche Standard 10Base5 basiert auf dickerem Koaxialkabel, wobei die Anschlüsse


20 KAPITEL 3. LAN HARDWARE<br />

<strong>der</strong> Endgeräte mittels Transceiver erfolgte. Hiermit s<strong>in</strong>d bis zu 500 m Gesamtlänge erreichbar.<br />

3.1.3 Twisted-Pair-basierte Verkabelungen 10/100 Mbit<br />

Twisted Pair Kabel mit 10/100 Mbit verwendet vier Kupfera<strong>der</strong>n, die paarweise verdrillt<br />

s<strong>in</strong>d. Die maximale Segmentlänge liegt hier bei 100 m. Bei mehr als zwei Rechnern ist nun<br />

üblicherweise zusätzliche Hardware notwendig, die als ”Hub” bezeichnet ist. Die Verkabelung<br />

erfolgt sternförmig zum HUB und erlaubt die e<strong>in</strong>zelne Segmentierung (Abschaltung)<br />

e<strong>in</strong>es Rechners, falls es zu Fehlern auf dem Kabel kommt.<br />

Im 8-adrigen Kabel bzw. auf <strong>der</strong> 8-poligen Anschlussdose werden üblicherweise die Kabelpaare<br />

1,2 und 3,6 verwendet. Möchte man zwei Rechner direkt mittels TP-Kabel verb<strong>in</strong>den,<br />

muss dieses gekreuzt se<strong>in</strong>, damit Empfangs- und Sendeanschlüsse entsprechend<br />

mite<strong>in</strong>an<strong>der</strong> verbunden werden. Diese Aufgabe wird üblicherweise von e<strong>in</strong>em Hub bzw.<br />

Switch übernommen. <strong>E<strong>in</strong></strong>e an<strong>der</strong>e Möglichkeit ist die beiden Rechner mit e<strong>in</strong>em “Cross-<br />

Connenct-Kabel” zu verb<strong>in</strong>den.<br />

Damit Endgeräte und <strong>Netzwerk</strong>komponenten mit unterschiedlichen Übertragungsraten<br />

<strong>in</strong> e<strong>in</strong>em Netz betrieben werden können, s<strong>in</strong>d Komponenten, die 100 Mbit transferieren<br />

können, mit e<strong>in</strong>em Media Independent Interface (MII) ausgestattet. Dieses handelt beim<br />

Aufbau <strong>der</strong> Verb<strong>in</strong>dung die Übertragungsrate, sowie den Verb<strong>in</strong>dungsmodus (Voll- o<strong>der</strong><br />

Halbduplexbetrieb) aus.<br />

3.1.4 1000Mbit<br />

Für Ethernetverb<strong>in</strong>dungen mit 1000 Mbit (Gigabit) benötigt man vier verdrillte Kupfera<strong>der</strong>npaare.<br />

Das hat zur Folge, dass ältere Kabel aufgrund ihrer Beschaltung und elektrischen<br />

Eigenschaften nicht mehr genutzt werden können. Gigabitnetzwerkkomponenten verfügen<br />

analog zu 100 Mbit Geräten über e<strong>in</strong> Gigabit Media Independent Interface (GMII), welches<br />

die Aushandlung <strong>der</strong> Verb<strong>in</strong>dungsart vornimmt. Auf diese Weise können ältere Geräte<br />

weiterh<strong>in</strong> <strong>in</strong> e<strong>in</strong>em solchen Netz betrieben werden. Das GMII ist <strong>in</strong> <strong>der</strong> Lage automatisch<br />

zwischen gekreuzten und ungekreuzten Kabelverb<strong>in</strong>dungen zu unterscheiden und die Verb<strong>in</strong>dung<br />

entsprechend zu schalten.<br />

416 byte for 1000Base-X<br />

520 byte for 1000Base-T<br />

PRE SFD DA SA Length/Type Data Pad FCS<br />

7 1 6 6 4 46 - 1500 4<br />

Field length <strong>in</strong> bytes<br />

Extension<br />

Abbildung 3.4: Erweiterungen des Ethernet-Standards für Gigabit<br />

3.1.5 Ethernet unter L<strong>in</strong>ux<br />

Die durchschnittliche vernetzte L<strong>in</strong>ux-Masch<strong>in</strong>e hängt an e<strong>in</strong>em Ethernet. Für mobile Endgeräte<br />

wie Laptops o<strong>der</strong> Tablet-PC gilt, dass dieses noch nicht e<strong>in</strong>mal die ganze Zeit <strong>der</strong><br />

Fall se<strong>in</strong> muss. Wenn auch Ethernets zu den fehlerfreiesten <strong>Netzwerk</strong>en zählen, so müssen<br />

trotzdem nicht immer alle Komponenten problemlos mite<strong>in</strong>an<strong>der</strong> kooperieren. Klappt die<br />

Aushandlung <strong>der</strong> Verb<strong>in</strong>dungsgeschw<strong>in</strong>digkeit beispielsweise zwischen älterer Switch und<br />

billigem <strong>Netzwerk</strong>adapter nicht, kommt ke<strong>in</strong> Datenaustausch zustande.


3.1. ETHERNET 21<br />

Weniger dramatisch ist e<strong>in</strong>e <strong>Netzwerk</strong>karte im Fullduplex-Mode an e<strong>in</strong>em Hub. Hier<br />

leidet die Verb<strong>in</strong>dungsqualität unter Umständen heftig, wegen <strong>der</strong> ausgeschalteten Kollisionserkennung<br />

<strong>der</strong> <strong>Netzwerk</strong>karte. Als Ergebnis beobachtet man Datenraten durchaus weit<br />

unter <strong>der</strong> nom<strong>in</strong>ellen Schnittstellengeschw<strong>in</strong>digkeit.<br />

An dieser Stelle setzen Programme wie ethtool, mii-diag o<strong>der</strong> die Toolsuite ”nictools”<br />

an. Man als Systemadm<strong>in</strong>istrator ethtool eth0 aufruft, erhält man e<strong>in</strong>en umfassenden<br />

Überblick zum Ethernet-Interface eth0. Hierzu gehören die unterstützten Interface-<br />

Geschw<strong>in</strong>digkeiten, die aktuell benutzte Geschw<strong>in</strong>digkeit, <strong>der</strong> Duplex-Status, welche Art<br />

des Mediums angeschlossen ist, ob e<strong>in</strong> L<strong>in</strong>k besteht und weiteres. Wenn es Probleme mit<br />

<strong>der</strong> automatischen Aushandlung <strong>der</strong> Parameter gibt, lässt sich diese ausschalten:<br />

s02:~ # ethtool -s eth0 autoneg off<br />

s02:~ # ethtool -s eth0 speed 10<br />

s02:~ # ethtool -s eth0 duplex half<br />

Anschliessend kann die Geschw<strong>in</strong>dkeit und die Art des L<strong>in</strong>ks manuell e<strong>in</strong>gestellt werden.<br />

Das Ergebnis <strong>der</strong> letzten beiden Kommandos sorgt für e<strong>in</strong>e <strong>Netzwerk</strong>verb<strong>in</strong>dung <strong>in</strong> <strong>der</strong> Qualität<br />

des alten BNC-Ethernets - 10 Mbits half duplex. Unterstützt die <strong>Netzwerk</strong>komponente<br />

Hub o<strong>der</strong> Switch die Anzeige <strong>der</strong> Geschw<strong>in</strong>digkeit, kann man die Än<strong>der</strong>ung <strong>der</strong> Parameter<br />

dort nachvollziehen. Nach <strong>der</strong> Wie<strong>der</strong>e<strong>in</strong>schaltung <strong>der</strong> ”Autonegotiation” reicht e<strong>in</strong> kurzes<br />

Ziehen und Wie<strong>der</strong>e<strong>in</strong>stecken des Kabels, um wie<strong>der</strong> die alten Parameter vor dem Experiment<br />

zu erhalten. Die <strong>E<strong>in</strong></strong>stellungen kann e<strong>in</strong> Adm<strong>in</strong> natürlich auch Schritt-für-Schritt <strong>in</strong><br />

<strong>der</strong> Kommandozeile vornehmen, <strong>in</strong>dem er die eben gezeigten Befehle umkehrt.<br />

<strong>E<strong>in</strong></strong> gezogenes Kabel quittiert ethtool mit <strong>der</strong> Meldung ”L<strong>in</strong>k detected: no”. Ähnliche<br />

Informationen liefert auch mii-diag.<br />

hermes:~ # mii-diag eth0<br />

Basic registers of MII PHY #1: 1000 796d 0020 6162 05e1 41e1 0005 2001.<br />

The autonegotiated capability is 01e0.<br />

The autonegotiated media type is 100baseTx-FD.<br />

Basic mode control register 0x1000: Auto-negotiation enabled.<br />

You have l<strong>in</strong>k beat, and everyth<strong>in</strong>g is work<strong>in</strong>g OK.<br />

Your l<strong>in</strong>k partner advertised 41e1: 100baseTx-FD 100baseTx 10baseT-FD<br />

10baseT.<br />

End of basic transceiver <strong>in</strong>formation.<br />

ethtool kann bei e<strong>in</strong>er Reihe von <strong>Netzwerk</strong>karten, beispielsweise e<strong>in</strong>igen Onboard Via-<br />

Rh<strong>in</strong>e, dazu verwendet werden, Wake-on-LAN e<strong>in</strong>zuschalten. Dieses erreicht man durch<br />

ethtool -s eth0 wol g. Der Parameter ”g” steht für ”Wake on MagicPacket”. <strong>E<strong>in</strong></strong>en<br />

solchen Weckruf kann das Programm ether-wake erschallen lassen.<br />

ether-wake 00:10:20:30:40:50 schickt e<strong>in</strong> geeignet formatiertes Ethernet-Frame an<br />

die angegebene MAC-Adresse. Es gibt e<strong>in</strong>e ganze Reihe weiterer Programme, die solche<br />

Pakete schicken können, auch über Router h<strong>in</strong>weg.<br />

Möchte man permanent den L<strong>in</strong>k-Status überwachen, weil man beispielsweise nicht zum<br />

Ablesen <strong>der</strong> LEDs an <strong>der</strong> Karte auf die Rechnerrückseite krabbeln will, können hier die<br />

Nic-Tools weiterhelfen. So überwacht beispielsweise für e<strong>in</strong>e SMC Epic100-Karte (83c170)<br />

”epic-diag -mm” permanent ob e<strong>in</strong> Kabel angeschlossen ist o<strong>der</strong> e<strong>in</strong> L<strong>in</strong>k zu e<strong>in</strong>er an<strong>der</strong>en<br />

<strong>Netzwerk</strong>komponente besteht. Die Diag-Tools - <strong>der</strong> Name beg<strong>in</strong>nt immer mit <strong>der</strong><br />

<strong>Netzwerk</strong>karte o<strong>der</strong> dem Chip - können weitere Informationen, beispielsweise über den<br />

Inhalt des Konfigurations-EEPROMs o<strong>der</strong> Device-Register ausgeben: via-diag -e o<strong>der</strong><br />

rtl8139-diag -a.


22 KAPITEL 3. LAN HARDWARE<br />

3.2 Funk-Netze<br />

Drahtlose lokale Kommunikationssysteme, sogenannte Wireless LANs, f<strong>in</strong>den bei zunehmen<strong>der</strong><br />

Produktvielfalt e<strong>in</strong>e immer grössere Verbreitung. Sie basieren üblicherweise auf<br />

Funk als Übertragungsweg. Lokale Funknetze können e<strong>in</strong>e effiziente Alternative zu aufwendigem<br />

Verlegen von Kabeln darstellen. <strong>E<strong>in</strong></strong>e Ad-hoc-Vernetzung per Funk erlaubt den<br />

spontanen und mobilen Datenaustausch. Kabellose <strong>E<strong>in</strong></strong>gabegeräte erhöhen den Bedienkomfort<br />

von Computern. Mit heute verfügbarer drahtloser Technik s<strong>in</strong>d e<strong>in</strong>e ganze Reihe von<br />

Mobilitätsansprüche <strong>der</strong> Nutzer von IT-Technik realisierbar. Die wichtigsten technischen<br />

Systeme hierzu s<strong>in</strong>d z.Z. WLAN (IEEE 802.11) und Bluetooth-Module (IEEE 802.15).<br />

Funknetze s<strong>in</strong>d komplexer im Zugriff als drahtgebundene LANs. Die begrenzte Reichweite<br />

<strong>der</strong> e<strong>in</strong>zelnen Teilnehmer und Stationen verh<strong>in</strong><strong>der</strong>n, dass e<strong>in</strong> übergreifendes Signalerkennen<br />

möglich ist o<strong>der</strong> stark erschwert wird. Zusätzlich soll e<strong>in</strong>e Bewegung zwischen<br />

verschiedenen Zellen ermöglicht werden. Diese Fähigkeit von Netzen wird als Roam<strong>in</strong>g bezeichnet.<br />

Um die beschriebenen Probleme <strong>in</strong> den Griff zu bekommen, wird e<strong>in</strong> MAC-Sublayer-<br />

Protokoll implementiert. Damit wird e<strong>in</strong> e<strong>in</strong>heitliches Netz über verschiedene Sen<strong>der</strong> möglich.<br />

<strong>E<strong>in</strong></strong> naiver Ansatz wäre Verwendung des CSMA/CD-Verfahrens, wie es beim drahtgebundenen<br />

Ethernet geschieht. Jedoch hört 3 nichts bei e<strong>in</strong>em Transfer zwischen 1 & 2 und<br />

könnte zu 2 übertragen wollen. Die Leitung sche<strong>in</strong>t frei zu se<strong>in</strong>, obwohl gesendet wird.<br />

Diese Situation wird als ”Hidden Station Problem” bezeichnet.<br />

Es tritt weiterh<strong>in</strong> folgende Schwierigkeit auf: Bei e<strong>in</strong>em Datentransfer von 2 zu 1 denkt<br />

3, dass Zelle blockiert ist und unterläßt e<strong>in</strong>en gleichzeitigen Transferversuch zu 4, obwohl<br />

dadurch ke<strong>in</strong>e gegenseitige Störung auftreten würde. Auf diese Weise wird Bandbreite verschenkt:<br />

”Exposed Station Problem”. Deshalb wird e<strong>in</strong> neues Zugriffsverfahren e<strong>in</strong>geführt.<br />

MACA(W) bezeichnet Multiple Access with Collision Avoidance. Bei diesem Verfahren wird<br />

vor dem eigentlichen Datentransfer e<strong>in</strong> kurzes Testsignal mit <strong>der</strong> Bezeichnung RTS (Ready<br />

To Send) gesendet. Mit diesem Signal erfolgt die Ankündigung des großen Datenblocks. Die<br />

Zielstation antwortet mit e<strong>in</strong>em CTS (Clear To Send).<br />

Reichweite von 1<br />

3 1 RTS 2 4 3 1 CTS 2 4<br />

5<br />

Reichweite von 2<br />

MACA (W) Zugriffsverfahren für WLAN<br />

Abbildung 3.5: Sichtbarkeitsproblem<br />

Alle Stationen, die e<strong>in</strong> RTS-Signal hören, müssen <strong>in</strong> <strong>der</strong> Zwischenzeit ”schweigen”. Es<br />

gibt e<strong>in</strong>e Optimierung des Protokolls, die mit MACAW bezeichnet wird.<br />

Folgende wichtige Standards regeln die Implementierung drahtloser <strong>Netzwerk</strong>e:<br />

• 802.11a bis 54 Mbit/s im 5 GHz Band<br />

• 802.11b <strong>der</strong>zeitige Implementation bis 11 Mbit/s<br />

5


3.2. FUNK-NETZE 23<br />

• 802.11g bis 54M bit/s jedoch im 2,4 GHz Band<br />

Mit dem <strong>der</strong>zeitig verfügbaren Standard s<strong>in</strong>d bei 11 Mbit/s nom<strong>in</strong>aler Übertragungsrate<br />

aufgrund von Protokolloverheads real ca. 6Mbit/s erreichbar. Verwendet wird das für<br />

Forschung, Mediz<strong>in</strong> und private Zwecke freigegebene Frequenzband bei 2,4 GHz. Die Leistung<br />

<strong>der</strong> verwendeten Geräte, Access-Po<strong>in</strong>ts, <strong>Netzwerk</strong>karten o<strong>der</strong> Repeater darf maximal<br />

100 mW betragen. Die Reichweiten liegen <strong>in</strong>door je nach Gebäudebeschaffenheit bei 30 bis<br />

100 m. Im Freien s<strong>in</strong>d bei Sichtkontakt 300 bis 500 m und mit Antenne verstärkt bis zu<br />

mehreren Kilometern überbrückbar.<br />

<strong>E<strong>in</strong></strong> Funknetz kann <strong>in</strong> verschiedenen Modi aufgebaut werden: AdHoc, Managed, Master,<br />

AccessPo<strong>in</strong>t. Hiervon hängt ab, ob die <strong>Netzwerk</strong>karten auf e<strong>in</strong>e feste Frequenz e<strong>in</strong>gestellt<br />

werden müssen o<strong>der</strong> sie nach e<strong>in</strong>em geme<strong>in</strong>samen Kanal suchen. Beim AccessPo<strong>in</strong>t-Modus<br />

übernimmt <strong>der</strong> AccessPo<strong>in</strong>t die Steuerung <strong>der</strong> Verb<strong>in</strong>dung. Der 802.11g Standard versucht<br />

bis zu 54 Mbit/s noch im 2,4 GHz Band zu realisieren, weiterh<strong>in</strong> gibt es herstellereigene Zwischenstandards<br />

bis 22 Mbits/s, die <strong>der</strong>zeitig auf dem Markt auftauchen und meistens nicht<br />

untere<strong>in</strong>an<strong>der</strong> kompatibel s<strong>in</strong>d. Die WiFi-Zertifizierung kennzeichnet Geräte, die nach den<br />

gegebenen Standards <strong>in</strong>teroperabel s<strong>in</strong>d. Erreicht werden die höheren Bandbreiten durch<br />

Kanalbündelung, womit <strong>in</strong>sgesamt weniger Kanäle für verschiedene Netze zur Auswahl stehen.<br />

Die Aufteilung des zur Verfügung stehenden Frequenzspektrums erfolgt auf bis zu<br />

13 Kanäle 1 Bei e<strong>in</strong>em engmaschigem Netz von AccessPo<strong>in</strong>ts ist e<strong>in</strong>e geschickte Kanalaufteilung<br />

notwendig, um Signalstörung o<strong>der</strong> Auslöschung zu vermeiden. Mehrere AccessPo<strong>in</strong>ts<br />

können <strong>in</strong> e<strong>in</strong>em Bereich betrieben werden, wenn ihre Kanäle weit genug ause<strong>in</strong>an<strong>der</strong>liegen.<br />

Alle Bandbreitenangaben beziehen sich auf e<strong>in</strong> ”Shared Medium”, d.h. bei steigen<strong>der</strong><br />

Teilnehmerzahl steht dem e<strong>in</strong>zelnen e<strong>in</strong>e niedrigere Datenrate, vergleichbar mit Ethernet<br />

über Koaxialkabel, zur Verfügung. Die nutzbare Bandbreite hängt also von den Teilnehmern<br />

pro Funkzelle ab. Es ist jedoch möglich mehrere Zellen parallel zu betreiben. Die<br />

Kennung erfolgt über die sechsstellige MAC, mit dieser erfolgt auch die Anmeldung an den<br />

AccessPo<strong>in</strong>ts.<br />

2,4000GHz 2,4835GHz<br />

1 2 3 4 5 6 7 8 9 10 11 12 13<br />

Kanalbelegung und evtl. Überschneidung beim WLAN (802.11b)<br />

Abbildung 3.6: Kanalaufteilung<br />

1 Die Verteilung ist <strong>in</strong> verschiedenen Län<strong>der</strong>n unterschiedlich, so dass nicht immer alle Kanäle genutzt<br />

werden dürfen.


24 KAPITEL 3. LAN HARDWARE<br />

<strong>E<strong>in</strong></strong> wesentliches Problem haben WLANs gegenüber ihren drahtgebundenen Pendents;<br />

sie s<strong>in</strong>d sehr offen. Deshalb muss e<strong>in</strong>e ganz an<strong>der</strong>e Absicherung als bei drahtgebundenen<br />

Netzen erfolgen. Zur Sicherung <strong>der</strong> Verb<strong>in</strong>dung wurde WEP (WiredEquivalentPrivacy) e<strong>in</strong>geführt.<br />

Es arbeitet mit 64 bzw. 128 Bit Schlüsseln. Diese s<strong>in</strong>d jedoch nicht unproblematisch:<br />

Sie besitzen e<strong>in</strong>en Klartext-Initialisierungsvektor (24 bit), <strong>der</strong> je<strong>der</strong> Nachricht voransteht.<br />

Damit ist <strong>der</strong> WEP-Key nur noch 40 bzw. 104 Bit lang.<br />

Die <strong>E<strong>in</strong></strong>fachheit <strong>der</strong> Konfiguration von WLANs br<strong>in</strong>gt weitere Probleme mit sich: Die<br />

AccessPo<strong>in</strong>ts arbeiten meistens sofort und ohne vore<strong>in</strong>gestellte Absicherung. Zusätzlich werden<br />

meistens DHCP-Server für sich anmeldende Geräte betrieben, die meist so konfiguriert<br />

s<strong>in</strong>d, dass je<strong>der</strong> Host e<strong>in</strong>e Adresse erhält. Deshalb gibt es <strong>in</strong>zwischen e<strong>in</strong>e Art Volkssport:<br />

WarDriv<strong>in</strong>g (o<strong>der</strong> WarChalk<strong>in</strong>g - Suchen nach offenen WLAN-Netzen).<br />

3.3 TokenR<strong>in</strong>g<br />

TokenR<strong>in</strong>g wurde von IBM entwickelt und ist heutzutage nur noch <strong>in</strong> alten Netzen im<br />

<strong>E<strong>in</strong></strong>satz. Im Gegensatz zu Ethernet kreist zur Zuteilung <strong>der</strong> Sendeerlaubnis e<strong>in</strong> ”Token”,<br />

welches dem Netzadapter - <strong>der</strong> im Besitz dieses Tokens ist - erlaubt Pakete zu verschicken.<br />

So kommt es nicht zu Kollisionen und die Bandbreite des Netzes (üblicherweise 4 o<strong>der</strong><br />

16 Mbit) kann auch mit e<strong>in</strong>er grösseren Zahl von Masch<strong>in</strong>en besser ausgenutzt werden, als im<br />

ungeswitchten Ethernet. Die Verzögerungszeiten <strong>in</strong> e<strong>in</strong>em TokenR<strong>in</strong>g liegen üblicherweise<br />

unter 250 ms.<br />

In <strong>der</strong> Regel berechtigt <strong>der</strong> Besitz des Tokens nur zur Sendung e<strong>in</strong>es Blocks (non exhaustive).<br />

Im an<strong>der</strong>en Extremfall könnte auch def<strong>in</strong>iert werden, dass die Station soviele<br />

Datenblöcke senden kann, wie sie möchte (exhaustive). Damit könnte aber e<strong>in</strong>e Station,<br />

die den Token besitzt, alle an<strong>der</strong>en dom<strong>in</strong>ieren. Normalerweise wird deshalb nur e<strong>in</strong> Block<br />

gesendet. Außerdem wird die Dauer <strong>der</strong> Sendeberechtigung befristet (Token Hold<strong>in</strong>g Time,<br />

z.B. 10 ms). Solange das Netz fehlerfrei funktioniert, stellt Token-R<strong>in</strong>g e<strong>in</strong> sehr e<strong>in</strong>fach zu<br />

bedienendes Verfahren dar. Komplexer s<strong>in</strong>d die Aufgaben beim Initieren des Netzes und<br />

be<strong>in</strong> <strong>E<strong>in</strong></strong>- o<strong>der</strong> Auskoppeln von Stationen. TokenR<strong>in</strong>g ist das e<strong>in</strong>zige Netz mit aktiven Stationen,<br />

die aus <strong>E<strong>in</strong></strong>gabe- und Ausgabee<strong>in</strong>heit bestehen. Grundsätzlich s<strong>in</strong>d alle Stationen<br />

gleichberechtigt, jedoch übernimmt e<strong>in</strong>e von ihnen als ”aktiver Monitor” beson<strong>der</strong>e Überwachungsaufgaben<br />

im Netz. <strong>E<strong>in</strong></strong>e an<strong>der</strong>e Station überwacht als ”passiver Monitor” den<br />

aktiven Monitor und kann gegebenenfalls dessen Aufgaben übernehmen. Die Aufgaben des<br />

aktiven Monitors s<strong>in</strong>d:<br />

• Erzeugen des R<strong>in</strong>gtaktes<br />

•<br />

Überwachen des Tokens (Neuen Token erzeugen, falls er verloren geht; Verh<strong>in</strong><strong>der</strong>n<br />

mehrerer Tokens)<br />

• Unterb<strong>in</strong>den permanent kreisen<strong>der</strong> Blöcke o<strong>der</strong> Tokens erhöhter Priorität. (Generell:<br />

R<strong>in</strong>g säubern durch Senden e<strong>in</strong>es “Purge R<strong>in</strong>g Frame” an alle Stationen und Erzeugen<br />

e<strong>in</strong>es neuen Frei-Tokens).<br />

• Verh<strong>in</strong><strong>der</strong>n, dass mehrere Monitore aktiv s<strong>in</strong>d.<br />

• Verzögerung des Token-Rahmens um 24 Bit-Zeiten (die Länge des Token-Rahmens<br />

beträgt 24 Bit). Auch bei extrem kle<strong>in</strong>em R<strong>in</strong>g wird so sichergestellt, dass e<strong>in</strong>e Station<br />

den Token-Rahmen vollständig senden kann, bevor sie ihn wie<strong>der</strong> empfängt.<br />

In regelmäßigen Abständen sendet <strong>der</strong> aktive Monitor e<strong>in</strong>en “Active Monitor Present<br />

Frame” an alle Stationen im R<strong>in</strong>g. Gleichzeitig wird dadurch e<strong>in</strong>e Prozedur <strong>in</strong> Gang gesetzt,


3.3. TOKENRING 25<br />

die allen Stationen die Adresse des jeweiligen Vorgängers im R<strong>in</strong>g liefert (NAUN = Nearest<br />

Active Upstream Neighbour) - e<strong>in</strong>e Information, die nur im Fehlerfall wichtig ist. <strong>E<strong>in</strong></strong> Fehler<br />

auf Empfangsseite bedeutet, dass <strong>der</strong> eigene Empfänger o<strong>der</strong> <strong>der</strong> Sen<strong>der</strong> des NAUN defekt<br />

ist. Die Auswahl des aktiven Monitors geschieht per “Claim-Token Process” durch:<br />

• den <strong>der</strong>zeit aktiven Monitor, wenn dieser Probleme bei <strong>der</strong> Durchführung se<strong>in</strong>er Aufgaben<br />

hat,<br />

• e<strong>in</strong>en passiven Monitor, wenn <strong>der</strong> aktive Monitor nicht korrekt arbeitet (z.B. Timeout<br />

auftritt).<br />

• e<strong>in</strong>e neu e<strong>in</strong>geglie<strong>der</strong>te Station, wenn diese das Fehlen des aktiven Monitors feststellt.<br />

Token-R<strong>in</strong>g-Netze werden normalerweise als Stern-R<strong>in</strong>g-Verb<strong>in</strong>dungen mit passiven R<strong>in</strong>gleitungsverteilern<br />

aufgebaut. In den R<strong>in</strong>gleitungsverteilern bef<strong>in</strong>den sich Relais (die von den<br />

Stationen gesteuert werden); sie dienen <strong>der</strong> <strong>E<strong>in</strong></strong>glie<strong>der</strong>ung von Stationen und <strong>der</strong> Schaltung<br />

von Ersatzr<strong>in</strong>gen bei Defekten.<br />

Die <strong>E<strong>in</strong></strong>glie<strong>der</strong>ung e<strong>in</strong>er Station erfolgt <strong>in</strong> fünf Schritten:<br />

1. Ist e<strong>in</strong> Adapter vom R<strong>in</strong>g getrennt, s<strong>in</strong>d gleichzeitig <strong>E<strong>in</strong></strong>gangs- und Ausgangsleitung<br />

kurzgeschlossen. Es erfolgt zunächst e<strong>in</strong> Adaptertest. Nach dem Test versorgt <strong>der</strong><br />

Adapter die Relais mit Strom und wird <strong>in</strong> den R<strong>in</strong>g e<strong>in</strong>geglie<strong>der</strong>t.<br />

2. Die Station hört nun den R<strong>in</strong>g ab. Wenn sie <strong>in</strong>nerhalb e<strong>in</strong>er festgelegten Zeit ke<strong>in</strong>e<br />

Aktivität des aktiven Monitors wahrnimmt, startet sie den Prozeß zur Auswahl des<br />

aktiven Monitors.<br />

3. Durch Aussenden e<strong>in</strong>es ”Duplicate Address Test Frame” prüft die Station die <strong>E<strong>in</strong></strong>deutigkeit<br />

ihrer Adresse. Ist sie nicht e<strong>in</strong>deutig, koppelt sich die Station wie<strong>der</strong> ab.<br />

4. Durch den NAUN-Prozeß erfährt die Station die Adresse ihres Vorgängers und ist<br />

nun <strong>in</strong>s Netz e<strong>in</strong>geglie<strong>der</strong>t.<br />

5. Von den Vore<strong>in</strong>stellungen abweichende Parameter können nun bei e<strong>in</strong>er Server-Station<br />

abgefragt werden, sofern dies nötig ist.<br />

Die Funktionen von Monitor und von den e<strong>in</strong>geglie<strong>der</strong>ten Stationen müssen nicht nur<br />

e<strong>in</strong>malig <strong>in</strong>itiiert, son<strong>der</strong>n auch ständig überwacht werden. In vielen Fällen s<strong>in</strong>d dies zahlreiche<br />

Aktionen, die auch viele Blöcke auf dem Netz zur Folge haben und <strong>in</strong> <strong>der</strong>en Verlauf<br />

auch Fehler- und Ausnahmebed<strong>in</strong>gungen auftreten können. Der Nachteil von Token-R<strong>in</strong>g<br />

liegt dar<strong>in</strong>, dass beim Ausfall e<strong>in</strong>er Station o<strong>der</strong> bei Kabeldefekten das Netz unterbrochen<br />

wird. Wird die defekte Station h<strong>in</strong>gegen abgeschaltet, so schalten die Relais im R<strong>in</strong>gleitungsverteiler<br />

die Leitung durch. Token R<strong>in</strong>g ist genormt nach IEEE 802.5.<br />

Jede Station empfängt, liest und sendet die auf dem R<strong>in</strong>g zirkulierenden Daten. Dabei<br />

gibt sie im allgeme<strong>in</strong>en nach dem Lesen die jeweilige Nachricht an die Nachbarstation<br />

weiter. Jedes Paket enthält die Adresse des Sen<strong>der</strong>s (SA) und die Zieladresse (DA). Wenn<br />

die Zieladresse mit <strong>der</strong> eigenen Adresse übere<strong>in</strong>stimmt, wird die Nachricht <strong>in</strong> den lokalen<br />

Speicher kopiert. Dies wird <strong>der</strong> lokalen LLC-Komponenete (Logical L<strong>in</strong>k Control) gemeldet,<br />

und es wird e<strong>in</strong> Quittierungsfeld- o<strong>der</strong> Fehlerfeld entsprechend verän<strong>der</strong>t. Anschließend<br />

wird diese Nachricht an die Nachbarstation weiter gesendet. Die sendende Station entfernt<br />

die von ihr gesendete Nachricht und <strong>in</strong>terpretiert die Quittierungsfel<strong>der</strong>. Um Sen<strong>der</strong>echt<br />

zu erhalten, muß jede Station das Token erhalten. Dies kann von je<strong>der</strong> Station mit e<strong>in</strong>er<br />

entsprechenden Priorität vorab reserviert werden:


26 KAPITEL 3. LAN HARDWARE<br />

Priorität Anwendung<br />

0 frei verfügbar, von den meisten Anwendungen verwendet<br />

1-3 frei verfügbar<br />

4 von Bridges verwendet<br />

5,6 reserviert, jedoch nicht verwendet<br />

7 für die Adm<strong>in</strong>istration des R<strong>in</strong>ges verwendet<br />

Tabelle 3.1: Prioritätslevel bei TokenR<strong>in</strong>g<br />

Nur die Station mit <strong>der</strong> höchsten reservierten Priorität erhält somit das Sen<strong>der</strong>echt.<br />

Diese Prioritäten, zusammen mit <strong>der</strong> festgelegten maximalen Umlaufzeit e<strong>in</strong>es Paketes,<br />

ermöglichen e<strong>in</strong>e garantierte Datenübertragung kont<strong>in</strong>uierlicher Medientypen.<br />

3.4 <strong>Netzwerk</strong>-Interfaces von L<strong>in</strong>ux<br />

Auf irgende<strong>in</strong>e Weise müssen <strong>Netzwerk</strong>datenpakete <strong>in</strong> e<strong>in</strong>e L<strong>in</strong>uxmasch<strong>in</strong>e h<strong>in</strong>e<strong>in</strong>kommen<br />

o<strong>der</strong> diese verlassen können. Dies geschieht über sogenannte <strong>Netzwerk</strong>-Interfaces. Durch<br />

den Namen des Interfaces wird meistens die Art <strong>der</strong> Verb<strong>in</strong>dung o<strong>der</strong> <strong>der</strong> verwendeten<br />

<strong>Netzwerk</strong>hardware spezifiziert. An<strong>der</strong>s als bei an<strong>der</strong>en <strong>Unix</strong>es verwendet L<strong>in</strong>ux für alle<br />

Ethernet-Interfaces die Bezeichnung ethN. Das ”N” ist e<strong>in</strong>e natürliche Zahl zwischen ”0”<br />

für das erste Interface und ”n-1” für die letzte <strong>Netzwerk</strong>karte, die <strong>in</strong> e<strong>in</strong>e Masch<strong>in</strong>e e<strong>in</strong>gebaut<br />

ist. <strong>E<strong>in</strong></strong> Rechner kann durchaus über etliche Interfaces auch von verschiedenen Typen<br />

verfügen. Die Verfügbarkeit e<strong>in</strong>es bestimmten Interfaces hängt meistens von e<strong>in</strong>em Kerneltreiber<br />

ab. Mit dem Laden des entsprechenden Moduls für e<strong>in</strong>en TokenR<strong>in</strong>g, Ethernet o<strong>der</strong><br />

ähnliche Adapter steht sodann das entsprechende Interface zur Verfügung. Dabei hängt die<br />

Reihenfolge <strong>der</strong> Nummerierung von <strong>der</strong> Reihenfolge des Modul-Ladens o<strong>der</strong> <strong>der</strong> automatischen<br />

Erkennung des L<strong>in</strong>ux-Kernels ab.<br />

TokenR<strong>in</strong>g-Adapter stellen nach dem Laden <strong>der</strong> entsprechenden Kernelmodule e<strong>in</strong> <strong>Netzwerk</strong><strong>in</strong>terface<br />

vom Typ tr0 und folgende für weitere Adapter dieser Art bereit. Ähnliches<br />

geschieht bei den entsprechenden Modulen für ATM, FDDI und an<strong>der</strong>e <strong>Netzwerk</strong>hardware.<br />

<strong>E<strong>in</strong></strong>e Beson<strong>der</strong>heit ist das Loopback-Interface, welches mit dem <strong>E<strong>in</strong></strong>schalten <strong>der</strong> TCP/IP<br />

Unterstützung, im Kernel automatisch zur Verfügung steht. Es wird mit lo bezeichnet und<br />

existiert nur <strong>in</strong> e<strong>in</strong>facher Ausführung. Weiterh<strong>in</strong> gibt es e<strong>in</strong>e Reihe von Software-Interfaces,<br />

wie ppp0 für PPP-Verb<strong>in</strong>dungen verschiedener Art, slip0 für Serial-L<strong>in</strong>e-IP, dummy0 für<br />

Testzwecke, ipsec0 für IPsec-Verb<strong>in</strong>dungen und weitere.<br />

dirk@l<strong>in</strong>ux:~/kurs> /sb<strong>in</strong>/ifconfig<br />

cipcb0 L<strong>in</strong>k encap:IPIP Tunnel HWaddr<br />

<strong>in</strong>et addr:192.168.2.2 P-t-P:192.168.2.1 Mask:255.255.255.255<br />

UP POINTOPOINT RUNNING NOARP MTU:1442 Metric:1<br />

RX packets:0 errors:0 dropped:0 overruns:0 frame:0<br />

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0<br />

collisions:0 txqueuelen:100<br />

RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)<br />

eth0 L<strong>in</strong>k encap:Ethernet HWaddr 00:02:B3:87:53:43<br />

<strong>in</strong>et addr:132.230.9.124 Bcast:132.230.9.255 Mask:255.255.255.0<br />

<strong>in</strong>et6 addr: fe80::202:b3ff:fe87:5343/10 Scope:L<strong>in</strong>k<br />

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1<br />

RX packets:5323418 errors:0 dropped:0 overruns:0 frame:0<br />

TX packets:6567650 errors:0 dropped:0 overruns:1 carrier:0<br />

collisions:0 txqueuelen:100


3.5. AUFGABEN 27<br />

RX bytes:795523375 (758.6 Mb) TX bytes:2554637681 (2436.2 Mb)<br />

Interrupt:10 Base address:0xec00 Memory:dffff000-dffff038<br />

lo L<strong>in</strong>k encap:Local Loopback<br />

<strong>in</strong>et addr:127.0.0.1 Mask:255.0.0.0<br />

<strong>in</strong>et6 addr: ::1/128 Scope:Host<br />

UP LOOPBACK RUNNING MTU:16436 Metric:1<br />

RX packets:8401120 errors:0 dropped:0 overruns:0 frame:0<br />

TX packets:8401120 errors:0 dropped:0 overruns:0 carrier:0<br />

collisions:0 txqueuelen:0<br />

RX bytes:802796349 (765.6 Mb) TX bytes:802796349 (765.6 Mb)<br />

vmnet8 L<strong>in</strong>k encap:Ethernet HWaddr 00:50:56:C0:00:08<br />

<strong>in</strong>et addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0<br />

<strong>in</strong>et6 addr: fe80::250:56ff:fec0:8/10 Scope:L<strong>in</strong>k<br />

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1<br />

RX packets:0 errors:0 dropped:0 overruns:0 frame:0<br />

TX packets:4297 errors:0 dropped:0 overruns:0 carrier:0<br />

collisions:0 txqueuelen:100<br />

RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)<br />

Mit dem Kommando ifconfig erhält man z.B. obige Ausgabe, welche e<strong>in</strong> Interface für CIPE<br />

(cipcb0), e<strong>in</strong> klassisches Ethernet-Interface (eth0), das Loopback-Interface (lo) und e<strong>in</strong> virtuelles<br />

Ethernet-Interface für die Software VMware (vmnet8) als konfiguriert anzeigt. Die<br />

angezeigten Zusatz<strong>in</strong>formationen variieren <strong>in</strong> Abhängigkeit vom Interface-Typ. Die Maximum<br />

Transfer Unit (MTU) hängt von <strong>der</strong> darunterliegenden <strong>Netzwerk</strong>hardware ab und<br />

liegt, z.B. im Ethernet bei 1500 Byte. Das Loopback-Interface, welches nur <strong>in</strong> Software auf<br />

<strong>der</strong> Masch<strong>in</strong>e selbst stattf<strong>in</strong>det, kann <strong>in</strong> e<strong>in</strong>er <strong>E<strong>in</strong></strong>heit bis zu 16 kByte übertragen. Hardwaredaten,<br />

wie verwendeter Interrupt und Speicherbereiche f<strong>in</strong>det man natürlich nur bei<br />

Interfaces, die direkt mit e<strong>in</strong>er Hardware zu identifizieren s<strong>in</strong>d.<br />

3.5 Aufgaben<br />

3.5.1 Ethernet<br />

1. Welche Medien verwenden die Ethernet-Standards 10Base2, 100BaseTX und 10Base5?<br />

2. Was versteht man unter ”promiscuous mode”? Was heisst dieses speziell <strong>in</strong> Ethernets?


28 KAPITEL 3. LAN HARDWARE


Kapitel 4<br />

WAN Hardware<br />

4.1 <strong>E<strong>in</strong></strong>leitung<br />

Der Begriff Internet hat heute e<strong>in</strong>en festen Platz <strong>in</strong> fast je<strong>der</strong>manns Wortschatz. Die Entdeckung<br />

des Internets bee<strong>in</strong>flusst das Leben aller Generationen. Kommunikation (Chatt,<br />

E-Mail, ), <strong>E<strong>in</strong></strong>kaufen, Überweisungen (Onl<strong>in</strong>e-Bank<strong>in</strong>g), Recherchieren - um nur e<strong>in</strong>ige zu<br />

nennen - s<strong>in</strong>d Bereiche, <strong>in</strong> die das Internet auf selbstverständliche Art und Weise <strong>E<strong>in</strong></strong>zug<br />

gehalten hat. Das Internet ist heutzutage aus fast ke<strong>in</strong>em Lebensbereich mehr wegzudenken.<br />

Das Internet Protokoll selbst def<strong>in</strong>iert jedoch ke<strong>in</strong>e Hardware, die zur Bitübertragung<br />

e<strong>in</strong>gesetzt werden kann.<br />

Die folgenden Abschnitte wollen deshalb versuchen, dem Leser e<strong>in</strong>em Blick h<strong>in</strong>ter die<br />

Kulissen <strong>der</strong> physikalischen Datenübertragung zu verschaffen. Dabei wird <strong>in</strong>sbeson<strong>der</strong>e auf<br />

die e<strong>in</strong>gesetzten Technologien und Methoden <strong>der</strong> Datenübertragung e<strong>in</strong>gegangen.<br />

Wie aus dem Namen bereits ersichtlich, bilden Computernetzwerke e<strong>in</strong>en Verbund von<br />

mehreren Computern. Dabei können diese Computer sich alle <strong>in</strong> e<strong>in</strong>em Raum bef<strong>in</strong>den und<br />

über sogenannte <strong>Netzwerk</strong>kabel direkt mite<strong>in</strong>an<strong>der</strong> verbunden se<strong>in</strong> o<strong>der</strong> sich <strong>in</strong> unterschiedlichen<br />

Teilen <strong>der</strong> Welt aufgestellt se<strong>in</strong> und über <strong>Netzwerk</strong>kabel und Funknetze mite<strong>in</strong>an<strong>der</strong><br />

kommunizieren. Sobald <strong>in</strong> irgende<strong>in</strong>er Form m<strong>in</strong>destens zwei physikalisch getrennte Computer<br />

mite<strong>in</strong>an<strong>der</strong> verbunden s<strong>in</strong>d, spricht man von e<strong>in</strong>em Computernetzwerk.<br />

Im Fachjargon bezeichnet man alle Computer, die im <strong>Netzwerk</strong> registriert s<strong>in</strong>d, als Hosts<br />

o<strong>der</strong> Endsysteme. In diesen Unterlagen werden zumeist die Begriffe Host o<strong>der</strong> <strong>Netzwerk</strong>rechner<br />

verwendet werden. In <strong>der</strong> heutigen Zeit existieren unzählige Computernetzwerke (kurz:<br />

<strong>Netzwerk</strong>e). <strong>E<strong>in</strong></strong> <strong>Netzwerk</strong> liegt bereits vor, wenn <strong>in</strong> e<strong>in</strong>em kle<strong>in</strong>en Haushalt die Computer<br />

aller Familienmitglie<strong>der</strong> über e<strong>in</strong> lokales Netz (LAN) mite<strong>in</strong>an<strong>der</strong> verbunden s<strong>in</strong>d. Umfangreichre<br />

<strong>Netzwerk</strong>e s<strong>in</strong>d beispielsweise Unternehmensnetzwerke, Firmennetzwerke o<strong>der</strong> Universitätsnetzwerke.<br />

Das berühmteste <strong>Netzwerk</strong> ist aber sicherlich das öffentliche Internet,<br />

welches Millionen von Computern mite<strong>in</strong>an<strong>der</strong> verb<strong>in</strong>det und so als e<strong>in</strong> Zusammenschluss<br />

von verschiedenen <strong>Netzwerk</strong>en <strong>in</strong>terpretiert werden kann.<br />

Da - wie oben bereits erwähnt - die Hosts sich <strong>in</strong> den verschiedensten Teilen <strong>der</strong> Welt<br />

bef<strong>in</strong>den können und <strong>in</strong> jedem Land unter Umständen an<strong>der</strong>e Standards bezüglich <strong>der</strong> e<strong>in</strong>gesetzten<br />

Computertechnologien existieren, beschäftigte man sich schon <strong>in</strong> den früheren<br />

Jahren <strong>der</strong> <strong>Netzwerk</strong>e<strong>in</strong>führung mit <strong>der</strong> Frage des reibungslosen Ablaufes <strong>der</strong> Kommunikationen<br />

zwischen den verschiedenen Hosts.<br />

29


30 KAPITEL 4. WAN HARDWARE<br />

4.2 Leistung und Kosten <strong>der</strong> e<strong>in</strong>zelnen Technologien<br />

4.2.1 Leistung / Datendurchsatz<br />

In Tabelle 3.1. s<strong>in</strong>d die häufig verwendeten Verb<strong>in</strong>dungsprotokolle aufgeführt. ATM, ISDN<br />

und Modem werden eher dem WAN-Bereich, <strong>der</strong> Rest dem LAN zugeordnet. Aus <strong>der</strong> Tabelle<br />

geht die max. Reichweite, die Anzahl <strong>der</strong> Knoten und <strong>der</strong> Datendurchsatz hervor.<br />

4.2.2 Kosten<br />

Die Kosten für die verschiedenen <strong>Netzwerk</strong>typen s<strong>in</strong>d <strong>in</strong> Tabelle 3.2. aufgelistet. Sie lassen<br />

sich hier natürlich nur grob angeben. Bei Fest<strong>in</strong>stallationen wird man noch die Aufwendungen<br />

für Anschlussdosen (10 - 20 EUR/Stück), die Unterverteiler (Patchpanel (100 -<br />

300 EUR), Datenschränke (200 - 600 EUR), Patchkabel (TP 2.5 EUR/m, LWL 12 EUR/m<br />

...) mit e<strong>in</strong>planen müssen. Wenn Lichtwellenleiter zum <strong>E<strong>in</strong></strong>satz kommt, s<strong>in</strong>d die Aufwendungen<br />

noch etwas höher anzusetzen, da für den Anschluss (das Spleissen) <strong>in</strong> den meisten<br />

Fällen e<strong>in</strong>e Firma beauftragt werden muss. Bei e<strong>in</strong>er Funkvernetzung entfallen die Kosten<br />

für e<strong>in</strong>e Fest<strong>in</strong>stallation, jedoch s<strong>in</strong>d die weitaus höheren Aufwendungen für die <strong>Netzwerk</strong>karten<br />

und die Access-Po<strong>in</strong>ts zu berücksichtigen.<br />

Medium Reichweite Knoten Durchsatz<br />

Funk-LAN e<strong>in</strong>ige 100m ca. 20 - 50 2 - 11 Mbits<br />

ADSL mehrere km - 0.5 - 7.6 Mbit<br />

ATM mehrere km ???? 2 - 622 Mbits<br />

Ethernet (TP) 100 m 2 - ... 10 - 1000 Mbits<br />

Ethernet (BNC) 185 m ca. 35 10 Mbits<br />

ISDN - - ¿ 64 Kbits<br />

loopback 0 1 ¿ 100 Mbits<br />

Modem - 2 0.3 - 56 Kbits<br />

GPRS/HSCSD mehrere km - 0.3 - 56 KBit<br />

UMTS mehrere km - 128 - 386 KBit<br />

Serieller Port 30 m 2 300 - 112000 Bits<br />

Tokenr<strong>in</strong>g 100 m 8 4, 16 Mbits<br />

Tabelle 4.1: Leistung und Datendurchsatz e<strong>in</strong>iger <strong>Netzwerk</strong>e<br />

<strong>E<strong>in</strong></strong>ige <strong>Netzwerk</strong>-Technologien wird man nur noch <strong>in</strong> bestehenden Installationen o<strong>der</strong><br />

Computer-Flohmärkten antreffen. Hierzu gehören sicherlich BNC-Ethernet, TokenR<strong>in</strong>g o<strong>der</strong><br />

auch Parallelport-Verb<strong>in</strong><strong>der</strong>.<br />

4.3 Telefonnetze<br />

Telefonnetze gehören zu den ältesten Weitverkehrsnetzen überhaupt. Die ersten Zweidraht-<br />

Kupfer-Telefonnetze wurden bereits Ende des 19. Jahrhun<strong>der</strong>ts e<strong>in</strong>gerichtet. Die Versorgung<br />

mit Telefonanschlüssen liegt <strong>in</strong> Deutschland <strong>in</strong>zwischen bei nahe 100 Prozent. Datennetze<br />

kamen deutlich später. Deshalb wurden die ersten Datenleitungen über Telefonnetze<br />

geschaltet. Die meisten Internet-Benutzer verwenden <strong>in</strong> irgende<strong>in</strong>er Form Telefonleitungen<br />

für die Verb<strong>in</strong>dung. Dabei geht <strong>der</strong> Trend jedoch e<strong>in</strong>deutig weg von den alten ”analogen” Telefonanschlüssen<br />

über ISDN h<strong>in</strong> zu DSL. Jedoch bleibt <strong>der</strong> Anbieter <strong>der</strong> Zweidraht-Leitung


4.3. TELEFONNETZE 31<br />

Medium Adapter Kabel Gebühren (ca. EUR)<br />

ATM 300 - 600 EUR 4/m (LWL) Grosskunde<br />

Parallelport 5 - 10 10 -<br />

Ethernet (TP 1000) 15 - 100 EUR 0.70/m -<br />

Ethernet (TP 100) 4 - 40 EUR 0.70/m -<br />

Ethernet (TP 10) – 0.70/m -<br />

Ethernet (BNC 10) – 0.20/m -<br />

Funk-LAN (2/11 Mbit) 100 - 200 EUR 500/AccessPo<strong>in</strong>t -<br />

ISDN 100 - Telefongebühren<br />

Modem 80 - 200 - Telefongebühren<br />

GPRS 40 - 300 EUR - saftige Volumengebühr<br />

HSCSD 40 - 200 EUR - saftige Zeitgebühr<br />

UMTS 80 - 300 EUR - saftige Volumengebühr<br />

Serieller Port – 5 0<br />

TokenR<strong>in</strong>g – 0.70/m -<br />

Tabelle 4.2: Kosten e<strong>in</strong>iger <strong>Netzwerk</strong>e<br />

<strong>in</strong> den meisten Fällen identisch.<br />

Die Zeit <strong>der</strong> analogen Telefonnetze <strong>in</strong> Deutschland ist Mitte <strong>der</strong> 90er Jahre abgelaufen.<br />

Wenn auch die meisten Endgeräte <strong>in</strong> den Haushalten nach den Pr<strong>in</strong>zipien <strong>der</strong> Telefone von<br />

vor 70 Jahren arbeiten, so f<strong>in</strong>det die Gesprächsvermittlung und Übertragung im H<strong>in</strong>tergrund<br />

meistens nur noch digital statt.<br />

4.3.1 Das klassische Telefonnetz<br />

Das klassische Telefonnetz nutzt e<strong>in</strong>e Kupfer-Zweidraht-Leitung von <strong>der</strong> Vermittlungsstelle<br />

bis <strong>in</strong> die Haushalte. Diese Art Telefonsystem wird von <strong>Netzwerk</strong>ern oft als ”pla<strong>in</strong> old<br />

telephone system” - POTS bezeichnet.<br />

Übertragungs- Datenrate Datenrate Reichweite Verfügbarkeit<br />

methoden Upstream Downstream <strong>in</strong> Meter <strong>in</strong> Deutschland<br />

Analoge Modems 33.6 kbps 56 kbps etliche km verfügbar<br />

IDSN 128 kbps 128 kbps etliche km verfügbar<br />

Symmetrisches DSL 2048 kbps 2048 kbps 4000 verfügbar<br />

ADSL (DMT) 768 kbps 8 Mbps 6000 verfügbar<br />

ADSL (CAP) 64 kbps 1,54 Mbps 6000 verfügbar<br />

640 kbps 6,14 Mbps 4000 Testphase<br />

VDSL 640 kbps 13 Mbps 1500 Testphase<br />

1,6 bis 2,3 Mbps 52 Mbps 300 Testphase<br />

Kabelmodems 768 kbps 30 Mbps je nach Kabel Testphase<br />

Tabelle 4.3: Protokolle auf 2-draht Kupferleitungen im Überblick<br />

4.3.2 Digitale Telefonnetze - ISDN<br />

Meistens wird ISDN für e<strong>in</strong>en Zugang zum Internet verwendet; es ist für <strong>in</strong>terne Vernetzungen<br />

fast nur im Bereich <strong>der</strong> WAN’s (Wide Area Networks) anzutreffen. ISDN wird üblicherweise<br />

von Telefongesellschaften zur Sprachkommunikation angeboten und f<strong>in</strong>det sich auch


32 KAPITEL 4. WAN HARDWARE<br />

im Umfeld grösserer Firmentelefonanlagen. Die Primärbandbreite beträgt 64 kbit, welches<br />

von <strong>der</strong> digitalen Sprachvermittlung herrührt. Verwendet wird PCM (Pulse Code Modulation),<br />

welche 8000 Samples von 8 bit Grösse pro Sekunde erzeugt.<br />

Oft f<strong>in</strong>det man passive ISDN-Karten im Computer, die nur e<strong>in</strong>en e<strong>in</strong>fachen Wandler<br />

des digitalen Datenstroms <strong>der</strong> ISDN-Verb<strong>in</strong>dung zum Rechnerbus vornehmen. Für den<br />

jeweiligen Adapter muss e<strong>in</strong>e Treiberunterstützung im L<strong>in</strong>ux-Kernel vorhanden se<strong>in</strong>, damit<br />

er benutzt werden kann. Zur Ansprache als <strong>Netzwerk</strong>-Interface stehen bei erfolgreicher<br />

Konfiguration die Po<strong>in</strong>t-to-Po<strong>in</strong>t (PPP) Interfaces ippp0 und folgende zur Verfügung. Diese<br />

können sodann mit den klassischen <strong>Netzwerk</strong>tools e<strong>in</strong>gerichtet und gesteuert werden.<br />

4.3.3 Mobilfunknetze nach dem GSM-Standard<br />

GSM - <strong>der</strong> Global Standard for Mobile Communication def<strong>in</strong>iert e<strong>in</strong> digitales Mobilfunknetz,<br />

was <strong>in</strong> <strong>der</strong> überwiegenden Zahl <strong>der</strong> Län<strong>der</strong> weltweit e<strong>in</strong>gesetzt wird. Über dieses<br />

Telefonnetz ist es ebenfalls möglich Daten zu übertragen. Dabei gibt es zwei Ausprägungen:<br />

CSD benutzt direkt GSM-Technik und benötigt ke<strong>in</strong>e zusätzliche Infrastruktur. GPRS ist<br />

e<strong>in</strong>e Erweiterung des GSM Standards und benötigt zusätzliche Komponenten. Inzwischen<br />

s<strong>in</strong>d jedoch die meisten GSM-Netze auch GPRS-fähig.<br />

4.3.4 GPRS<br />

Der General Packet Radio Service (GPRS) benötigt ke<strong>in</strong>e eigene Infrastruktur, son<strong>der</strong>n<br />

ist lediglich e<strong>in</strong>e Erweiterung <strong>der</strong> bestehenden GSM-Netze. GPRS-Handys stellen für den<br />

schnellen Austausch <strong>der</strong> Datenpakete e<strong>in</strong>e dauerhafte Verb<strong>in</strong>dung zu e<strong>in</strong>em <strong>E<strong>in</strong></strong>wahlpunkt1 <strong>in</strong>s Netz her. Für die Datenkommunikation wird es Endgeräten erlaubt mehrere GSM-<br />

Kanäle zusammenzufassen und für die Kommunikation zu reservieren. Bandbreiten <strong>in</strong> Funknetzen<br />

haben immer e<strong>in</strong> Problem: Alle Nutzer e<strong>in</strong>er Zelle teilen sich e<strong>in</strong> geme<strong>in</strong>sames<br />

Medium. Wollen alle geme<strong>in</strong>sam zugreifen, s<strong>in</strong>kt für jeden e<strong>in</strong>zelnen die erreichbare Datenrate.<br />

Üblicherweise haben Sprachverb<strong>in</strong>dungen Vorrang, so dass die verfügbare Bandbreite<br />

je nach Auslastung e<strong>in</strong>er GSM-Zelle unterschiedlich ausfällt. Auch können verschiedene<br />

GPRS-Geräte, wie PCMCIA, Cardbus-Adapter o<strong>der</strong> Mobiltelefone mit entsprechen<strong>der</strong> Erweiterung<br />

unterschiedlich viele Kanäle gleichzeitig nutzen. In <strong>der</strong> <strong>E<strong>in</strong></strong>führungsphase von<br />

GPRS wurde netzseitig e<strong>in</strong>e Bandbreite von 53,6 kbit/s (4 Kanäle à 13,4 kbit/s) pro Funkzelle<br />

vorgesehen. Stehen alle acht Kanäle für GPRS zur Verfügung, würde die Bandbreite auf<br />

107,2 kbit/s steigen. Weitere Steigerungen durch bessere Fehlerprotokolle erlaubten theoretische<br />

171,2 kbit/s (8 Kanäle a 21,4 kbit/s). Handys arbeiten momentan mit 13,4 kbit/s<br />

pro Kanal. Sie können je nach Gerät zwei bis drei Kanäle zusammenfassen.<br />

Aktuelle Geräte unterstützen auch vier Kanäle und können damit auf e<strong>in</strong>e Bandbreite<br />

von 53,6 kbit/s kommen. Die Angaben beziehen sich jedoch meistens nur auf den Download-<br />

Kanal. Im Upload können Mobiltelefone oft nur e<strong>in</strong>en o<strong>der</strong> zwei Kanäle benutzen. Oft<br />

f<strong>in</strong>det man e<strong>in</strong>e Klassifizierung: So bedeutet Class 10, dass das Gerät vier Down- und zwei<br />

Upstreamkanäle nutzen kann. Class 8 deutet auf vier Down- aber nur e<strong>in</strong>en Upstream h<strong>in</strong>.<br />

GPRS selbst arbeitet schon mit starker Datenkompression. Deshalb kann <strong>der</strong> Endanwen<strong>der</strong><br />

auf e<strong>in</strong>e Kompression auf höheren Protokollschichten verzichten. GPRS verwendet zur<br />

Paketvermittlung gleich das Internet-Protokoll. Üblicherweise stellen die Mobilfunkanbieter<br />

ihren Datenkunden dabei e<strong>in</strong>e private <strong>Netzwerk</strong>adresse zur Verfügung. Die Aushandlung <strong>der</strong><br />

IP-Parameter übernimmt das von an<strong>der</strong>en Diensten wohlbekannte Po<strong>in</strong>t-to-Po<strong>in</strong>t-Protokoll<br />

1 APN = Acces Po<strong>in</strong>t Name


4.3. TELEFONNETZE 33<br />

(PPP). Jedes Datenpaket besitzt somit e<strong>in</strong>e e<strong>in</strong>deutige Empfängeradresse im Funknetz, um<br />

zu dem Endgerät zu gelangen. Hierfür ist es unerheblich, über welchen <strong>der</strong> Funkkanäle es<br />

übertragen wird.<br />

Wie beim GSM auch halten alle e<strong>in</strong>gebuchten GPRS-Teilnehmer permanent über Signalisierungskanäle<br />

Kontakt mit dem Netz. Der Teilnehmer ist über den Zeitraum <strong>der</strong> <strong>E<strong>in</strong></strong>buchung<br />

immer onl<strong>in</strong>e. Hierfür müssen die Kanäle nicht aufgebaut se<strong>in</strong>. Die notwendigen<br />

Kanäle werden erst zugeschaltet, wenn tatsächlich Daten abgerufen werden.<br />

Die <strong>E<strong>in</strong></strong>führung von GPRS erfolgte <strong>in</strong> Deutschland schrittweise ab dem Jahr 2000. GPRS<br />

wurde dabei technisch gesehen über das bestehende GSM-Netz gelegt. Wesentliche Teile <strong>der</strong><br />

GSM-Infrastruktur kommen auch für das GPRS-Netz zum <strong>E<strong>in</strong></strong>satz.<br />

4.3.5 HSCSD<br />

CSD (Circuit Switched Data) existiert seit Beg<strong>in</strong>n <strong>der</strong> GSM-Netze. Die Nutzdatenrate beschränkte<br />

sich auf maximal 9,6 kBit/s. In <strong>der</strong> GSM-Phase-2 wurde die Geschw<strong>in</strong>digkeit <strong>der</strong><br />

Datenübertragung auf 14,4 kBit/s erhöht, <strong>in</strong> <strong>der</strong> GSM-Phase-2+ die Bündelung mehrerer<br />

Kanäle ermöglicht.<br />

GPRS war nicht <strong>der</strong> e<strong>in</strong>zige Ansatz zur Erhöhung <strong>der</strong> möglichen Datenrate. HSCSD<br />

(High Speed Circuit Switched Data), <strong>der</strong> Nachfolger von CSD, erreicht e<strong>in</strong>e maximale Datentransferrate<br />

von 57,6 kbit/s. Der Unterschied zwischen den beiden Systemen liegt <strong>in</strong><br />

den verwendeten Protokollen und <strong>der</strong> Übertragungstechnik. Wie bei e<strong>in</strong>er Telefonleitung<br />

steht bei HSCSD jedem User e<strong>in</strong> dedizierter Nutzkanal exklusiv zur Verfügung. Das macht<br />

sich im Abrechnungsmodell bemerkbar: HSCSD-Anbieter offerieren dem Teilnehmer e<strong>in</strong>en<br />

zeitabhängigen Tarif, <strong>der</strong> unabhängig vom Datenvolumen ist. Die Zahl <strong>der</strong> gleichzeitig aktiven<br />

Teilnehmern ist nicht relevant und durch die maximale Zellkapazität beschränkt.<br />

E-Plus und Vodafone bieten <strong>in</strong> Deutschland HSCSD an. Die Preisgestaltung legt jedoch die<br />

Nutzung von GPRS für die gewohnte Internet-Nutzung nahe. HSCSD lohnt sich nur bei<br />

permanenten gleichmäßig hohen Datenraten.<br />

4.3.6 Mobilfunknetze <strong>der</strong> dritten Generation - UMTS<br />

H<strong>in</strong>ter <strong>der</strong> Abkürzung UTMS (Universal Mobile Telecommunications System) steckt <strong>der</strong><br />

1998 von <strong>der</strong> ETSI (Abkürzung für European Telecommunications Standard Institute) vorgestellte<br />

Breitband-Mobilfunkstandard <strong>der</strong> dritten Generation (G3). Die Weiterentwicklung<br />

und Pflege des Standards unterliegt <strong>in</strong>zwischen dem 3GPP (3rd Generation Partnership<br />

Project). Zu den wesentlichen Leistungsmerkmale von UMTS zählt die Übertragung von<br />

Sprache und Audiodaten, die Übermittlung von multimedialen Inhalten sowie <strong>der</strong> schnelle<br />

Zugriff auf das Internet. UMTS ermöglicht Datenübertragungsraten von 364 kbit/s bis zu<br />

2 Mbit/s, womit Stream<strong>in</strong>g Video und Audio Übertragung, sowie Bildtelefonie ermöglicht<br />

werden sollen.<br />

Diese Übertragungsraten erreicht UMTS durch den asynchronen Transfermodus kurz<br />

ATM-Verfahren im sogenannten Codemultiplexverfahren. Als Funk-Technologie kommt Wideband<br />

CDMA (WCDMA) im Frequenzbereich um die 2GHz zum <strong>E<strong>in</strong></strong>satz. UMTS-Hotspots<br />

existieren bereits <strong>in</strong> Ballungszentren und Großstädten. Ob e<strong>in</strong>e flächendeckende <strong>E<strong>in</strong></strong>führung<br />

stattf<strong>in</strong>det, muss abgewartet werden. Nicht mehr alle Bieter um die Lizenzen im Jahr 2000<br />

s<strong>in</strong>d am Start und die Aktivitäten <strong>der</strong> verbliebenen s<strong>in</strong>d von Zurückhaltung gekennzeichnet.


34 KAPITEL 4. WAN HARDWARE<br />

4.4 ISDN<br />

Meistens wird ISDN für e<strong>in</strong>en Zugang zum Internet verwendet; es ist für <strong>in</strong>terne Vernetzungen<br />

fast nur im Bereich <strong>der</strong> WAN’s (Wide Area Networks) anzutreffen. ISDN wird üblicherweise<br />

von Telefongesellschaften zur Sprachkommunikation angeboten und f<strong>in</strong>det sich auch<br />

im Umfeld grösserer Firmentelefonanlagen. Die Primärbandbreite beträgt 64 kbit, welches<br />

von <strong>der</strong> digitalen Sprachvermittlung herrührt. Verwendet wird PCM (Pulse Code Modulation),<br />

welche 8000 Samples von 8 bit Grösse pro Sekunde erzeugt.<br />

Oft f<strong>in</strong>det man passive ISDN-Karten im Computer, die nur e<strong>in</strong>en e<strong>in</strong>fachen Wandler<br />

des digitalen Datenstroms <strong>der</strong> ISDN-Verb<strong>in</strong>dung zum Rechnerbus vornehmen. Für den<br />

jeweiligen Adapter muss e<strong>in</strong>e Treiberunterstützung im L<strong>in</strong>ux-Kernel vorhanden se<strong>in</strong>, damit<br />

er benutzt werden kann. Zur Ansprache als <strong>Netzwerk</strong>-Interface stehen bei erfolgreicher<br />

Konfiguration die Po<strong>in</strong>t-to-Po<strong>in</strong>t (PPP) Interfaces ippp0 und folgende zur Verfügung. Diese<br />

können sodann mit den klassischen <strong>Netzwerk</strong>tools e<strong>in</strong>gerichtet und gesteuert werden.<br />

4.5 Modem<br />

<strong>E<strong>in</strong></strong> ”Modem” empfängt Daten von <strong>der</strong> seriellen Schnittstelle und verschickt sie über die<br />

Telefonleitung o<strong>der</strong> Zweidraht-Standleitung. Externe Modems werden zwischen seriellero<strong>der</strong><br />

USB-Schnittstelle und Telefon geschaltet. Interne Modems (PC-<strong>E<strong>in</strong></strong>schubkarte) besitzen<br />

eigene serielle Schnittstellen. Die Datenrate ist durch die Eigenschaften <strong>der</strong> analogen<br />

Telefonleitung beschränkt und liegt zur Zeit höchstens bei 56 kbit.<br />

Modems waren sehr lange Zeit traditionell über die serielle Schnittstelle an Computer<br />

o<strong>der</strong> entsprechende Geräte angeschlossen. Unter L<strong>in</strong>ux erfolgt <strong>der</strong> Zugriff auf diese Schnittstellen<br />

über Device-Dateien vom Type Character-Device im Verzeichnis /dev. Die Schnittstellen<br />

werden dabei durchnummeriert mit ttyS0 bis ttySn. Das <strong>Netzwerk</strong><strong>in</strong>terface ist dabei<br />

nicht mit <strong>der</strong> Device-Datei gleichzusetzen, son<strong>der</strong>n hängt von <strong>der</strong> Art <strong>der</strong> Verb<strong>in</strong>dung ab:<br />

Bei PPP-Verb<strong>in</strong>dungen handelt es sich dann um e<strong>in</strong> Interface mit <strong>der</strong> Bezeichnung ppp0<br />

o<strong>der</strong> folgende, welches mit den Standardwerkzeugen für <strong>Netzwerk</strong><strong>in</strong>terfaces aufgesetzt und<br />

ausgelesen werden kann.<br />

Handelt es sich um e<strong>in</strong> USB-Modem, wird es nicht mehr über e<strong>in</strong>e Device-Datei vom<br />

Typ ttySn, son<strong>der</strong>n über e<strong>in</strong>e entsprechende USB-Device-Datei angesprochen. Auch hier<br />

sieht man den typischen schichtenweisen Aufbau von Protokollen: Die Geräte auf unterster<br />

Ebene können sich unterscheiden, das <strong>Netzwerk</strong>-Interface bleibt weiterh<strong>in</strong> identisch: ppp0<br />

und entsprechende.<br />

4.6 ADSL<br />

Die Grenzen <strong>der</strong> Übertragungskapazität <strong>der</strong> analogen Telefonleitungen s<strong>in</strong>d durch das Nyquistund<br />

das Shannon-Theorem beschrieben. Das Nyquist-Theorem besagt, dass die Schrittgeschw<strong>in</strong>digkeit<br />

bei <strong>der</strong> verzerrungsfreien Übertragung von Impulsen maximal doppelt so groß<br />

se<strong>in</strong> darf wie die Bandbreite des benutzten<br />

Übertragungskanals. Das Shannon-Theorem<br />

zeigt Zusammenhänge zwischen <strong>der</strong> verfügbaren Bandbreite - dem Verhältnis zwischen<br />

Signal- und Rauschpegel - und <strong>der</strong> maximal möglichen Anzahl übertragbarer Bits pro Sekunde.<br />

Beim <strong>der</strong>zeitigen analogen Telefonnetz ist die Bandbreite auf 4kHz beschränkt und<br />

das Signal-/Rauschverhältnis liegt bei 30 bis 35 dB. Daraus resultiert e<strong>in</strong>e Übertragungsrate<br />

von maximal 35 kBit/s (für Modems!)


4.6. ADSL 35<br />

4.6.1 Designüberlegungen<br />

Allerd<strong>in</strong>gs ist das Erreichen <strong>der</strong> maximalen Übertragungsgeschw<strong>in</strong>digkeit von verschiedenen<br />

Faktoren abhängig: Insbeson<strong>der</strong>e die Länge und <strong>der</strong> Querschnitt des Kupferkabels, sowie<br />

die Dämpfung begrenzen die theoretisch möglichen Transferraten. In <strong>der</strong> <strong>Praxis</strong> bedeutet<br />

das für Anwen<strong>der</strong>, <strong>der</strong>en Hausanschluß weit von <strong>der</strong> nächsten Vermittlungsstelle entfernt<br />

liegt, Tranferraten im unteren Bereich.<br />

ADSL basiert technisch auf <strong>der</strong> Trennung des nutzbaren Frequenzspektrums <strong>in</strong> drei<br />

Kanäle. Hierbei f<strong>in</strong>den zwei unterschiedliche Verfahren Verwendung: Frequency Division<br />

Multiplex<strong>in</strong>g o<strong>der</strong> Echo Cancellation (EC). EC spielt jedoch e<strong>in</strong>e eher untergeordnete Rolle.<br />

Grund dafür ist, dass im Gegensatz zu FDM die Kanäle für Up- und Downstream nicht<br />

komplett getrennt, son<strong>der</strong>n überlagert werden. Dies erhöht den technischen Aufwand zur<br />

Signaltrennung wesentlich und verteuert die Endgeräte.<br />

FDM h<strong>in</strong>gegen erzeugt e<strong>in</strong>en schmalbandigen Frequenzbereich, <strong>der</strong> direkt oberhalb <strong>der</strong><br />

Sprachfrequenzen angesiedelt ist. Der breitbandige Downstream-Bereich schließt direkt an<br />

den Upstream-Bereich an. Frequency Division Multiplex<strong>in</strong>g beziehungsweise Echo Cancellation<br />

sorgen lediglich für die Trennung des Frequenzspektrums <strong>in</strong> entsprechende Kanäle,<br />

schaffen also nur die Grundlage für den eigentlichen Datentransfer. Dieser kann wie<strong>der</strong>um<br />

durch verschiedene Übertragungsmethoden realisiert werden. Auch hier läßt die ADSL-<br />

Spezifikation - die <strong>in</strong> Händen von ANSI (American National Standards Institute) und ETSI<br />

(European Telecommunications Standards Institute) liegt - verschiedene Methoden zu. Daher<br />

kommen <strong>der</strong>zeit <strong>in</strong> <strong>der</strong> <strong>Praxis</strong> drei Modulationsverfahren zum <strong>E<strong>in</strong></strong>satz, die zue<strong>in</strong>an<strong>der</strong><br />

<strong>in</strong>kompatibel s<strong>in</strong>d. Ähnlich wie anfangs bei <strong>der</strong> 56 k-Technik kann es also dem Anwen<strong>der</strong><br />

passieren, dass e<strong>in</strong>e Kommunikation trotz gleicher Basistechnologie scheitert. Im folgeden<br />

Kapitel werden verschiedene Übertragungsverfahren beschrieben.<br />

4.6.2 Übertragungsmethoden<br />

4.6.2.1 QAM<br />

Quadrature Amplitude Modulation versetzt die Signale e<strong>in</strong>fach <strong>in</strong> e<strong>in</strong>en höheren Frequenzbereich<br />

versetzt. Dies wird durch Modulation e<strong>in</strong>es Basisbandsignals mit e<strong>in</strong>em Trägersignal<br />

erreicht, wobei die Amplitude moduliert wird.<br />

QAM ist e<strong>in</strong> sogenanntes <strong>E<strong>in</strong></strong>träger-Bandpaßübertragungsverfahren, das e<strong>in</strong> Trägersignal<br />

mit e<strong>in</strong>em Symbolstrom moduliert. Bei diesem Verfahren wird <strong>der</strong> Datenstrom <strong>in</strong><br />

zwei e<strong>in</strong>zelne Ströme mit halber Übertragungsrate aufgespaltet und anschließend mit e<strong>in</strong>em<br />

Trägerpaar aufmoduliert. Bei den orthogonalen Trägern handelt es sich um e<strong>in</strong>e S<strong>in</strong>usund<br />

e<strong>in</strong>e Kos<strong>in</strong>usfunktion.<br />

Der Sen<strong>der</strong> be<strong>in</strong>haltet e<strong>in</strong>en Scrambler (Chiffrierer), e<strong>in</strong>en Leitungskodierer, e<strong>in</strong>en Sendefilter,<br />

e<strong>in</strong>en Modulator und e<strong>in</strong>en D/A- Wandler. Das Signal wird <strong>in</strong> e<strong>in</strong>em Demultiplexer<br />

<strong>in</strong> zwei Teilsignale aufgeteilt. Diese Teilsignale durchlaufen anschließend die Leitungscodierer,<br />

die e<strong>in</strong>e Bit-nach-Symbol-Kodierung ähnlich wie bei <strong>der</strong> 56 kbit-Technologie vornehmen.<br />

Anschließend werden die kodierten Signale im Modulator mit e<strong>in</strong>er def<strong>in</strong>ierten Frequenz<br />

(f0) multipliziert. Das e<strong>in</strong>e Signal wird mit e<strong>in</strong>em Kos<strong>in</strong>us, das an<strong>der</strong>e mit e<strong>in</strong>em S<strong>in</strong>us<br />

moduliert. Anschließend erfolgt die Addition sowie e<strong>in</strong>e D/A-Wandlung. <strong>E<strong>in</strong></strong> Sendefilter<br />

schließlich br<strong>in</strong>gt das Signal auf die Leitung.<br />

Auf <strong>der</strong> Empfängerseite passiert ähnliches: Das Signal wird zunächst <strong>in</strong> e<strong>in</strong>em Empfangsfilter<br />

bandbegrenzt und nach e<strong>in</strong>er A/D-Wandlung mit e<strong>in</strong>em Kos<strong>in</strong>us- beziehungsweise<br />

S<strong>in</strong>usträger gleicher Frequenz wie beim Sen<strong>der</strong> multipliziert. <strong>E<strong>in</strong></strong> nachfolgen<strong>der</strong> Entzerrer<br />

macht eventuell bei <strong>der</strong> Übertragung aufgetretene Verzerrungen des Leiterpaares


36 KAPITEL 4. WAN HARDWARE<br />

rückgängig und filtert die Frequenzanteile (f0) heraus. Danach liegt wie<strong>der</strong> das ursprüngliche<br />

Basisbandsignal vor. Dieses wird für das jeweilige Signal getrennt dekodiert, um die<br />

Teilsignale schließlich <strong>in</strong> e<strong>in</strong>em Multiplexer (zur Serialisierung <strong>der</strong> Signale) zusammenzufassen.<br />

4.6.2.2 CAP<br />

(Carrierless Amplitude/Phase Modulation) Grundlage von CAP ist e<strong>in</strong>e trägerlose Amplituden/<br />

Phasenmodulation. <strong>E<strong>in</strong></strong> e<strong>in</strong>ziges Trägersignal dient als Transportmittel, das selbst<br />

we<strong>der</strong> übertragen wird, noch eigene Informationen be<strong>in</strong>haltet.<br />

Auch CAP zählt zu den <strong>E<strong>in</strong></strong>träger-Bandpaßübertragungsverfahren. Schon die Bezeichnung<br />

des Modulationsverfahren deutet se<strong>in</strong>e Beson<strong>der</strong>heit an: Es wird e<strong>in</strong>e trägerlose Amplituden/<br />

Phasenmodulation durchgeführt, wobei e<strong>in</strong> technischer Kniff die Übertragung <strong>der</strong><br />

Trägerfrequenz verh<strong>in</strong><strong>der</strong>t. Zusätzlicher Unterschied zu QAM: Modulation und Demodulation<br />

erfolgen beim Sen<strong>der</strong> und Empfänger über digitale Filter.<br />

Die Grafik verdeutlicht die Arbeitsweise <strong>der</strong> CAP. An die Stelle <strong>der</strong> orthogonalen Trägerfunktionen<br />

von QAM treten digitale Filter, um die Teilströme zu modulieren. Das zu übertragende<br />

Signal wird e<strong>in</strong>fach durch Addition <strong>der</strong> beiden Filterausgaben gebildet.<br />

Nachdem das Signal e<strong>in</strong>e D/A-Wandlung erfahren hat und den Sendefilter passiert hat,<br />

wird es auf die Leitung gelegt.<br />

4.6.2.3 DTM<br />

(Discrete Multi-Tone Modulation) beschreibt e<strong>in</strong> Verfahren, bei dem mehrere Trägersignale<br />

für die Übermittlung e<strong>in</strong>gesetzt werden. Die übermittelten Daten verteilen sich also auf e<strong>in</strong>e<br />

Vielzahl von Trägern, die alle e<strong>in</strong>e Form <strong>der</strong> Quadrature Amplitude Modulation (QAM)<br />

e<strong>in</strong>setzen. DMT basiert auf <strong>der</strong> Discrete-Fast-Fourier-Transformation, die aus <strong>der</strong> digitalen<br />

Technik stammt.<br />

Im Unterschied zu CAP und QAM zählt Discrete-Multi-Tone-Modulation zu den sogenannten<br />

Mehrträger-Bandpaßübertragungsverfahren. Dieses Verfahren f<strong>in</strong>det bei den Herstellern<br />

<strong>der</strong>zeit breite Unterstützung. Zur Umsetzung wird <strong>der</strong> gesamte Übertragungskanal<br />

<strong>in</strong> mehrere Teilkanäle unterteilt, die - theoretisch - die gleiche Bandbreite aufweisen. Im<br />

e<strong>in</strong>fachsten Fall f<strong>in</strong>det bei jedem dieser Teilkanäle das gleiche Modulationsschema Verwendung.<br />

Die Übertragungsrate ist daher identisch. Allerd<strong>in</strong>gs hat dies e<strong>in</strong>en entscheidenden<br />

Nachteil gegenüber den zuvor beschriebenen Modulationsmethoden: Wenn Teilkanäle <strong>in</strong><br />

hohen Frequenzbereichen liegen, so schlagen sich die schlechten Übertragungseigenschaften<br />

von Kupfer auf den Datentransfer nie<strong>der</strong>. Daher legen die Hersteller die Bitrate des jeweiligen<br />

Teilkanals entsprechend se<strong>in</strong>er Störanfälligkeit fest. Nur so ist e<strong>in</strong>e optimale Nutzung<br />

des Übertragungsmediums Kupfer möglich.<br />

DMT läßt sich im Pr<strong>in</strong>zip als e<strong>in</strong>e Reihe von parallel arbeitenden QAM-Systemen verstehen.<br />

Dabei verwendet jedes QAM-System die zu e<strong>in</strong>em DMT-Teilkanal korrespondierende<br />

Trägerfrequenz. Der Transmitter moduliert Daten, <strong>in</strong>dem er Töne bestimmter Frequenzen<br />

erzeugt, diese zusammenfaßt und schließlich über die Leitung schickt.<br />

4.6.3 Vorteile <strong>der</strong> neuen Technik<br />

Bei h<strong>in</strong>reichend kle<strong>in</strong>er Teilkanalbandbreite ist die Dämpfung für jeden e<strong>in</strong>zelnen Teilkanal<br />

nahezu konstant. <strong>E<strong>in</strong></strong> weiterer Vorzug dieser Technik: Beim Empfänger entfällt <strong>der</strong> Entzerrer.<br />

Es reicht e<strong>in</strong> e<strong>in</strong>facher Kanalverstärker, da <strong>der</strong> <strong>E<strong>in</strong></strong>fluß <strong>der</strong> nichtl<strong>in</strong>earen Phase des


4.7. ATM 37<br />

Kabels auf das übertragene Signal <strong>in</strong> e<strong>in</strong>em Teilkanal vernachlässigbar ist. Damit ist die<br />

Herstellung <strong>der</strong>artiger ADSL-Modems relativ preiswert.<br />

Allerd<strong>in</strong>gs setzt e<strong>in</strong> Mehrträger-Modulationsverfahren Orthogonalität zwischen den verschiedenen<br />

Teilkanälen voraus. Dies kann man beispielsweise durch die Verwendung von<br />

Fast-Fourier-Transformation-Methoden erreichen. Der Aufbau e<strong>in</strong>es DMT-ADSL-Transceivers<br />

entspricht im wesentlichen dem e<strong>in</strong>es CAP-ADSL-Gerätes.<br />

Wie bereits erwähnt, kann die Anzahl <strong>der</strong> Bits, die über e<strong>in</strong>en Teilkanal gesendet werden,<br />

bei DMT variieren. Daraus ergibt sich e<strong>in</strong>e verbesserte Performance, da störanfällige Frequenzen<br />

außen vor bleiben. Die mögliche Übertragungsrate beim Upstream-Kanal erhöht<br />

sich dabei auf 256 kBit/s.<br />

4.6.4 Benutzung unter L<strong>in</strong>ux<br />

Klassischerweise verfügen ADSL-Geräte beim Endnutzer über Ethernet- o<strong>der</strong> ATM-Schnittstellen,<br />

wobei üblicherweise nur erstere benutzt werden (können). ADSL stellt die Grundlage<br />

für das Tunneln von Ethernetframes bereit. Damit e<strong>in</strong>e benutzerbasierte Authentifizierung<br />

erfolgen kann - die Ethernet selbst nicht bereitstellt - wird e<strong>in</strong> spezielles Protokoll, das<br />

PPPoE 2 , e<strong>in</strong>gesetzt.<br />

L<strong>in</strong>ux kommuniziert auf dem unteren, dem Ethernet-Layer, klassischerweise über die<br />

e<strong>in</strong>gebaute Ethernet-<strong>Netzwerk</strong>karte. Diese sollte vom Kernel treiberseitig unterstützt se<strong>in</strong>,<br />

womit e<strong>in</strong> <strong>Netzwerk</strong>-Interface vom Typ eth0 und folgende (für weitere <strong>Netzwerk</strong>karten)<br />

zur Verfügung steht. Darüberh<strong>in</strong>aus wird e<strong>in</strong> Software-Treiber benötigt, <strong>der</strong> das PPPoE-<br />

Protokoll zur Verfügung stellt. Als <strong>Netzwerk</strong>-Interface steht anschließend e<strong>in</strong>es vom Typ<br />

ppp0 (und weitere) zur Verfügung. Damit wird über das broadcastfähige Medium “Ethernet”<br />

e<strong>in</strong>e Punkt-zu-Punkt-Verb<strong>in</strong>dung zwischen zwei Rechnern aufgebaut.<br />

4.7 ATM<br />

Unter <strong>der</strong> Zielsetzung, die Grundlagen für e<strong>in</strong>e weltweit e<strong>in</strong>heitliche Netz-Architektur zu<br />

schaffen, veröffentlichte die ITU 1984 die erste Empfehlung zum Schmalband-ISDN, kurz<br />

ISDN. Nachdem als Implementierungsversuch des Breitband-ISDN (B-ISDN) zu dieser Zeit<br />

auch STM <strong>in</strong> Erwägung gezogen wurde, entschied sich die ITU 1987 für den Asynchronous<br />

Transfer Mode (ATM). Die ersten Empfehlungen hierzu wurden <strong>in</strong> den Jahren 1990/91<br />

veröffentlicht.<br />

Neben <strong>der</strong> ITU kam es im September 1991 zur Gründung e<strong>in</strong>es weiteren Gremiums,<br />

welches sich ausschließlich mit <strong>der</strong> Standardisierung von ATM befaßt, dem ATM-Forum.<br />

Gegründet von CISCO-Systems, NET/adaptive, Northern Telekom und US-Spr<strong>in</strong>t, gehören<br />

dem ATM-Forum <strong>in</strong>zwischen mehrere hun<strong>der</strong>t Mitglie<strong>der</strong> an.<br />

Ziel des ATM-Forums ist e<strong>in</strong> zügiges Voranbr<strong>in</strong>gen des Standards ATM <strong>in</strong> enger Zusammenarbeit<br />

mit <strong>der</strong> ITU und <strong>der</strong> Industrie. Bei <strong>der</strong> Normierung früherer Standards war<br />

es aufgrund des langwierigen Normierungsprozesses oft zu e<strong>in</strong>em Ause<strong>in</strong>an<strong>der</strong>driften von<br />

ITU-Norm und von <strong>der</strong> Industrie entwickelten Quasistandards gekommen.<br />

Wie auch an<strong>der</strong>e Übertragungsverfahren basiert ATM grundsätzlich auf e<strong>in</strong>er Paketübertragungstechnik.<br />

Hierbei s<strong>in</strong>d jedoch folgende wesentliche Än<strong>der</strong>ungen bzw. Ergänzungen<br />

zu bisherigen Paketvermittlungsverfahren festzuhalten:<br />

2 PPP über Ethernet: PPP-Pakete werden als Ethernetframes geschickt, welche selbst wie<strong>der</strong>um über<br />

den ADSL-Layer laufen. Damit erfolgt <strong>in</strong> den beiden unteren Schichten des OSI-Modells nochmals e<strong>in</strong>e<br />

Unterglie<strong>der</strong>ung.


38 KAPITEL 4. WAN HARDWARE<br />

• Feste Paketlänge: ATM nutzt zur Übertragung ausschließlich Pakete mit e<strong>in</strong>er festen<br />

Länge von 53 Bytes. Diese kle<strong>in</strong>ste unteilbare Übertragungse<strong>in</strong>heit wird daher ATM-<br />

Zelle genannt.<br />

• Qualitätsparameter <strong>der</strong> Verb<strong>in</strong>dung: ATM unterstützt QoS. Die hierzu notwendigen<br />

Parameter und Betriebsmittel werden beim Aufbau e<strong>in</strong>er Verb<strong>in</strong>dung festgelegt bzw.<br />

zugewiesen.<br />

• Verb<strong>in</strong>dungsorientierte Betriebsweise: ATM agiert grundsätzlich verb<strong>in</strong>dungsorientiert.<br />

Die Umsetzung verb<strong>in</strong>dungsloser Dienste höherer Schichten ist vorgesehen.<br />

• Verzicht auf e<strong>in</strong>e abschnittsweise Fehlersicherung: Die sehr ger<strong>in</strong>gen Bitfehlerwahrsche<strong>in</strong>lichkeiten<br />

heutiger Lichtwellenleiter ermöglichen den Verzicht auf e<strong>in</strong>e abschnittsweise<br />

Fehlersicherung zugunsten e<strong>in</strong>er höheren Übertragungsrate.<br />

• Verzicht auf e<strong>in</strong>e abschnittsweise Flußsteuerung: Aufgrund <strong>der</strong> hohen Übertragungsund<br />

Verarbeitungsgeschw<strong>in</strong>digkeiten ist e<strong>in</strong>e abschnittsweise Flußsteuerung nicht möglich.<br />

• Außenband-Signalisierung: Wie im Schmalband-ISDN wird die Signalisierung durch<br />

Nutzung separater Signalisierungskanäle vom Nutzdatenstrom entkoppelt.<br />

4.7.1 Die ATM-Zelle<br />

Die ATM-Zelle ist e<strong>in</strong>e starre <strong>E<strong>in</strong></strong>heit von 53 Bytes. Sie besteht aus e<strong>in</strong>en 5Bytes langen<br />

Hea<strong>der</strong> sowie 48 Bytes Nutz<strong>in</strong>formation (Payload). Es wird zwischen zwei Arten von<br />

ATM-Zellen unterschieden, die sich <strong>in</strong> <strong>der</strong> Belegung <strong>der</strong> Bits 5-8 des ersten Hea<strong>der</strong>bytes<br />

unterscheiden:<br />

0 1 2 3 4 5 6 7 8 Bit<br />

Flow Control (GFC)<br />

Channel Identifier<br />

Channel Identifier (VCI)<br />

Path Identifier (VPI)<br />

Path Identifier PT CLP<br />

HEADER CHECKSUM (CRC)<br />

Hea<strong>der</strong> e<strong>in</strong>er User Network Interface Zelle<br />

Abbildung 4.1: User-Network-Interface Zelle<br />

UNI-Zellen Die User-Network-Interface-Zellen dienen zur Kommunikation zwischen<br />

Nutzer- und Benutzer-<strong>Netzwerk</strong>-Schnittstelle (User-Network-Interface, UNI). Der Hea<strong>der</strong><br />

<strong>der</strong> UNI-Zelle unterteilt sich <strong>in</strong> sechs Elemente, die <strong>in</strong> <strong>der</strong> Abbildung dargestellt s<strong>in</strong>d. Das<br />

Feld GFC (Generic Flow Control) dient <strong>der</strong> direkten Zugriffssteuerung auf e<strong>in</strong> Übertragungsmedium.<br />

Es ist daher nur im Bereich lokaler ATM-Netze von Relevanz und wird von ATM-<br />

Vermittlungsstellen und Cross-Connects am NNI-Interface überschrieben. <strong>E<strong>in</strong></strong>e Standardisierung<br />

zur Nutzung des GFC Feldes steht bislang aus.


4.7. ATM 39<br />

Zur Adressierung stehen die Fel<strong>der</strong> VPI (Virtual Path Identifier) und VCI (Virtual<br />

Channel Identifier) zur Verfügung. Sie werden im Abschnitt weiter betrachtet.<br />

Anhand des Feldes PT (Payload Type) wird zwischen Benutzerzellen und OAM-Zellen<br />

(Operation and Ma<strong>in</strong>tenance) unterschieden. Der Standardwert ist 000. Die Funktion <strong>der</strong><br />

OAM-Zellen liegt <strong>in</strong> <strong>der</strong> Überwachung des Systems. Sie ermöglichen die Aufdeckung und<br />

Behebung von Fehlfunktionen auf allen ATM-Ebenen.<br />

PT-Feld Bedeutung<br />

000 Benutzerzelle, ke<strong>in</strong>e Überlast festgestellt, SDU-Type=0<br />

001 Benutzerzelle, ke<strong>in</strong>e Überlast festgestellt, SDU-Type=1<br />

010 Benutzerzelle, Überlast festgestellt, SDU-Type=0<br />

011 Benutzerzelle, Überlast festgestellt, SDU-Type=1<br />

100 Segment-OAM-F5-Zelle<br />

101 End-to-End-OAM-F5-Zelle<br />

110 Reserviert für zukünftiges Lastmanagement<br />

111 Reserviert für zukünftigen Gebrauch<br />

Tabelle 4.4: Mögliche Nutzlasttypen von ATM<br />

Das Feld CLP (Cell Loss Priority) def<strong>in</strong>iert die Priorität e<strong>in</strong>er Zelle. Bei auftreten<strong>der</strong><br />

Überlast an <strong>Netzwerk</strong>schnittstellen werden Zellen mit niedriger Priorität (CLP=1) zuerst<br />

verworfen. <strong>E<strong>in</strong></strong>e Priorisierung bzw. Markierung von Zellen erfolgt, wenn die sie erzeugende<br />

Anwendung Resourcen <strong>in</strong> höherem Maße belegt, als ihr zugeordnet wurde. Verworfen werden<br />

also erst die Zellen, die außerhalb ihrer QoS-Parameter generiert wurden, bzw. Zellen <strong>der</strong>en<br />

Priorität bereits bei ihrer Generierung auf 1 gesetzt wurde.<br />

Die letzten 8 Bits werden durch das Feld CRC (Cyclic Redundancy Checksum) belegt.<br />

Bei <strong>der</strong> Bildung <strong>der</strong> Prüfsumme werden dabei nur die 32 Bits des Zellhea<strong>der</strong>s (ohne CRC-<br />

Feld) berücksichtigt. Die Bildung e<strong>in</strong>er Hea<strong>der</strong>prüfsumme ist s<strong>in</strong>nvoll, da sich die Informationen<br />

des Hea<strong>der</strong>s an jedem NNI, den die Zelle passiert, än<strong>der</strong>n kann, die Nutz<strong>in</strong>formation<br />

jedoch erhalten bleibt.<br />

NNI-Zellen Die Network-Node-Interface-Zellen werden entsprechend zur Kommunikation<br />

zwischen den e<strong>in</strong>zelnen Knoten des ATM-<strong>Netzwerk</strong>s genutzt (Network-Node-Interface,<br />

NNI).<br />

0 1 2 3 4 5 6 7 8 Bit<br />

Channel Identifier (VCI)<br />

Channel Identifier Path Identifier<br />

Path Identifier (VPI)<br />

Path Identifier PT CLP<br />

HEADER CHECKSUM (CRC)<br />

Hea<strong>der</strong> e<strong>in</strong>er Network Node Interface Zelle<br />

Abbildung 4.2: Network-Node-Interface Zelle


40 KAPITEL 4. WAN HARDWARE<br />

Im Vergleich mit dem UNI-Hea<strong>der</strong> ist das VPI-Feld des NNI-Hea<strong>der</strong>s um 4 Bit verlängert.<br />

Dies trägt <strong>der</strong> pfadorientierten Wegelenkung (Rout<strong>in</strong>g) <strong>in</strong> ATM-Weitverkehrsnetzen Rechnung,<br />

sowie <strong>der</strong> Tatsache, daß hier e<strong>in</strong>e direkte Zugriffskontrolle auf das Übertragungsmedium<br />

nicht benötigt wird.<br />

4.8 FDDI<br />

Für Backboneverb<strong>in</strong>dungen <strong>in</strong> grossen LAN’s kam bis zum Ende <strong>der</strong> 90er Jahre üblicherweise<br />

FDDI (Fiber Distributed Data Interface) zum <strong>E<strong>in</strong></strong>satz. FDDI erlaubt maximale Kabellängen<br />

von bis zu 200km, die maximale Geschw<strong>in</strong>digkeit von 100 Mbit ist jedoch <strong>der</strong><br />

Grund, weshalb FDDI nicht mehr e<strong>in</strong>gesetzt wird.<br />

FDDI verwendet e<strong>in</strong>en an<strong>der</strong>en Ansatz bei <strong>der</strong> Datenübertragung, bei dem e<strong>in</strong>e Reihe<br />

sogenannter Tokens ausgesandt werden. <strong>E<strong>in</strong></strong>e Station darf nur dann e<strong>in</strong> Paket übertragen,<br />

wenn sie e<strong>in</strong>es dieser Tokens auffangen konnte. Somit entfällt wie bei TokenR<strong>in</strong>g das Problem<br />

<strong>der</strong> Paketkollisionen.<br />

4.9 Mobilfunknetze<br />

Das Interesse an “Internet überall” hat mit <strong>der</strong> Vielzahl mobiler Endgeräte deutlich zugenommen.<br />

Laptops und PDAs s<strong>in</strong>d ke<strong>in</strong>e Seltenheit mehr, son<strong>der</strong>n <strong>in</strong>zwischen die Grundausstattung<br />

<strong>der</strong> verschiedenen Datennomaden. Die Nahfunktechniken nach dem 802.11 Standard<br />

beherrschen dabei das Feld. Daher s<strong>in</strong>d die meisten Geräte dafür schon werksseitig<br />

mit e<strong>in</strong>em entsprechenden <strong>Netzwerk</strong>adapter ausgestattet. Diese schöne neue Welt dieser<br />

Netze weist jedoch noch gravierende Löcher <strong>in</strong> <strong>der</strong> Abdeckung auf, so dass schnell nicht<br />

mehr von e<strong>in</strong>em wirklich mobilen Internetzugang gesprochen werden kann. Es gibt zwar<br />

e<strong>in</strong>e wachsende Zahl von Hotspots, lei<strong>der</strong> jedoch auch e<strong>in</strong>e wachsende Anzahl durchaus<br />

unterschiedlicher Zugangsproce<strong>der</strong>es. Wenn auch an vielen Stellen noch offene WLANs zu<br />

f<strong>in</strong>den s<strong>in</strong>d, so ist die Benutzung e<strong>in</strong>es solchen Zugangs ohne <strong>E<strong>in</strong></strong>verständnis des Betreibers<br />

nicht unbed<strong>in</strong>gt legal.<br />

Obwohl schon seit e<strong>in</strong>igen Jahren am Start erhielten die Datendienste über die Mobilfunknetze<br />

erst mit <strong>der</strong> <strong>E<strong>in</strong></strong>führung von UMTS wie<strong>der</strong> größere Aufmerksamkeit. Mobilfunknetze<br />

decken zu fast 100% das Land ab und erlauben damit fast überall und je<strong>der</strong>zeit onl<strong>in</strong>e zu<br />

gehen.<br />

4.9.1 GSM, HSCSD, GPRS und UMTS<br />

Es gibt <strong>in</strong>zwischen e<strong>in</strong>e ganze Reihe von Methoden Daten <strong>in</strong> Mobilfunknetzen zu transportieren.<br />

GPRS (General Packet Radio Service ist sicherlich das <strong>in</strong>zwischen verbreiteste<br />

Verfahren und wird von allen Mobilfunkbetreibern fast überall angeboten. Es arbeitet mit<br />

zeitunabhängigen Volumentarifen. GPRS kommt nicht nur beim Internet-Zugriff via PC<br />

zum <strong>E<strong>in</strong></strong>satz, son<strong>der</strong>n versendet auch MMS (Multimedia Message und wird zum Transport<br />

von WAP-Inhalten e<strong>in</strong>gesetzt.<br />

Darüberh<strong>in</strong>aus gibt es HSCSD. Dieses belegt für die Onl<strong>in</strong>e-Zeit e<strong>in</strong>en GSM-Mobilfunkkanal<br />

und wird daher zeitbezogen abgerechnet. HSCSD ist bei weitem nicht so verbreitet<br />

wie <strong>in</strong>zwischen GPRS. Die Zukunft liegt sicherlich erstmal <strong>in</strong> UMTS. Wenn auch die Anbieter<br />

immer noch nach e<strong>in</strong>er ”Killerapplikation” suchen, um von den Kunden das Geld<br />

für die Lizenz wie<strong>der</strong> e<strong>in</strong>zusammeln, so ist jetzt schon für den Internet-Zugriff e<strong>in</strong>e ernstzunehmende<br />

Alternative. Die erreichbaren Geschw<strong>in</strong>digkeiten, so e<strong>in</strong>e Zelle verfügbar und


4.10. NETZWERKADAPTER FÜR MOBILFUNKNETZE 41<br />

nicht ausgelastet ist, liegen bei 384 kbit/s. Das ist deutlich mehr als die ca. 55 kbit/s mittels<br />

GPRS o<strong>der</strong> HSCSD. Da UMTS bei weitem nicht die Abdeckung von GSM erreicht,<br />

ist e<strong>in</strong> Fallback auf GPRS vorgesehen. Daraus resultieren oft identische Volumentarife für<br />

GPRS und UMTS. Die entsprechenden <strong>Netzwerk</strong>adapter für UMTS beherrschen daher beide<br />

Übertragungsverfahren.<br />

4.10 <strong>Netzwerk</strong>adapter für Mobilfunknetze<br />

Wie für jedes an<strong>der</strong>e <strong>Netzwerk</strong> auch, benötigt man e<strong>in</strong>en passenden <strong>Netzwerk</strong>adapter. Der<br />

Adapter für Mobilfunknetze kommt üblicherweise als PCMCIA- o<strong>der</strong> Cardbus-Karte daher.<br />

Alle neueren Mobiltelefone br<strong>in</strong>gen GPRS-Unterstützung mit und kommen ebenfalls als<br />

Zugangshardware <strong>in</strong> Frage. Vielfach wird dieser Adapter auch als ”Modem” bezeichnet,<br />

da es sich um e<strong>in</strong>en <strong>Netzwerk</strong>zugang per Telefonnetz handelt. Das Mobilfunknetz arbeitet<br />

jedoch von sich aus schon digital. Deshalb ist e<strong>in</strong>e (De)Modulation gar nicht mehr nötig.<br />

Trotzdem f<strong>in</strong>det man e<strong>in</strong>ige Anleihen aus <strong>der</strong> Modem-Welt wie<strong>der</strong>.<br />

Die meisten Mobiltelefone unterstützen GPRS. <strong>E<strong>in</strong></strong>e gewisse Schwierigkeit stellt die<br />

Verb<strong>in</strong>dung zwischen Rechner und Handy dar. Hier gibt es je nach Ausstattung <strong>der</strong> Geräte<br />

drei Möglichkeiten. Die Verb<strong>in</strong>dung mittels Bluetooth ist sicherlich die mo<strong>der</strong>nste Variante.<br />

Hierzu müssen selbstredend beide Seiten mit dieser Art des Drahtlosfunks ausgestattet se<strong>in</strong>.<br />

Das Fehlen an Laptop o<strong>der</strong> PC ist ke<strong>in</strong> Problem, da man Bluetooth per USB-Dongle o<strong>der</strong><br />

PCMCIA-Steckkarte nachrüsten kann. Die drahtlose Verb<strong>in</strong>dung zwischen den Geräten hat<br />

den Vorteil, dass sich das Telefon für optimalen Empfang leicht positionieren lässt. Jedoch<br />

sorgt Bluetooth gerade auf <strong>der</strong> Seite des Mobiltelefons dafür, dass sich dessen Akkulaufzeit<br />

oft deutlich reduziert.<br />

Ebenfalls sollte man die Datensicherheit im Blick. Unter Umständen ist e<strong>in</strong> Mobiltelefon<br />

<strong>in</strong> e<strong>in</strong>em weiten Umkreis sichtbar. Wenn dann auch noch die Firmware e<strong>in</strong>ige gravierende<br />

Sicherheitslücken aufweist, eröffnet man an<strong>der</strong>en vielleicht tiefere <strong>E<strong>in</strong></strong>blicke <strong>in</strong> das Telefon<br />

als e<strong>in</strong>em lieb ist.<br />

Unter Sicherheitsaspekten deutlich unproblematischer ist e<strong>in</strong>e Verb<strong>in</strong>dung mit optischem<br />

Drahtlos-Funk. Viele Mobiltelefone, e<strong>in</strong>e große Zahl von tragbaren Computern und<br />

PDAs haben Infrarot e<strong>in</strong>gebaut. Die Reichweite von IrDA ist mit üblicherweise e<strong>in</strong>em halben<br />

Meter beschränkt. <strong>E<strong>in</strong></strong> weiterer Vorteil: Steckt das Mobiltelefon irgendwo <strong>in</strong> <strong>der</strong> Tasche, ist<br />

es für an<strong>der</strong>e per IrDA nicht mehr sichtbar. Die Ausrichtung <strong>der</strong> beiden kommunizierenden<br />

Geräte zue<strong>in</strong>an<strong>der</strong> ist nun entscheidend: Viel mehr als 30 Grad von <strong>der</strong> Hauptstrahlrichtung<br />

sollte <strong>der</strong> W<strong>in</strong>kel nicht betragen.<br />

Unter Energie- und Sicherheitsgesichtspunkten schneidet sicherlich die drahtgebundene<br />

Verb<strong>in</strong>dung zwischen Mobiltelefon und Rechner ab. Ältere Mobiltelefone beherrschen nur<br />

die serielle, neuere Geräte auch USB-Verb<strong>in</strong>dungen. Die entsprechenden PC-Gegenstücke<br />

s<strong>in</strong>d eigentlich immer vorhanden. Lei<strong>der</strong> gibt es jedoch kaum Telefone bei denen das Kabel<br />

schon beiliegt.


42 KAPITEL 4. WAN HARDWARE


Kapitel 5<br />

TCP-IP<br />

5.1 Schaffung von ”Inter-Nets”<br />

In den bisherigen Abschnitten erfolgte die <strong>E<strong>in</strong></strong>führung <strong>in</strong> das Thema <strong>Netzwerk</strong>e, <strong>in</strong> die Konzepte<br />

<strong>der</strong> paketorientierten Datenübertragung, <strong>der</strong> Signalisierung und <strong>der</strong> Kodierung. Als<br />

Protokolle <strong>der</strong> Hardwareebene wurden Ethernet und sehr kurz aus historischen Gründen<br />

TokenR<strong>in</strong>g besprochen. Diese <strong>Netzwerk</strong>hardware wird überlicherweise für Local Area Networks<br />

verwendet, da die überbrückbaren Entfernungen nur wenige e<strong>in</strong>hun<strong>der</strong>t Meter und<br />

mit optischen Medien nur wenige Kilometer betragen.<br />

ATM over<br />

ADSL<br />

Router n<br />

TokenR<strong>in</strong>g<br />

172.16.1.0/24<br />

Internet<br />

Ethernet<br />

1000Base-X<br />

ATM over<br />

ADSL<br />

#1<br />

192.168.1.0/24<br />

192.168.2.0/22<br />

#3<br />

Router 1<br />

#2<br />

Ethernet 803.11a<br />

10Base-T<br />

#2<br />

#1<br />

Router 2<br />

Ethernet<br />

100Base-T<br />

Abbildung 5.1: IP als Universalservice<br />

192.168.6.0/24<br />

#1<br />

FDDI Router 3<br />

192.168.10.0/24<br />

Für Weitverkehrsnetze greift man auf überall verbreitete Telefonnetze <strong>in</strong> ihrer analogen<br />

o<strong>der</strong> digitalen Ausprägung zurück. Dann kommt entwe<strong>der</strong> e<strong>in</strong> Modem o<strong>der</strong> e<strong>in</strong> ISDN-<br />

Adapter als <strong>Netzwerk</strong>anschluss zum <strong>E<strong>in</strong></strong>satz. Auf diese Weise lassen sich verschiedene Hardwareausprägungen<br />

für die Paketübertragung nutzen. Jedoch besteht dadurch auch e<strong>in</strong> Problem:<br />

Ethernet ist zwar für fast alle Medientypen implementiert 1 aber z.B. nicht für Zwei-<br />

Draht-Verb<strong>in</strong>dungen für weite Entfernungen. Die WAN-Techniken, wie z.B. ISDN und analoges<br />

Modem eignen sich kaum für die Vernetzung vieler Masch<strong>in</strong>en bzw. Komponenten.<br />

ISDN und Modem können weite Entfernungen realisieren, bieten aber nur Punkt-zu-<br />

Punkt-Verb<strong>in</strong>dungen zwischen jeweils zwei dedizierten Interfaces 2 . Verschiedene physikali-<br />

1 Es existieren jeweils Standards für Koaxialkabel (10Base5 ThickEthernet/Yellow-Cable bzw. 10Base2<br />

für Cheapternet), TwistedPair-Kabel (4bzw. 8adrig), Lichtwellenleiter, Funkwellen im 2.4 GHz-Bereich<br />

2 In den typischen <strong>E<strong>in</strong></strong>wahlsituationen von Internet-Provi<strong>der</strong>n handelt es sich dabei um spezielle Hardware,<br />

welche e<strong>in</strong>e große Anzahl von <strong>Netzwerk</strong><strong>in</strong>terfaces <strong>in</strong> e<strong>in</strong>er Masch<strong>in</strong>e vere<strong>in</strong>t.<br />

43<br />

#2


44 KAPITEL 5. TCP-IP<br />

sche Netze s<strong>in</strong>d unumgänglich, da ke<strong>in</strong>e Technologie sich für alle <strong>E<strong>in</strong></strong>satzszenarios eignet.<br />

Weiterh<strong>in</strong> s<strong>in</strong>d Trennungen an bestimmten ”Grenzen”, wie abgeschlossene Firmen- o<strong>der</strong><br />

Abteilungsnetze durchaus gewünscht und aus Sicherheitsgründen notwendig.<br />

Deshalb wird e<strong>in</strong> ”Universaldienst” geschaffen, welcher Verb<strong>in</strong>dungen zwischen beliebigen<br />

Rechnern erlaubt. Dabei soll die Kommunikation über unterschiedliche Entfernungen,<br />

durch unterschiedliche Netze (LAN o<strong>der</strong> WAN) und über verschiedene Medien realisierbar<br />

se<strong>in</strong>. Virtuell soll jede Verb<strong>in</strong>dung für die kommunizierenden Masch<strong>in</strong>en ”gleich” aussehen,<br />

d.h. es sollen ke<strong>in</strong>e an<strong>der</strong>en Applikationen o<strong>der</strong> Protokolle <strong>in</strong> Abhängigkeit davon verwendet<br />

werden müssen, ob sich die Masch<strong>in</strong>en im gleichen LAN bef<strong>in</strong>den o<strong>der</strong> über Kont<strong>in</strong>ente<br />

h<strong>in</strong>weg Daten austauschen.<br />

Dabei soll ke<strong>in</strong>e Entscheidung für e<strong>in</strong>e bestimmte Technologie 3 getroffen werden, son<strong>der</strong>n<br />

e<strong>in</strong> Universalnetz über mehrere heterogene Netze h<strong>in</strong>weg geschaffen werden. <strong>E<strong>in</strong></strong> solcher<br />

Universaldienst wird als ”Inter-Net” bezeichnet.<br />

5.2 Überblick über TCP/IP<br />

Im vorhergehenden Abschnitt wurde das OSI-Referenzmodell vorgestellt. In den nun folgenden<br />

Abschnitten soll nun das Referenzmodell für die TCP/IP-Architektur vorgestellt<br />

werden. Das TCP/IP-Referenzmodell - benannt nach den beiden primären Protokollen<br />

TCP und IP <strong>der</strong> Netzarchitektur beruht auf den Vorschlägen, die bei <strong>der</strong> Fortentwicklung<br />

des ARPANETs gemacht wurden. Das TCP/IP-Modell ist zeitlich vor dem OSI-<br />

Referenzmodell entstanden, deshalb s<strong>in</strong>d auch die Erfahrungen des TCP/IP-Modells mit <strong>in</strong><br />

die OSI-Standardisierung e<strong>in</strong>geflossen. Als Ziele <strong>der</strong> Architektur wurden bei <strong>der</strong> Entwicklung<br />

def<strong>in</strong>iert:<br />

• Unabhängigkeit von <strong>der</strong> Architektur <strong>der</strong> Hostrechner.<br />

• Universelle Verb<strong>in</strong>dungsmöglichkeiten im gesamten <strong>Netzwerk</strong>.<br />

• Ende-zu-Ende-Quittungen.<br />

• Standardisierte Anwendungsprotokolle.<br />

• Unabhängigkeit von <strong>der</strong> verwendeten <strong>Netzwerk</strong>-Technologie.<br />

Das TCP/IP-Referenzmodell besteht im Gegensatz zum OSI-Modell aus nur vier Schichten:<br />

Application Layer, Transport Layer, Internet Layer, Network Layer.<br />

Applikationssschicht (application layer): Die Applikationsschicht (auch Verarbeitungsschicht<br />

genannt) umfaßt alle höherschichtigen Protokolle des TCP/IP-Modells. Zu den ersten<br />

Protokollen <strong>der</strong> Verarbeitungsschicht zählen SSH (für virtuelle Term<strong>in</strong>als), FTP (Dateitransfer),<br />

SMTP (zur Übertragung von E-Mail), DNS (Doma<strong>in</strong> Name Service), HTTP<br />

(Hypertext Transfer Protocol) etc.<br />

Transportschicht (transport layer): Wie im OSI-Modell ermöglicht die Transportschicht<br />

die Kommunikation zwischen den Quell- und Zielhosts. Im TCP/IP-Referenzmodell wurden<br />

auf dieser Schicht zwei Ende-zu-Ende-Protokolle def<strong>in</strong>iert: das Transmission Control<br />

Protocol (TCP) und das User Datagram Protocol (UDP). TCP ist e<strong>in</strong> zuverlässiges verb<strong>in</strong>dungsorientiertes<br />

Protokoll, durch das e<strong>in</strong> Bytestrom fehlerfrei zu e<strong>in</strong>em an<strong>der</strong>en Rechner im<br />

3 <strong>Netzwerk</strong>hardware mit bestimmten darauf laufenden hardwarenahen Protokollen


5.2.<br />

ÜBERBLICK ÜBER TCP/IP 45<br />

Internet übermittelt werden kann. UDP ist e<strong>in</strong> unzuverlässiges verb<strong>in</strong>dungsloses Protokoll,<br />

das vorwiegend für Abfragen und Anwendungen <strong>in</strong> Client/Server- Umgebungen verwendet<br />

wird, <strong>in</strong> denen es <strong>in</strong> erster L<strong>in</strong>ie nicht um e<strong>in</strong>e sehr genaue, son<strong>der</strong>n schnelle Datenübermittlung<br />

geht (z.B. Übertragung von Sprache und Bildsignalen). Diese Protokolle werden<br />

gleich noch ausführlicher behandelt.<br />

Internetschicht (<strong>in</strong>ternet layer): Die Internetschicht im TCP/IP-Modell def<strong>in</strong>iert nur<br />

e<strong>in</strong> Protokoll namens IP (Internet Protocol), das alle am <strong>Netzwerk</strong> beteiligten Rechner<br />

verstehen können. Die Internetschicht hat die Aufgabe IP-Pakete richtig zuzustellen. Dabei<br />

spielt das Rout<strong>in</strong>g <strong>der</strong> Pakete e<strong>in</strong>e wichtige Rolle. Das Internet Control Message Protocol<br />

(ICMP) ist fester Bestandteil je<strong>der</strong> IP-Implementierung und dient zur Übertragung von<br />

Diagnose- und Fehler<strong>in</strong>formationen für das Internet Protocol.<br />

<strong>Netzwerk</strong>schicht (network layer): Unterhalb <strong>der</strong> Internetschicht bef<strong>in</strong>det sich im<br />

TCP/IP-Modell e<strong>in</strong>e große Def<strong>in</strong>itionslücke. Das Referenzmodell sagt auf dieser Ebene nicht<br />

viel darüber aus, was hier passieren soll. Festgelegt ist lediglich, daß zur Übermittlung von<br />

IP-Paketen e<strong>in</strong> Host über e<strong>in</strong> bestimmtes Protokoll an e<strong>in</strong> Netz angeschlossen werden muß.<br />

Dieses Protokoll ist im TCP/IP-Modell nicht weiter def<strong>in</strong>iert und weicht von Netz zu Netz<br />

und Host zu Host ab. Das TCP/IP-Modell macht an dieser Stelle vielmehr Gebrauch von<br />

bereits vorhandenen Protokollen, wie z.B. Ethernet (IEEE 802.3), PPP, etc.<br />

SSH FTP HTTP DNS DHCP<br />

Transmission<br />

Control P. (TCP)<br />

Internet Protocol (IP)<br />

ICMP / ARP<br />

User Datagram<br />

Protocol (UDP)<br />

Ethernet ATM FDDI Modem ISDN<br />

Abbildung 5.2: Der TCP/IP-Protokoll-Stapel<br />

Application<br />

Layer<br />

Transport<br />

Layer<br />

Internet<br />

Layer<br />

Network<br />

Layer<br />

Um Datenpakete im großen Umfang und möglichst schnell an verschiedenste Empfänger<br />

schicken zu können, muß das Format <strong>der</strong> Adressen beson<strong>der</strong>s gut von Computern o<strong>der</strong> speziellen<br />

elektronischen Schaltkreisen zu verarbeiten se<strong>in</strong>. Daher steckt das Konzept zur Verarbeitung<br />

<strong>der</strong> IP-Adressen im B<strong>in</strong>ärformat (denn Host- und Domänennamen zu analysieren<br />

kostete zuviel Zeit!) Masch<strong>in</strong>en-<strong>in</strong>tern entsprechen dem üblichen, dezimalen Format <strong>der</strong> IP-<br />

Adressen (a.b.c.d) pro Zahl 8-bits. IP-Adressen s<strong>in</strong>d also <strong>in</strong>sgesamt 32-bit lang, wobei die<br />

Unterteilung <strong>in</strong> 8 bit Blöcke nur <strong>der</strong> Lesbarkeit halber e<strong>in</strong>geführt wurde. Dieses Format wird<br />

auch Dotted Quad Notation genannt:<br />

192.168.22.3 entspricht 11000000.10101000.00010110.00000011<br />

In dieser simplen Form kann die Adresse von sehr primitiven und enorm schnellen Logik-<br />

Bauste<strong>in</strong>en analysiert werden und sehr schnell mit Netzmasken und Broadcastadressen zum<br />

Rout<strong>in</strong>g berechnet werden.


46 KAPITEL 5. TCP-IP<br />

5.3 Design<br />

Für das Verständnis und die Behandlung des Internet-Protokolls s<strong>in</strong>d e<strong>in</strong>ige Vere<strong>in</strong>barungen<br />

s<strong>in</strong>nvoll: <strong>E<strong>in</strong></strong> Host(-rechner): Me<strong>in</strong>t e<strong>in</strong> beliebiges Computersystem, das an e<strong>in</strong> Internet<br />

angeschlossen ist und auf dem Anwendungen laufen. Dabei spielt die Rechnerhardware,<br />

Typ und Geschw<strong>in</strong>digkeit des <strong>Netzwerk</strong>es ke<strong>in</strong>e Rolle. Alle Hosts können ungeachtet <strong>der</strong><br />

Hardwareunterschiede (und Betriebssysteme) mite<strong>in</strong>an<strong>der</strong> kommunizieren. <strong>E<strong>in</strong></strong> Router ist<br />

e<strong>in</strong> Host mit mehrern Interfaces.<br />

<strong>E<strong>in</strong></strong>e (global) e<strong>in</strong>heitliche Adressierung e<strong>in</strong>es Hosts muss sichergestellt se<strong>in</strong>, damit e<strong>in</strong><br />

übergreifendes Inter-Net s<strong>in</strong>nvoll funktionieren kann. Das Internet-Protokoll (IP) ist Abstraktion<br />

<strong>der</strong> Konzepte se<strong>in</strong>er Entwickler. Es ist unabhängig von e<strong>in</strong>er speziellen physikalischen<br />

Hardware angelegt. Die Implementierung f<strong>in</strong>det ausschliesslich <strong>in</strong> Software statt. Damit<br />

kann es Bestandteil des Betriebssystems e<strong>in</strong>es Rechners werden o<strong>der</strong> als eigenständige<br />

Applikation, die unter e<strong>in</strong>em Betriebssystem ausgeführt wird, laufen. Das Adressierungsschema<br />

bildet dabei die zentrale Komponente <strong>der</strong> Abstraktion. Zum e<strong>in</strong>en können die physikalischen<br />

Adressen nicht ausreichen, 4 zum an<strong>der</strong>en können sie sehr unterschiedliche Schemata<br />

5 verwenden.<br />

Die Zustellung von IP-Paketen erfolgt analog zur Zustellung von Frames auf Hardwareebene.<br />

Die Adressierung <strong>der</strong> virtuellen Ebene läßt sich gut mit <strong>der</strong> physikalischen Adressierung<br />

vergleichen. Der Host trägt die Zieladresse <strong>in</strong> den Hea<strong>der</strong> 6 des zu verschickenden<br />

Datenpaketes e<strong>in</strong> und vermerkt se<strong>in</strong>e eigene Adresse als Absen<strong>der</strong>kennung. Das Zielsystem,<br />

welches durchaus e<strong>in</strong> Zwischenziel <strong>in</strong> Form e<strong>in</strong>es Routers auf dem Weg e<strong>in</strong>es Datenpaketes<br />

se<strong>in</strong> kann, überprüft die Adresse auf Übere<strong>in</strong>stimmung mit <strong>der</strong> eigenen. Anhand dieser wird<br />

das Paket behandelt: Im Falle e<strong>in</strong>es Routers erfolgt die Weiterleitung <strong>in</strong> e<strong>in</strong> angeschlossenes<br />

Netz, soweit e<strong>in</strong> geeignetes vorhanden ist. Erreicht das Paket den adressierten Host, kann<br />

dieser die Absendeadresse als Ziel für das Verschicken e<strong>in</strong>er Antwort verwenden. An je<strong>der</strong><br />

Stelle auf dem Weg e<strong>in</strong>es Paketes ist die entsprechende Protokollsoftware mit <strong>der</strong> Zustellung<br />

beschäftigt.<br />

5.4 Internet Protocol (IP)<br />

<strong>Netzwerk</strong>e sollen unabhängig von <strong>der</strong> verwendeten Hardware e<strong>in</strong> e<strong>in</strong>heitliches Adressschema<br />

verwenden. Die Beschränkung auf Ethernet verbietet sich alle<strong>in</strong> schon wegen <strong>der</strong> begrenzten<br />

Kabellängen im LAN. Der Hauptvorteil von IP besteht also dar<strong>in</strong>, daß es physikalisch verschiedene<br />

<strong>Netzwerk</strong>e zu e<strong>in</strong>em sche<strong>in</strong>bar homogenen <strong>Netzwerk</strong> zusammenfaßt. Die Zusammenarbeit<br />

verschiedener Netze wird als ”Internetwork<strong>in</strong>g” bezeichnet, die Kommunikation<br />

verläuft über das Internet-Protokoll (IP).<br />

Es gibt nicht DAS Internet, son<strong>der</strong>n das Internet ist e<strong>in</strong>e Sammlung von Teilnetzen,<br />

die mite<strong>in</strong>an<strong>der</strong> verbunden s<strong>in</strong>d. Es gibt ke<strong>in</strong>e echte Struktur des Netzes, son<strong>der</strong>n mehrere<br />

größere Backbones, die quasi das Rückgrat (wie <strong>der</strong> Name Backbone ja schon sagt)<br />

des Internet bilden. Die Backbones werden aus Leitungen mit sehr hoher Bandbreite und<br />

schnellen Routern gebildet. An die Backbones s<strong>in</strong>d wie<strong>der</strong>um größere regionale Netze an-<br />

4 48<br />

Obwohl das MAC-Adressierungsschema des Ethernets z.B. mit 2 mehr Adressen umfaßt als das<br />

Internet-Protokoll <strong>der</strong> Version 4. Hier besteht jedoch die Schwierigkeit, dass die Adressen fest mit e<strong>in</strong>em<br />

<strong>Netzwerk</strong>adapter verknüpft s<strong>in</strong>d, d.h. e<strong>in</strong>e beliebige Abstraktion nicht möglich ist.<br />

5<br />

Die Zuordnung von Modem- o<strong>der</strong> ISDN-Leitungen könnte z.B. anhand <strong>der</strong> Telefonnummer erfolgen,<br />

TokenR<strong>in</strong>g und Ethernet verwenden MAC-Adressen.<br />

6<br />

speziell gekennzeichneter Kopf e<strong>in</strong>es Datenpaketes, welcher ke<strong>in</strong>e Nutzdaten enhält, son<strong>der</strong>n Zustellver-<br />

merke speichert


5.4. INTERNET PROTOCOL (IP) 47<br />

geschlossen, die LANs von Universitäten, Behörden, Unternehmen und Service-Provi<strong>der</strong>n<br />

verb<strong>in</strong>den.<br />

IP stellt die Basisdienste für die Übermittlung von Daten <strong>in</strong> TCP/IP-Netzen bereit.<br />

Hauptaufgaben des Internet Protokolls s<strong>in</strong>d die Adressierung von Hosts und das Fragmentieren<br />

von Paketen. Diese Pakete werden von IP nach bestem Bemühen (”best effort”) von<br />

<strong>der</strong> Quelle zum Ziel beför<strong>der</strong>t, unabhängig davon, ob sich die Hosts im gleichen Netz bef<strong>in</strong>den<br />

o<strong>der</strong> an<strong>der</strong>e Netze dazwischen liegen. Garantiert ist die Zustellung allerd<strong>in</strong>gs nicht.<br />

Das Internet Protokoll enthält ke<strong>in</strong>e Funktionen für die Ende-zu-Ende-Sicherung o<strong>der</strong> für<br />

die Flußkontrolle.<br />

Das Internet-Protokoll muss e<strong>in</strong>e Reihe von Aufgaben erfüllen, um e<strong>in</strong>e End-zu-End-<br />

Zustellung von Datenpaketen zu gewährleisten. Dazu zählt die Def<strong>in</strong>ition von Datagrammen,<br />

welche die Basise<strong>in</strong>heiten zur Datenübermittlung <strong>in</strong> Internets bilden. Weiterh<strong>in</strong> wird das<br />

bereits angesprochene Adressierungsschema benötigt. <strong>E<strong>in</strong></strong>e weitere Aufgabe besteht <strong>in</strong> <strong>der</strong><br />

Übermittlung <strong>der</strong> Daten von <strong>der</strong> Transportschicht zur <strong>Netzwerk</strong>schicht. 7<br />

Die Datagramme müssen geeignet durch das Netz geschleust werden, dieser Vorgang<br />

wird als ”Rout<strong>in</strong>g” bezeichnet. Da auf diesem Wege durchaus unterschiedliche Arten von<br />

<strong>Netzwerk</strong>hardware passiert werden kann, muss die optimale Framegröße nicht unbed<strong>in</strong>gt<br />

auf allen Teilstrecken identisch se<strong>in</strong>. Da die Framegröße nur anhand <strong>der</strong> Daten des ersten<br />

Teilnetzes, <strong>in</strong> dem <strong>der</strong> sendende Host Mitglied ist, bestimmt wird, müssen Mechanismen<br />

zur Verfügung stehen, mit eventuell kle<strong>in</strong>er werdenden Frame-Größen umzugehen. Daher<br />

erlaubt das IP die Fragmentierung <strong>der</strong> Datagramme auf ihrem Weg durch das Netz und<br />

das Zusammensetzen von diesen auf <strong>der</strong> Zielmasch<strong>in</strong>e.<br />

Die Funktionen von IP umfassen:<br />

• Die Def<strong>in</strong>ition von Datagrammen, welche die Basise<strong>in</strong>heiten für die Übermittlung von<br />

Daten im Internet bilden.<br />

• Def<strong>in</strong>ition des Adressierungsschemas.<br />

•<br />

Übermittlung <strong>der</strong> Daten von <strong>der</strong> Transportebene zur <strong>Netzwerk</strong>schicht.<br />

• Rout<strong>in</strong>g von Datagrammen durch das Netz.<br />

• Fagmentierung und Zusammensetzen von Datagrammen.<br />

IP benötigt deshalb e<strong>in</strong> hardwareunabhängiges Adressierungsschema; jedem Host (teilnehmen<strong>der</strong><br />

Rechner im ”Internet” wird e<strong>in</strong>e e<strong>in</strong>deutige 32-Bit-Zahl zugewiesen, die sogenannte<br />

IP-Adresse. Die Dargestellung von IP-Adressen erfolgt üblicherweise durch vier<br />

Dezimalzahlen, e<strong>in</strong>e für jeden 8-Bit-Anteil, die durch Punkte vone<strong>in</strong>an<strong>der</strong> getrennt s<strong>in</strong>d.<br />

IP ist e<strong>in</strong> verb<strong>in</strong>dungsloses Protokoll, d.h. zur Datenübertragung wird ke<strong>in</strong>e Ende-zu-<br />

Ende-Verb<strong>in</strong>dung <strong>der</strong> Kommunikationspartner etabliert. Ferner ist IP e<strong>in</strong> unzuverlässiges<br />

Protokoll, da es über ke<strong>in</strong>e Mechanismen zur Fehlererkennung und -behebung verfügt. Unzuverlässig<br />

bedeutet aber ke<strong>in</strong>esfalls, daß man sich auf das IP Protokoll nicht verlassen<br />

kann. Unzuverlässig bedeutet <strong>in</strong> diesem Zusammenhang lediglich, daß IP die Zustellung<br />

<strong>der</strong> Daten nicht garantieren kann. S<strong>in</strong>d die Daten aber beim Zielhost angelangt, s<strong>in</strong>d diese<br />

Daten auch korrekt.<br />

7 Das zugehörige OSI-Schichtenmodell ist Thema e<strong>in</strong>es eigenen Kapitels


48 KAPITEL 5. TCP-IP<br />

5.5 Spezifikation<br />

5.5.1 IPv4-Standard<br />

Mit den erfolgten Designüberlegungen und def<strong>in</strong>ierten Aufgaben des Internet-Protokolls<br />

s<strong>in</strong>d die wesentlichen Grundlagen gelegt. Nun kann die Spezifikation, d.h. die Festlegung<br />

e<strong>in</strong>zuhalten<strong>der</strong> Standards, des Protokolls erfolgen. Wie schon mehrfach implizit erwähnt<br />

wurde, ist IP e<strong>in</strong> paketorientiertes Protokoll.<br />

Die IP-Adresse ist e<strong>in</strong>e 32 bit große B<strong>in</strong>ärzahl, die jedem Host <strong>in</strong> e<strong>in</strong>em Internet zugewiesen<br />

wird und für die gesamte Kommunikation mit jedem an<strong>der</strong>en Host <strong>in</strong> diesem Internet<br />

verwendet wird. Dabei wird die Adresse virtuell <strong>in</strong> zwei Teile aufgespalten <strong>in</strong> e<strong>in</strong> Präfix und<br />

e<strong>in</strong> Suffix, wobei die Aufteilung nicht statisch ist. Das Präfix e<strong>in</strong>er IP-Adresse identifiziert<br />

das Netz, <strong>in</strong> welchem sich <strong>der</strong> jeweilige Host mit se<strong>in</strong>er Adresse bef<strong>in</strong>det.<br />

Das Adress-Suffix identifiziert den Host <strong>in</strong> dem durch das Präfix bestimmten Netz. Jedes<br />

Netz verfügt damit über e<strong>in</strong>e e<strong>in</strong>deutige Kennung, die Netznummer. Jede Netznummer<br />

bzw. Network Number tritt nur e<strong>in</strong>mal auf. Suffixes können <strong>in</strong> jedem Netz, dh. mehrfach,<br />

verwendet werden. Durch diese Festlegung soll das Rout<strong>in</strong>g effizient gestaltet werden<br />

können.<br />

Durch diese Festlegungen wird das wesentliches Designpr<strong>in</strong>zip beschrieben: Je<strong>der</strong> Host<br />

erhält e<strong>in</strong>e e<strong>in</strong>heitliche Adresse, diese Adresse kann jeweils nur von e<strong>in</strong>er Masch<strong>in</strong>e verwendet<br />

werden. Es erfolgt e<strong>in</strong>e globale Koord<strong>in</strong>ation bei <strong>der</strong> Zuteilung von Netznummern,<br />

jedoch e<strong>in</strong>e lokale Verteilung <strong>der</strong> Suffixes <strong>in</strong> den jeweiligen Teilnetzen. Es wird e<strong>in</strong>e Delegationshierarchie<br />

geschaffen, die e<strong>in</strong>e leichte <strong>E<strong>in</strong></strong>ordnung von Computern ermöglicht: Verschiedene<br />

Präfixes bedeutet verschiedene Netze; Gleiches Präfix heisst gleiches Netz. Das<br />

erzw<strong>in</strong>gt dann verschiedene Suffixes.<br />

Das Internet Control Message Protocol (ICMP) ist e<strong>in</strong>e Erweiterung des IP und wird<br />

dazu verwendet, um Fehlermeldungen und ähnliches an an<strong>der</strong>e Hosts weiterzugeben bzw.<br />

die Erreichbarkeit von Hosts zu überprüfen. Neben <strong>der</strong> Erreichbarkeit von Rechnern gibt es<br />

e<strong>in</strong>e weitere Funktion für die Weitergabe bestimmter Rout<strong>in</strong>g<strong>in</strong>formationen, die Redirect<br />

Messages. Diese wird vom Rout<strong>in</strong>g-Modul erzeugt, wenn es erkennt, daß es von e<strong>in</strong>em<br />

an<strong>der</strong>en Host als Gateway verwendet wird, obwohl es e<strong>in</strong>en wesentlich kürzeren Weg gibt.<br />

Weil dieses aber stark <strong>in</strong> die Funktionen des Hosts e<strong>in</strong>greift, ist das Ganze mit Vorsicht zu<br />

geniessen. In e<strong>in</strong>igen Fällen wird ICMP komplett abgeschaltet. <strong>E<strong>in</strong></strong> weiteres Hilfprotokoll<br />

stellt das Address Resolution Protocol dar. Es dient <strong>der</strong> Zuordnung von Hardwareadressen<br />

zu IP-Nummern. Beide Protokolle werden später <strong>in</strong> eigenen Abschnitten behandelt.<br />

5.5.2 Notation<br />

Für die Protokollsoftware ist die B<strong>in</strong>ärdarstellung entscheidend, nur <strong>in</strong> dieser kann e<strong>in</strong>e<br />

effiziente Analyse <strong>der</strong> Adressen erfolgen. Jedoch besitzt diese auch Nachteile: Für Menschen,<br />

die diese Adressen <strong>in</strong> ihren Applikationen verwenden, ist die B<strong>in</strong>ärnotation schwer lesbar<br />

und Verwechselungen leicht möglich.<br />

Deshalb führt man die sogenannte Dotted-Quad-Notation e<strong>in</strong>. Die IP-Adresse wird<br />

<strong>in</strong> vier Byte-Blöcke aufgeteilt, z.B. 11000000.10101000.00011001.11111110. Die Punkt-<br />

Dezimal-Notierung liefert dann e<strong>in</strong>e für das menschliche Auge leicht erfassbare, Darstellung.<br />

Im Beispiel bleibend schreibt sich die genannte IP-Adresse nun: 192.168.25.254. Je<strong>der</strong> Block<br />

besteht dabei aus e<strong>in</strong>em vorzeichenlosen Ganzzahlwert im Bereich 0 - 255.


5.5. SPEZIFIKATION 49<br />

5.5.3 Adressbereiche<br />

Der gesamte IP-Adressbereich erstreckt sich damit von Adresse 0.0.0.0 bis 255.255.255.255.<br />

In <strong>der</strong> B<strong>in</strong>ärdarstellung bedeutet dieses die Spannbreite von allen 32 Stellen ”Null” gesetzt<br />

bis zu allen Stellen ”<strong>E<strong>in</strong></strong>s” gesetzt. Die zuteilende Stelle für IP-Adressen bzw. -Bereiche<br />

muss für jeden Adressanteil die Zahl <strong>der</strong> Bits festlegen, welche für das Präfix bzw. das<br />

Suffix reserviert werden.<br />

Class<br />

A 0<br />

B<br />

C<br />

D<br />

E<br />

1 0<br />

1 1 0<br />

11 1 0<br />

11 11<br />

8 bits 8 bits 8 bits 8 bits<br />

network<br />

net<br />

work<br />

net<br />

work<br />

host host host<br />

network<br />

network network<br />

host host<br />

host<br />

multicast multicast multicast<br />

experi<br />

mental<br />

experi<br />

mental<br />

Abbildung 5.3: Adressbereiche des IPv4<br />

experi<br />

mental<br />

Die Zuordnung von e<strong>in</strong>er größeren Zahl von Bits <strong>in</strong> e<strong>in</strong>em Bereich bedeutet automatisch<br />

die Verfügbarkeit von weniger Bits im an<strong>der</strong>en Teil. D.h. die Verlängerung des Präfixes<br />

liefert mehr def<strong>in</strong>ierbare Netznummern, aber weniger Hosts im jeweiligen Netz. Die Vergrößerung<br />

<strong>der</strong> Zahl <strong>der</strong> Hosts pro Netz geht zulasten <strong>der</strong> def<strong>in</strong>ierbaren Anzahl von Netzen.<br />

<strong>E<strong>in</strong></strong>e übergreifend e<strong>in</strong>heitliche Festlegung ist jedoch kaum s<strong>in</strong>nvoll, da sehr unterschiedliche<br />

Netze und Anfor<strong>der</strong>ungen existieren.<br />

Das Internet-Protokoll ist aus Sicht <strong>der</strong> Computer- und <strong>Netzwerk</strong>evolution e<strong>in</strong> recht altes<br />

Protokoll, d.h. nicht alle Entwicklungen konnten vorausgesehen werden. Der ursprünglich<br />

festgelegte Adressraum erschien gross genug um alle damaligen Anfor<strong>der</strong>ungen abdecken zu<br />

können 8 . Weiterh<strong>in</strong> sollten IP-Adressen selbstbezeichnend se<strong>in</strong>, d.h. ohne weitere Angaben<br />

sollte die Netzgröße, d.h. die Anzahl maximal enthaltener Hosts als Information bereits<br />

be<strong>in</strong>haltet se<strong>in</strong>.<br />

Die frühe IP-Software <strong>in</strong>terpretierte zur Ermittlung e<strong>in</strong>er Adressklasse, die <strong>E<strong>in</strong></strong>teilungsvorschrift<br />

des IP-Adressraumes, die ersten vier Bits. Diese wurden <strong>in</strong> e<strong>in</strong>er Tabelle zur<br />

schnelleren Bearbeitung verwaltet. Mit dieser Festlegung wurde e<strong>in</strong>e Aufteilung des gesamten<br />

Adressraumes getroffen:<br />

Die Aufteilung geschieht über die Internet Assigned Number Authority (IANA).<br />

8 Es gab bei <strong>der</strong> Entwicklung von IP nur e<strong>in</strong>e w<strong>in</strong>zige Anzahl zu vernetzen<strong>der</strong> Rechner und man schätzte<br />

die Weiterentwicklung bei weitem nicht so stürmisch e<strong>in</strong>, wie sie später erfolgen sollte.


50 KAPITEL 5. TCP-IP<br />

Bezeichnung Präfix Suffix Netze Hosts pro Netz<br />

Class A 7 bit 24 bit 128 16.777.216<br />

Class B 14 bit 16 bit 16.38 65.536<br />

Class C 21 bit 8bit 2.097.152 256<br />

5.5.4 Spezielle IP-Adressen<br />

Tabelle 5.1: Aufteilung <strong>der</strong> IP-Adressklassen<br />

Beson<strong>der</strong>e Adressierungen sollen im geme<strong>in</strong>samen Adressraum abgebildet werden. Deshalb<br />

wurde e<strong>in</strong>e Reihe von Spezialadressen def<strong>in</strong>iert. Dazu zählen die <strong>Netzwerk</strong>adressen: Um den<br />

Netzen e<strong>in</strong>en ”Namen” zu geben, d.h. um sie direkt ansprechen zu können, erhalten diese<br />

Adressen im Prefix die <strong>Netzwerk</strong>-Nummer und im Suffix Nullen.<br />

Für den direkter Broadcast, d.h. um alle Rechner <strong>in</strong> e<strong>in</strong>em geme<strong>in</strong>samen physikalischen<br />

Netz e<strong>in</strong>e Nachricht schicken zu können, wird das <strong>Netzwerk</strong>prefix verwendet und im Suffix<br />

b<strong>in</strong>äre ”<strong>E<strong>in</strong></strong>sen” e<strong>in</strong>getragen. Der limitierte Broadcast erlaubt es, allen Rechnern im physikalischen<br />

Netz (<strong>in</strong> dem sich die Masch<strong>in</strong>e gerade bef<strong>in</strong>det) e<strong>in</strong>e Nachricht zu schicken. Im<br />

<strong>Netzwerk</strong>prefix und im Suffix werden ausschließlich ”<strong>E<strong>in</strong></strong>sen” e<strong>in</strong>getragen.<br />

”This Computer” stellt auch e<strong>in</strong>e spezielle Anfor<strong>der</strong>ung dar: Wenn e<strong>in</strong> Rechner bootet<br />

und dynamisch e<strong>in</strong>e IP-Adresse erhalten soll, benötigt er e<strong>in</strong>e Adresse zur IP-Kommunikation:<br />

Im Präfix und Suffix ausschließlich Nullen. Diese Situation tritt z.B. bei festplattenlosen<br />

Masch<strong>in</strong>en auf, die ke<strong>in</strong>e Möglichkeit haben, die Adresse irgendwo abzulegen. Dieses gilt<br />

auch für mobile Masch<strong>in</strong>en, die zwischen verschiedenen Netzen wechseln.<br />

Die ”Loopback Address” bietet e<strong>in</strong>e auf je<strong>der</strong> Masch<strong>in</strong>e e<strong>in</strong>heitliche Adresse. Viele Programme<br />

verwenden zur Kommunikation TCP/IP, selbst wenn die Masch<strong>in</strong>e nicht an e<strong>in</strong><br />

<strong>Netzwerk</strong> angeschlossen ist. Zur schnellen IP-Kommunikation <strong>in</strong>nerhalb <strong>der</strong> Masch<strong>in</strong>e ist<br />

als höchstes das Class-A <strong>Netzwerk</strong> 9 def<strong>in</strong>iert. Dieses ersche<strong>in</strong>t aus heutiger Sicht durchaus<br />

als Verschwendung, da <strong>in</strong> e<strong>in</strong>em solchen Netz mehrere Millionen Rechner Platz f<strong>in</strong>den.<br />

Router erhalten auch IP-Adressen obwohl sie selten Applikationen zur Host-zu-Host-<br />

Kommunikation ausführen. Sie haben Verb<strong>in</strong>dung <strong>in</strong> verschiedene physikalische Netze und<br />

müssen <strong>in</strong> jedem dieser Netze adressierbar se<strong>in</strong>. Jede dieser IP-Adressen e<strong>in</strong>es Routers bezeichnet<br />

mit ihrem Prefix das physikalische Netz. Dabei wird folgendes Pr<strong>in</strong>zip angewandt:<br />

IP-Adressen bezeichnen nicht direkt den Host, son<strong>der</strong>n die Verb<strong>in</strong>dung e<strong>in</strong>es Rechners zu<br />

e<strong>in</strong>em <strong>Netzwerk</strong>.<br />

Zur Abgrenzung von Routern bezeichnet man Rechner mit mehreren IP-Adressen ohne<br />

Rout<strong>in</strong>gfunktionalität als Multi-Homed-Hosts.<br />

Beim Rout<strong>in</strong>g spielen e<strong>in</strong>ige IP-Adressen mit beson<strong>der</strong>er Bedeutung e<strong>in</strong>e Rolle, die im<br />

folgenden kurz vorgestellt:<br />

<strong>Netzwerk</strong>adresse ist def<strong>in</strong>iert durch e<strong>in</strong> Präfix. Der Teil, welcher den e<strong>in</strong>zelnen Host<br />

bezeichnet, wird mit Nullen am Ende aufgefüllt. So beschreibt die spezielle IP-Nummer,<br />

z.B. 192.168.20.0 e<strong>in</strong> Klasse-C-<strong>Netzwerk</strong> mit max. 254 Teilnehmern.<br />

Broadcastadresse für e<strong>in</strong>en direkten Broadcast, d.h. e<strong>in</strong> Datenpaket an alle Teilnehmer<br />

e<strong>in</strong>es Teilnetzes, besteht aus dem Präfix mit <strong>E<strong>in</strong></strong>sen am Ende, die den Hostteil auffüllen.<br />

Im o.g. Beispiel wäre dieses die spezielle IP-Nummer 192.168.20.255.<br />

9 127.0.0.0


5.5. SPEZIFIKATION 51<br />

Defaultrouter heißt <strong>der</strong> Standardübergang zu an<strong>der</strong>en Netzen. Dieses ist e<strong>in</strong>e Masch<strong>in</strong>e,<br />

die den ”Weg” zum restlichen Internet kennt. Der Defaultrouter ist e<strong>in</strong>e Konvention, damit<br />

nicht je<strong>der</strong> Router im Netz alle Routen zu allen existierenden <strong>Netzwerk</strong>en listen und verarbeiten<br />

muss. Diese Masch<strong>in</strong>e muss aber zw<strong>in</strong>gend Mitglied im jeweilgen Teilnetz se<strong>in</strong>. Im<br />

Beispielnetz könnte dieses z.B. die IP-Adresse 192.168.20.254 se<strong>in</strong>. Dieses ist im Gegensatz<br />

zu <strong>Netzwerk</strong>adresse und Broadcastadresse nicht standardisiert.<br />

<strong>Netzwerk</strong>maske wird durch die spezielle IP-Adresse beschrieben, welche mit b<strong>in</strong>ären<br />

<strong>E<strong>in</strong></strong>sen beg<strong>in</strong>nt und mit b<strong>in</strong>ären Nullen endet. Der Übergang bezeichnet die Grenze zwischen<br />

Prä- und Suffix und sollte e<strong>in</strong>deutig se<strong>in</strong>. Für das Beispielnetz lautet diese 255.255.255.0<br />

und ist damit Netzmaske e<strong>in</strong>es Klasse C-Netzes. B<strong>in</strong>är lautet sie: 1111 1111.1111 1111.1111<br />

1111.0000 0000 <strong>E<strong>in</strong></strong>e <strong>Netzwerk</strong>maske für Netze mit nur e<strong>in</strong>em Rechner besteht ausschliesslich<br />

aus ”<strong>E<strong>in</strong></strong>sen”, die <strong>Netzwerk</strong>maske für das gesamte Internet nur aus ”Nullen”. 0.0.0.0<br />

bezeichnet deshalb die Defaultroute.<br />

Weiterh<strong>in</strong> lautet die <strong>Netzwerk</strong>maske z.B. für e<strong>in</strong> Klasse B Netz 255.255.0.0 und <strong>in</strong> <strong>der</strong><br />

B<strong>in</strong>ärschreibweise 1111 1111.1111 1111.0000 0000.0000 0000. Häufig wird jedoch die sehr<br />

lange und umständliche Darstellung mit <strong>der</strong> Angabe <strong>der</strong> Anzahl <strong>der</strong> ”<strong>E<strong>in</strong></strong>sen” <strong>in</strong> ihrer<br />

jeweiligen Darstellung abgekürzt.<br />

Klasse Beispiel Anzahl <strong>der</strong> <strong>E<strong>in</strong></strong>sen<br />

Class A 10.0.0.0 8<br />

Class B 132.230.0.0 16<br />

Class C 192.168.20.0 24<br />

Tabelle 5.2: Kurzdarstellung für Netze<br />

Wenn man classless Rout<strong>in</strong>g e<strong>in</strong>führt, dann haben Netze wie<strong>der</strong> Netzmasken von 0 bis<br />

32. Deshalb sollten als ”Endungen” von Netzmasken nur die dezimalen Zahlen 255, 254,<br />

252, 248, 240, 224, 192, 128, 0 auftreten. Man könnte natürlich versucht se<strong>in</strong>, kompliziertere<br />

Muster von Netzmasken zu bauen und statt e<strong>in</strong> Klasse C-Netz <strong>in</strong> <strong>der</strong> Mitte zu teilen,<br />

entlang <strong>der</strong> geraden und ungeraden IP-Nummern spalten. Dieses trägt jedoch extrem dazu<br />

bei, Rout<strong>in</strong>gtabellen nicht mehr durchschauen zu können und sei daher nur dem erfahrenen<br />

<strong>Netzwerk</strong>adm<strong>in</strong>istrator als Option genannt. Weiterh<strong>in</strong> wird man sich nicht immer darauf<br />

verlassen können, dass jede TCP/IP-Implementation sauber mit dieser Art von Netzmasken<br />

umgehen kann.<br />

5.5.5 Private IP-Adressen<br />

Der gesamte Adressbereich 127.b.c.d ist dem Loopback-Netz 10 zugeordnet, dabei handelt<br />

es sich um e<strong>in</strong> per Software simuliertes Netz. <strong>E<strong>in</strong></strong>zige Masch<strong>in</strong>e auf diesem loopback-Netz<br />

ist die eigene; evtl. mit verschiedenen Namen. Die Adresse 127.0.0.1 bezieht sich stets<br />

auf die eigene Masch<strong>in</strong>e; sie kann zu ke<strong>in</strong>en an<strong>der</strong>en Zwecken gebracht werden, als zur<br />

Def<strong>in</strong>ition des ”das s<strong>in</strong>d wir selbst”. Die Adresse a.b.c.0 ist für das lokale Netz (Netz”name”)<br />

reserviert. Die Adresse a.b.c.255 ist für Nachrichten ”an alle” (Broadcast) reserviert 11 .<br />

Folgende Adreßbereiche s<strong>in</strong>d zum Aufbau privater, nicht mit dem Internet verbundener<br />

<strong>Netzwerk</strong>e freigegeben:<br />

• 10.0.0.0 - 10.255.255.255<br />

10 siehe hierzu die Anmerkungen im vorherigen Abschnitt<br />

11 Das Beispiel bezieht sich auf e<strong>in</strong> Class-C <strong>Netzwerk</strong>, bei e<strong>in</strong>em Class-B sähe die <strong>der</strong> Netzname wie a.b.0.0<br />

und die Broadcastadresse wie a.b.255.255 aus.


52 KAPITEL 5. TCP-IP<br />

• 172.16.0.0 - 172.31.255.255<br />

• 192.168.0.0 - 192.168.255.255<br />

Diese Adressen werden im Internet nicht geroutet (d.h. die Pakete werden spätestens<br />

am Router des eigenen LAN zum Internet wegegeworfen).<br />

5.6 Der IP-Hea<strong>der</strong><br />

IP hat mehrere Aufgaben, dafür werden e<strong>in</strong>ige Informationen benötigt: Die Quell- und<br />

Zieladresse; Informationen zum Weiterreichen an die höhere <strong>Netzwerk</strong>schicht; Fragmentierung<br />

12 ; ”Verfallsdatum” 13 ; Länge des Pakets und die Prüfsumme.<br />

VERS.<br />

IPHL<br />

IDENTIFICATION<br />

TYPE OF SERV. TOTAL LENGTH<br />

D<br />

F<br />

M<br />

F<br />

SOURCE ADDRESS<br />

DESTINATION ADDRESS<br />

FRAGMENT OFFSET<br />

TIME TO LIVE PROTOCOL HEADER CHECKSUM<br />

Die e<strong>in</strong>zelnen Hea<strong>der</strong>-Bestandteile:<br />

32 bit<br />

OPTIONS (ZERO OR MORE WORDS)<br />

Abbildung 5.4: IP Paket-Hea<strong>der</strong><br />

• Version (4 bit) - Die Versionsnummer steht für die zu verwendende IP-Protokollversion.<br />

Derzeit üblicherweise verwendet wird IPv4.<br />

• H-Länge (4 bit): Die Hea<strong>der</strong>-Länge gibt an, wie viele 32 bit-Zeilen <strong>der</strong> gesamte IP-<br />

Hea<strong>der</strong> besitzt. Dadurch, dass das Optionen-Feld unterschiedlich lang werden kann,<br />

ist es s<strong>in</strong>nvoll zu wissen, ab wo das Protokoll <strong>der</strong> nächst höheren Schicht beg<strong>in</strong>nt.<br />

• Service-Type (8 bit): Das TOS-Feld (Type of Service) bestimmt, um welche Art von<br />

Daten es sich bei diesem Datagramm handelt. Diese Information ist hauptsächlich zu<br />

Zeiten von überlastetem <strong>Netzwerk</strong>verkehr nützlich. Hier macht es S<strong>in</strong>n die Anwendungsart<br />

(HTTP-Typ, FTP-Typ,...) <strong>der</strong> Daten zu wissen, um entsprechende Prioritäten<br />

beim Transport <strong>der</strong> Datagramme über e<strong>in</strong>e Verb<strong>in</strong>dungsleitung zu setzen.<br />

Wirklich verwendet wird dieses Feld jedoch nicht.<br />

• Länge (16 bit): Dieses Feld gibt an, wie viele Bytes das gesamte Datagramm überhaupt<br />

enthält.<br />

• Fragment-ID (16 bit): Gibt an um welches Paket es sich handelt. Das spielt eigentlich<br />

nur e<strong>in</strong>e Rolle, wenn fragmentiert werden muss. Da je<strong>der</strong> Sen<strong>der</strong> e<strong>in</strong>e ID <strong>in</strong> dieses<br />

Feld e<strong>in</strong>trägt, ist es Dritten durchaus möglich verschiedene Masch<strong>in</strong>en h<strong>in</strong>ter e<strong>in</strong>em<br />

Masquerad<strong>in</strong>g-Router zu identifizieren.<br />

12 nicht alle darunterliegenden physikalischen o<strong>der</strong> logischen Netze haben die gleichen Eigenschaften<br />

13 Unzustellbare Pakete müssen irgendwann das Netz wie<strong>der</strong> verlassen - also entsorgt werden


5.7. IP-ROUTING 53<br />

• Flags (3 bit): Flags werden für die Fragmentierung benutzt, auf die im nächsten Abschnitt<br />

genauer e<strong>in</strong>gegangen werden soll.<br />

• Fragment-Offset (13 bit): Gibt an, an welcher Stelle das Fragment e<strong>in</strong>gefügt werden<br />

muss.<br />

• TTL (8-Bits): Das Time-To-Live gibt an, wie viele verschiedene Netze (Hops) das<br />

Datagramm auf se<strong>in</strong>er Reise noch benutzen darf. Somit wird verh<strong>in</strong><strong>der</strong>t, dass Datagramme<br />

endlos im <strong>Netzwerk</strong> herumirren.<br />

• Höheres Protokoll (8 bit): Hiermit wir angegeben, um welches Protokoll es sich <strong>in</strong> <strong>der</strong><br />

nächsthöheren Schicht, also <strong>der</strong> Transportschicht, handelt. <strong>E<strong>in</strong></strong> Wert von 6 bedeutet,<br />

dass das TCP-Segment über den entsprechenden Port an das TCP weiter verabreicht<br />

werden soll. <strong>E<strong>in</strong></strong> Wert von 5 deutet h<strong>in</strong>gegen auf das UDP <strong>in</strong> <strong>der</strong> Transportschicht<br />

h<strong>in</strong>. Die Protokollnummer wird im IP-Jargon als <strong>der</strong> ”Klebstoff” bezeichnet, welcher<br />

die <strong>Netzwerk</strong>schicht mit <strong>der</strong> Transportschicht verb<strong>in</strong>det. Die Zuordnungen von<br />

Protokollen und Nummern f<strong>in</strong>det man <strong>in</strong> <strong>der</strong> Datei /etc/protocols.<br />

• Prüfsumme (16 bit): Dieses Feld besitzt dieselbe Funktion wie das Prüfsummen-Feld<br />

im TCP/UDP. Sie dient <strong>der</strong> Detektion von Bit-Fehlern <strong>in</strong> e<strong>in</strong>em empfangenen Datagramm.<br />

Es stellt sich an dieser Stelle nun die Frage, warum sowohl auf <strong>der</strong> Transportschicht<br />

als auch auf <strong>der</strong> Vermittlungsschicht e<strong>in</strong>e Prüfsumme berechnet wird. <strong>E<strong>in</strong></strong><br />

offensichtlicher Grund dafür ist, dass sowohl auf <strong>der</strong> Vermittlungsschicht als auch auf<br />

<strong>der</strong> Transportschicht an<strong>der</strong>e, wenn auch nicht häufig verwendete Protokolle existieren,<br />

die ke<strong>in</strong>e Prüfsummenberechnung durchführen, so dass es s<strong>in</strong>nvoll se<strong>in</strong> kann, die<br />

Überprüfung <strong>der</strong> Korrektheit mittels <strong>der</strong> Prüfsummenberechnung auf beiden Schichten<br />

durchzuführen.<br />

• Quell-IP-Adresse (32 bit): Gibt an, von welcher IP-Adresse das Datagramm ursprünglich<br />

kommt.<br />

• Ziel-IP-Adress (32 bit): Gibt an, zu welcher IP-Adresse das Datagramm verschickt<br />

werden soll.<br />

• Optionen (je 32 bit): Diese Fel<strong>der</strong> dienen <strong>der</strong> Erweiterung des IP-Hea<strong>der</strong>s.<br />

5.6.1 Fragmentierung<br />

Manche Teilstrecken im <strong>Netzwerk</strong> können nicht mit beliebigen Datagrammgrößen hantieren.<br />

Jedes <strong>Netzwerk</strong>teilstück besitzt deshalb e<strong>in</strong>e maximale Datagrammgröße MTU (Maximal<br />

Transmission Unit). Die Router, die Datagramme zu diesen Routern senden, müssen also<br />

stets überprüfen, ob die Größe <strong>der</strong> zu sendenden Datagramme die MTU <strong>der</strong> empfangenden<br />

Router nicht übertreffen. Sollte dies <strong>der</strong> Fall se<strong>in</strong>, so werden die jeweiligen Datagramme<br />

fragmentiert. Wenn e<strong>in</strong> Datagramm fragmentiert wird, so werden mehrere kle<strong>in</strong>ere Datagramme<br />

erstellt, die dieselbe ID haben, jedoch e<strong>in</strong> gesetztes Fragment-Flag enthalten.<br />

Durch das Fragment-Offset wird zudem angegeben, an welcher Stelle das Fragment <strong>in</strong> das<br />

Datagramm e<strong>in</strong>gefügt werden muss. Beim letzten Fragment ist das Fragment-Flag gelöscht,<br />

um anzuzeigen, dass ke<strong>in</strong>e weiteren Fragmente mehr folgen.<br />

5.7 IP-Rout<strong>in</strong>g<br />

<strong>E<strong>in</strong></strong>e entscheidende Aufgabe des Internet-Protkolls ist die Verb<strong>in</strong>dung verschiedener Teilnetze<br />

untere<strong>in</strong>e<strong>in</strong><strong>der</strong>. Hierzu muss es e<strong>in</strong>e geeignete Paketweiterleitung implementieren. Diese


54 KAPITEL 5. TCP-IP<br />

wird als Rout<strong>in</strong>g bezeichnet. Zur <strong>E<strong>in</strong></strong>ordnung sei wie<strong>der</strong>holt, dass IP e<strong>in</strong> verb<strong>in</strong>dungsloses<br />

paketorientiertes Protokoll ist, welches def<strong>in</strong>iert wurde, um die exklusive Belegung e<strong>in</strong>es<br />

Datenkanals zu verh<strong>in</strong><strong>der</strong>n. Erst auf darüberligenden Schichten kann <strong>der</strong> Nutzer entscheiden,<br />

ob er verb<strong>in</strong>dungsorientierte o<strong>der</strong> -lose Kommunikation wünscht. TCP arbeitet verb<strong>in</strong>dungsorientiert,<br />

UDP schafft e<strong>in</strong>en e<strong>in</strong>fachen Datagrammrahmen, <strong>der</strong> direkt auf IP aufsetzt.<br />

Die Weiterleitungsentscheidung erfolgt beim Internet-Protokoll für jedes e<strong>in</strong>zelne Paket<br />

neu. Damit das Rout<strong>in</strong>g möglichst effizient erfolgen konnte, sollten IP-Adressen selbsterklärend<br />

se<strong>in</strong>, d.h. sie besitzen e<strong>in</strong> Präfix zur <strong>Netzwerk</strong>kennung. Mit dem Suffix wird <strong>der</strong><br />

Host im Teilnetz identifiziert. Deshalb erfolgte ursprünglich e<strong>in</strong>e Klassene<strong>in</strong>teilung des gesamten<br />

IP-Adressraumes <strong>in</strong> Klassen. Die Klassen A bis C def<strong>in</strong>ierten dabei gültige Adressen<br />

mit fest vorgegebenen Prä- und Suffixlängen. Spezielle Adressen werden für die <strong>Netzwerk</strong>kennung<br />

e<strong>in</strong>geführt. So s<strong>in</strong>d <strong>Netzwerk</strong>e neben an<strong>der</strong>en IP-Spezialadressen <strong>in</strong>nerhalb des<br />

Namesraumes zu kennzeichnen. Mit dieser Festlegung ist e<strong>in</strong>e gewisse Hierarchisierung <strong>der</strong><br />

Verteilung von IP-Adressen möglich.<br />

5.7.1 Pr<strong>in</strong>zip <strong>der</strong> IP-Netze<br />

Bei <strong>der</strong> Planung e<strong>in</strong>es lokalen Netzes gibt es zwei Zielsetzungen:<br />

Direkter Datenverkehr zwischen allen lokalen Masch<strong>in</strong>en ohne Umweg über den Router<br />

(sonst unnötige Belastung und Verzögerung)<br />

Begrenzung <strong>der</strong> ”Reichweite” <strong>der</strong> Datenpakete auf das kle<strong>in</strong>st-mögliche Teil-Netz<br />

(aus Sicherheitsgründen und zum Schutz an<strong>der</strong>er Teil-Netze vor unnötiger Belastung)<br />

Die <strong>E<strong>in</strong></strong>stellungen zum Umsetzen dieser Ziele s<strong>in</strong>d:<br />

Bezeichnung Beschreibung<br />

networkaddress<br />

Adresse des eigenen Teil-Netzes, Vergleich mit IP-<br />

Adresse gibt an, ob e<strong>in</strong> Datenpaket zum lokalen Netz<br />

gehört o<strong>der</strong> nicht<br />

subnet-mask Bitmaske zum Herausstanzen <strong>der</strong> <strong>Netzwerk</strong>- Adresse<br />

aus <strong>der</strong> IP-Adresse e<strong>in</strong>er Masch<strong>in</strong>e<br />

ip-address Eigene Adresse <strong>der</strong> Masch<strong>in</strong>e<br />

Tabelle 5.3: Abgrenzung <strong>der</strong> ”Reichweite” des lokalen Netzes<br />

address 192.168.25.3 11000000.10101000.00011001.00000011<br />

netmask 255.255.255.0 11111111.11111111.11111111.00000000<br />

network 192.168.25.0 11000000.10101000.00011001.00000000<br />

In diesem Beispiel bilden alle 254 Masch<strong>in</strong>en mit <strong>der</strong> Adresse 192.168.25.N e<strong>in</strong> geme<strong>in</strong>sames<br />

<strong>Netzwerk</strong>. Darüberh<strong>in</strong>aus gibt es noch die ”broadcast-address”, die e<strong>in</strong>e Adresse<br />

für Nachrichten ”an alle” <strong>in</strong> diesem Teil-Netz ist. Rechnet man die Netzadresse 14 und die<br />

Broadcast-Adresse 15 h<strong>in</strong>zu, kommt man für e<strong>in</strong> Class-C-Netz, wie hier dargestellt, auf 256<br />

IP-Adressen (= 2 8 ).<br />

14 die kle<strong>in</strong>ste Adresse im Teilnetz, dieses ist e<strong>in</strong>e nicht vergebbare IP!<br />

15 die grösste Adresse im Teilnetz, auch diese IP sollte nicht für Rechner vergeben werden!


5.7. IP-ROUTING 55<br />

5.7.2 Rout<strong>in</strong>g (Die Wege im Netz)<br />

Der Datenverkehr f<strong>in</strong>det zwischen den <strong>Netzwerk</strong>schnittstellen <strong>der</strong> Internet-Rechner statt.<br />

<strong>E<strong>in</strong></strong> L<strong>in</strong>ux-PC kann mehrere <strong>Netzwerk</strong>schnittstellen besitzen und als Vermittlungsstelle zwischen<br />

verschiedenen Netzen (Router) dienen. Dann kann es jedoch notwendig se<strong>in</strong>, die<br />

Rout<strong>in</strong>g-(d.h. Paketforward<strong>in</strong>g-)Fähigkeit des Kernels e<strong>in</strong>zuschalten. Dieses kann für jedes<br />

Interface e<strong>in</strong>zeln def<strong>in</strong>iert werden. Der Name e<strong>in</strong>er <strong>Netzwerk</strong>schnittstelle hängt von <strong>der</strong> verwendeten<br />

<strong>Netzwerk</strong>technik ab (nicht etwa vom Hersteller <strong>der</strong> <strong>E<strong>in</strong></strong>steckkarte, wie bei an<strong>der</strong>en<br />

Systemen).<br />

Der Befehl route zeigt an, wie <strong>der</strong> Betriebssystemkern Datenpakete an die verschiedenen<br />

Empfänger verschickt:<br />

shuttle:~/ > /sb<strong>in</strong>/route -n<br />

Kernel IP rout<strong>in</strong>g table<br />

Dest<strong>in</strong>ation Gateway Genmask Flags Metric Ref Use Iface<br />

10.1.1.11 10.2.13.254 255.255.255.255 UGH 0 0 0 wlan0<br />

10.8.4.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0<br />

10.2.13.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0<br />

127.0.0.0 127.0.0.1 255.0.0.0 UG 0 0 0 lo<br />

0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 tun0<br />

Alle gerade aktuellen Routen im <strong>E<strong>in</strong></strong>zelnen kann man sich mit route -C anzeigen lassen.<br />

Diese Liste wird aber <strong>in</strong> grösseren Netzen bzw. auf Gatewayrechnern sehr schnell sehr lang<br />

werden. Informationen zum Rout<strong>in</strong>g können auch mit den Kommandos ip route o<strong>der</strong><br />

netstat -r erhalten werden. Jedes dieser Programme greift dabei auf das Kernel-Proc-<br />

Interface zu.<br />

<strong>E<strong>in</strong></strong>e klassische Konfiguration sieht wie angezeigt aus: Es ist das lokale Ethernet def<strong>in</strong>iert,<br />

<strong>in</strong> dem alle teilnehmenden Systeme ohne Router/Gateway erreicht werden können.<br />

Alles was <strong>in</strong> diesem Bereich nicht zugestellt werden kann, wird dem Defaultrouter zur weiteren<br />

Zustellung überlassen. ”default” hat die IP 0.0.0.0 und me<strong>in</strong>t das ganze Internet,<br />

also den verbleibenden Rest, wenn die erste Route nicht angewendet werden konnte. Der<br />

Defaultrouter (bzw. Defautlgateway) muss bereits <strong>in</strong> e<strong>in</strong>em darüber def<strong>in</strong>ierten Rout<strong>in</strong>ge<strong>in</strong>trag<br />

bekannt gemacht worden se<strong>in</strong> (Mitglied im entsprechenden Subnetz se<strong>in</strong>), da es sonst<br />

nicht erreicht werden kann! So genügt es zum Transport von IP-Paketen, dass je<strong>der</strong> Rechner<br />

im Internet entsprechend se<strong>in</strong>es Horizontes Systeme kennt, die wie<strong>der</strong> die weiteren Wege im<br />

Netz kennen. Bei den Flags deutet ”G” an, dass es sich um e<strong>in</strong>e Gatewayroute handelt, also<br />

die Pakete nicht im lokalen Subnetz zugestellt werden. ”H” deutet e<strong>in</strong>e Hostroute an, dieses<br />

ist e<strong>in</strong>e spezielle Form e<strong>in</strong>es Sub-Netzes, da hier Po<strong>in</strong>t-to-Po<strong>in</strong>t- Verb<strong>in</strong>dungen def<strong>in</strong>iert<br />

werden.<br />

traceroute dient zur Verfolgung des kompletten Weges, den Datenpakete zu e<strong>in</strong>em<br />

bestimmten Empfänger e<strong>in</strong>schlagen, z.B. zu traceroute www.heise.de:<br />

shuttle:~ # traceroute www.heise.de<br />

traceroute to www.heise.de (193.99.144.85), 30 hops max, 40 byte packets<br />

1 10.1.1.11 4.992 ms 4.318 ms 6.315 ms<br />

2 132.230.120.142 8.262 ms 10.373 ms *<br />

3 nsc-rz-gwn.fun.uni-freiburg.de (132.230.0.141) 7.938 ms 7.307 ms \<br />

7.639 ms<br />

4 Freiburg1.Belwue.DE (129.143.15.141) 7.641 ms 9.846 ms 10.699 ms<br />

5 Stuttgart1.BelWue.DE (129.143.1.7) 17.109 ms 17.503 ms 17.258 ms<br />

6 Frankfurt1.belwue.de (129.143.1.26) 20.153 ms 20.314 ms 21.000 ms<br />

7 de-cix.ffm.plusl<strong>in</strong>e.net (80.81.192.132) 20.998 ms 20.211 ms \<br />

20.627 ms<br />

8 heise2.f.de.plusl<strong>in</strong>e.net (213.83.57.57) 14.674 ms * 13.516 ms


56 KAPITEL 5. TCP-IP<br />

9 * heise2.f.de.plusl<strong>in</strong>e.net (213.83.57.57) 13.433 ms 13.599 ms<br />

10 * * heise2.f.de.plusl<strong>in</strong>e.net (213.83.57.57)(N!) 13.537 ms<br />

<strong>E<strong>in</strong></strong> weiteres Tool, auch zur grafischen Visualisierung, ist mtr, ”My Traceroute”.<br />

”Router” leiten Datenpakete an entfernte Masch<strong>in</strong>en und sorgen für den Datenaustausch<br />

zwischen Teilnetzen. U.U. müssen die Pakete bis zum Ziel über mehrere Router<br />

geleitet werden; darauf hat man aber ke<strong>in</strong>en <strong>E<strong>in</strong></strong>fluß. ”Router” o<strong>der</strong> ”Gateway” wird meist<br />

synonym verwendet, wobei e<strong>in</strong> ”Gateway” eigentlich grundverschiedene Netze (Protokolle)<br />

mite<strong>in</strong>an<strong>der</strong> verb<strong>in</strong>det.<br />

Der Rout<strong>in</strong>ge<strong>in</strong>trag, <strong>der</strong> zu e<strong>in</strong>em bestimmten Interface gehört (im obigen Beispiel <strong>der</strong><br />

erste <strong>E<strong>in</strong></strong>trag) erfolgt ab dem Kernel Version 2.2 automatisch, wenn <strong>der</strong> Systemadm<strong>in</strong>istrator<br />

das Interface konfiguriert. Alle weiteren Rout<strong>in</strong>ge<strong>in</strong>träge müssen manuell über das<br />

Kommando route erfolgen, was für den obigen Fall (ungekürzt) so aussehen würde:<br />

shuttle:~/ # route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.10.156.1<br />

Da man diesen Vorgang nicht jedesmal beim Neustart des <strong>Netzwerk</strong>es o<strong>der</strong> des ganzen<br />

Rechners wie<strong>der</strong>holen möchte, können die weiteren Rout<strong>in</strong>ge<strong>in</strong>träge ublicherweise <strong>in</strong> <strong>der</strong><br />

<strong>Netzwerk</strong>konfiguration h<strong>in</strong>terlegt werden. 16<br />

5.7.3 <strong>E<strong>in</strong></strong>faches Hostrout<strong>in</strong>g<br />

Wie werden Pakete bei e<strong>in</strong>fachen Hosts, d.h. Masch<strong>in</strong>en mit e<strong>in</strong>er e<strong>in</strong>zigen <strong>Netzwerk</strong>verb<strong>in</strong>dung<br />

zugestellt? Jede Masch<strong>in</strong>e benötigt e<strong>in</strong>e eigene IP-Nummer, z.B. 192.168.20.2. Dieses<br />

ist e<strong>in</strong>e gültige Adresse aus dem Bereich des genannten Beispielnetzes von 192.168.20.1<br />

- 192.168.20.254. Insgesamt können also 254 IP-Nummern vergeben werden, da von den<br />

256 Möglichkeiten die <strong>Netzwerk</strong>nummer und die Broadcastadresse abzuziehen s<strong>in</strong>d. Die<br />

Verwaltung des <strong>Netzwerk</strong>es erfolgt auf den Routern und durch geeignete IP-Vergabe an<br />

die Hosts. Alle <strong>E<strong>in</strong></strong>tragungen erfolgen manuell. Jedoch sollte man beachten, dass IP nicht<br />

überprüft, ob bestimmte Adressen bereits vergeben wurden. Für die dynamische Zuweisung<br />

von IP-Adressen an Hosts hat sich das Dynamic Host Configuration Protocol als Standard<br />

herausgebildet. Dieses wird <strong>in</strong> e<strong>in</strong>em weiteren Abschnitt näher beleuchtet.<br />

Je<strong>der</strong> Host des Beispielnetzes enthält Rout<strong>in</strong>gtabelle. Diese fällt je nach Zahl <strong>der</strong> Interfaces<br />

und angeschlossenen <strong>Netzwerk</strong>e unterschiedlich komplex aus.<br />

<strong>Netzwerk</strong> Netzmaske Router-IP Interface<br />

192.168.20.0 255.255.255.0 - Ethernet, TokenR<strong>in</strong>g, ...<br />

127.0.0.1 255.0.0.0 - Loopback-Interface<br />

0.0.0.0 0.0.0.0 192.168.20.254 Defaultroute<br />

Tabelle 5.4: Rout<strong>in</strong>gtabelle e<strong>in</strong>es Hosts<br />

Die Defaultroute dient für alle an<strong>der</strong>en Adressen, die im eigenen Netz nicht zustellbar<br />

s<strong>in</strong>d. Deshalb wurde die Bezeichnung Defaultroute gewählt. Damit Pakete weitergeleitet<br />

werden können, muss jedoch m<strong>in</strong>destens e<strong>in</strong> Router Mitglied des jeweiligen Teilnetzes se<strong>in</strong>.<br />

5.7.4 Rout<strong>in</strong>gentscheidung<br />

Rout<strong>in</strong>gentscheidungen erfolgen meistens entlang komplexerer Tabellen, als den <strong>in</strong> Hosts<br />

verwendeten. Viele Pakete an Knotenroutern mit vielen Interfaces und hohen Bandbreiten<br />

legen e<strong>in</strong>e hardwarenahe Implementierung nahe. Durch die Bildung e<strong>in</strong>es “logischen UND”<br />

16 Die Konzepte unterscheiden sich dabei von Distribution zu Distribution durchaus erheblich.


5.7. IP-ROUTING 57<br />

aus Ziel-IP und Netzmaske wird durch den Vergleich mit den Netzadressen ermittelt, ob<br />

e<strong>in</strong>e Route verwendet wird o<strong>der</strong> nicht.<br />

Z.B. für das Ziel: 192.168.20.5 & 255.255.255.0 ergibt 192.168.20.0. Dieses wird mit<br />

<strong>der</strong> Netzadresse verglichen. Wenn es passt, schicke auf diese. An<strong>der</strong>nfalls probiere nächste,<br />

z.B. bei 24.46.192.77 & 255.255.255.0 ergibt 24.46.192.0 ungleich, also nächster Versuch<br />

24.46.192.77 & 0.0.0.0 errechnet sich zu 0.0.0.0 - passt immer auf die Defaultroute.<br />

Dabei startet man bei <strong>der</strong> kle<strong>in</strong>sten Netzmaske, also dem Netz mit den wenigsten Hosts.<br />

Dann arbeitet man sich sukzessive bis zur größten Netzmaske 17 alle e<strong>in</strong>getragenen Routen<br />

ab. Die Defaultroute ist dabei e<strong>in</strong>e Konvention zur Vere<strong>in</strong>fachung <strong>der</strong> Rout<strong>in</strong>gtabellen.<br />

Ke<strong>in</strong> Router kennt alle die Wege zu allen Internet-Adressen direkt, da fast je<strong>der</strong> Router nur<br />

e<strong>in</strong>en Bruchteil des Adressbereiches verwaltet. Je<strong>der</strong> dieser Router hat e<strong>in</strong>e Route für alle<br />

restlichen Bereiche. Auch e<strong>in</strong> e<strong>in</strong>facher Host kann mehrere Routen für verschiedene Netze<br />

kennen, falls mehrere Router <strong>in</strong> se<strong>in</strong>em Teilnetz vorhanden s<strong>in</strong>d.<br />

<strong>E<strong>in</strong></strong>e Entscheidungstabelle e<strong>in</strong>es Routers könnte wie im nachstehend gezeigten Beispiel<br />

aussehen. Die Netzmaske entscheidet über Reihenfolge <strong>der</strong> <strong>E<strong>in</strong></strong>träge <strong>in</strong> <strong>der</strong> Rout<strong>in</strong>gtabelle.<br />

Im Extremfall kann es also passieren, dass e<strong>in</strong> Paket gegen jede Regel geprüft wird.<br />

Netz Netzmaske Gateway/Router Interface<br />

192.168.20.128 255.255.255.128 192.2.2.2 #1<br />

192.168.20.0 256.255.255.128 193.2.2.3 #1<br />

10.10.2.0 255.255.255.0 10.10.255.254 #2<br />

10.10.0.0 255.255.0.0 10.10.0.254 #3<br />

10.4.0.0 255.252.0.0 10.10.0.254 #4<br />

10.0.0.0 255.0.0.0 192.168.2.5 #1<br />

0.0.0.0 0.0.0.0 10.10.0.254 #3<br />

Tabelle 5.5: Beispiel e<strong>in</strong>er möglichen Rout<strong>in</strong>gtabelle<br />

<strong>E<strong>in</strong></strong>e Verwaltung von Rout<strong>in</strong>g<strong>in</strong>formationen <strong>in</strong> größeren <strong>Netzwerk</strong>en wird sehr schnell<br />

recht aufwändig. Deshalb wurden Protkolle entwickelt, um e<strong>in</strong>ige Aspekte automatisieren<br />

zu können.<br />

Dynamisches Rout<strong>in</strong>g soll Ausfälle erkennen und Alternativrouten f<strong>in</strong>den und e<strong>in</strong>tragen.<br />

Hierzu s<strong>in</strong>d verschiedene Strategien möglich:<br />

Hop-Count: Wieviele Router liegen auf dem Weg von A nach B (was ist jedoch, wenn<br />

<strong>der</strong> Weg über e<strong>in</strong>e langsame ISDN-Leitung viel kürzer ist, als <strong>der</strong> ”Umweg” über e<strong>in</strong> viel<br />

schnelleres LAN)<br />

Open Shortest Path First: Rout<strong>in</strong>gmetrik nimmt weitere Kennzahlen e<strong>in</strong>er Route auf<br />

BGP: Bor<strong>der</strong>-Gateway-Protokolle für Router an den Grenzen großer <strong>Netzwerk</strong>e<br />

Obwohl Adressen zentral vergeben werden, erreicht man kaum e<strong>in</strong>e nähere geografische<br />

Zuordnung 18 als auf Län<strong>der</strong> o<strong>der</strong> Kont<strong>in</strong>entebene. Lokal nahe beie<strong>in</strong>an<strong>der</strong> liegende Firmen<br />

o<strong>der</strong> Organisationen können durchaus netzwerktopologisch gewaltige Entfernungen besitzen,<br />

wenn sie über verschiedene Provi<strong>der</strong> angeschlossen s<strong>in</strong>d. IP-Netze s<strong>in</strong>d eher daher eher<br />

als ”provi<strong>der</strong>-based” zu bezeichnen.<br />

17 0.0.0.0 das gesamte Internet<br />

18 Auch wenn es Firmen gibt, die zu je<strong>der</strong> IP-Adresse e<strong>in</strong>e ungefähre bis genaue geografische Koord<strong>in</strong>ate<br />

liefern können.


58 KAPITEL 5. TCP-IP<br />

5.7.5 Subnett<strong>in</strong>g und Supernett<strong>in</strong>g<br />

Frühe Router <strong>in</strong>terpretierten zur Ermittlung <strong>der</strong> Adressklasse die ersten vier Bits und verwalteten<br />

diese <strong>in</strong> e<strong>in</strong>er Tabelle zur schnelleren Bearbeitung. Dieses Konzept ist nicht mehr<br />

wirklich praktikabel, denn z.B. Uni-Freiburg hat mit Netzadresse 132.230.0.0 und Netzmaske<br />

255.255.0.0 e<strong>in</strong> Klasse-B-Netz. Aber: Nicht alle Rechner können <strong>in</strong> e<strong>in</strong>em Ethernet<br />

o.ä. zusammengefaßt werden, damit ist e<strong>in</strong> Rout<strong>in</strong>g wie im Beispiel kaum s<strong>in</strong>nvoll. Noch<br />

extremer: Besitzer von Klasse-A-Netzen können nicht mehrere Millionen Rechner direkt<br />

verwalten. In diesen Netzen wird üblicherweise e<strong>in</strong> Subnett<strong>in</strong>g zur besseren Abtrennung<br />

verschiedener Netze untere<strong>in</strong>an<strong>der</strong> betrieben. Damit reduziert sich die Broadcast-Doma<strong>in</strong><br />

und es wird e<strong>in</strong>e Strukturierung des Netzes erreicht. Mit <strong>der</strong> Knappheit <strong>der</strong> IP-Adressen im<br />

Netzmaske Bitmuster <strong>der</strong> Netzmaske Teilnetze Anzahl IP’s<br />

255.255.0.0 11111111.11111111.00000000.00000000 1 65.536<br />

255.255.128.0 11111111.11111111.10000000.00000000 2 32.768<br />

255.255.192.0 11111111.11111111.11000000.00000000 4 16.384<br />

255.255.224.0 11111111.11111111.11100000.00000000 8 8.192<br />

255.255.240.0 11111111.11111111.11110000.00000000 16 4.096<br />

255.255.248.0 11111111.11111111.11111000.00000000 32 2.048<br />

255.255.252.0 11111111.11111111.11111100.00000000 64 1.024<br />

255.255.254.0 11111111.11111111.11111110.00000000 128 512<br />

255.255.255.0 11111111.11111111.11111111.00000000 256 256<br />

Tabelle 5.6: Subnett<strong>in</strong>g <strong>in</strong> ”Klasse-B-<strong>Netzwerk</strong>en”<br />

<strong>der</strong>zeitigen IPv4-Adressraum von 2 32 (weniger etlicher Spezialadressen, siehe dazu bisherige<br />

Ausführungen) gab es e<strong>in</strong>e Reihe von Ansätzen das ”Ende” von IPv4 herauszuzögern. <strong>E<strong>in</strong></strong><br />

Ansatz ist das ”classless rout<strong>in</strong>g” und das ”subnett<strong>in</strong>g”. Netze können nun im Bereich <strong>der</strong><br />

Adressen 1.0.0.0 - 223.255.255.255 beliebig zusammengefasst und geteilt werden. Für die<br />

Rout<strong>in</strong>g<strong>in</strong>formationen wird nun jedoch immer die Subnetzmaske mit zu übermitteln se<strong>in</strong>,<br />

da sich diese nicht mehr aus <strong>der</strong> ersten Bitfolge <strong>der</strong> IP ergibt.<br />

Damit: <strong>E<strong>in</strong></strong> flexibleres Schema ist notwendig. Klassen dürfen beliebig <strong>in</strong> Subklassen<br />

aufgeteilt werden, z.B. kann das RZ <strong>der</strong> Uni-Freiburg e<strong>in</strong>zelnen Bereichen sog. Subnetze<br />

zuweisen. Aus <strong>der</strong> Aufteilung <strong>der</strong> höheren Klassen entstehen aus e<strong>in</strong>em Klasse B Netz mit<br />

65.535 Rechnern werden dann 256 Klasse C Netze mit 254 Rechnern pro Netz. Trotzdem<br />

müssen sich Router weltweit weiterh<strong>in</strong> nur 132.230.0.0 als Netzadresse merken, da Netze<br />

mittels Supernett<strong>in</strong>g zusammengefaßt werden können.<br />

Supernett<strong>in</strong>g kann z.B. zwei Klasse C Netze, wie 192.168.2.0 und 192.168.3.0, zu e<strong>in</strong>em<br />

Netz zusammenfassen und für dieses dann die Maske 255.255.254.0 verwenden. Supernett<strong>in</strong>g<br />

kann damit ”Adressverschwendung” verh<strong>in</strong><strong>der</strong>n: Ausgabe e<strong>in</strong>es Klasse B Netzes für<br />

e<strong>in</strong>e Organisation mit 500 Rechnern. Dann: IP-Adresse ist nicht mehr wie ursprünglich<br />

selbsterklärend deklariert, denn nun muss die Netzmaske zw<strong>in</strong>gend mit übermittelt werden.<br />

Die Netzmaske liefert aus ihrer Folge von ”1” und ”0” die Aufteilung zwischen <strong>Netzwerk</strong>teil<br />

<strong>der</strong> IP-Adresse und dem Hostteil. Diese Unterteilung bestimmt, welche Adressen<br />

<strong>in</strong> e<strong>in</strong>em lokalen Netz vergeben werden können. Diese können <strong>in</strong> diesem Netz ohne Router<br />

mite<strong>in</strong>an<strong>der</strong> direkt über ARP kommunizieren. Dabei sollten <strong>in</strong> <strong>der</strong> Folge nur ”1” gefolgt<br />

von nur ”0” stehen 19 , z.B.:<br />

19 Daraus folgt, dass nur die Zahlen 0, 128, 192, 224, 240, 248, 252, 254, 255 <strong>in</strong> <strong>der</strong> Netzmaske vorkommen<br />

können. An<strong>der</strong>e Muster wären möglich aber eventuell ordentlich verwirrend. Siehe Anmerkungen dazu weiter


5.7. IP-ROUTING 59<br />

netmask 255.255.255.0 11111111.11111111.11111111.00000000<br />

netmask 255.255.252.0 11111111.11111111.11111100.00000000<br />

netmask 255.255.0.0 11111111.11111111.00000000.00000000<br />

Die erste Beispielmaske ist e<strong>in</strong>e Class-C-Maske und die letzte, die e<strong>in</strong>es Class-B-Netzes.<br />

Es spielt nun aber ke<strong>in</strong>e Rolle mehr, wie das erste Bitmuster <strong>der</strong> IP-Adresse aussieht. Geht<br />

man z.B. davon aus, dass e<strong>in</strong> Class-B-Netz aufgeteilt werden soll, dann geschieht das wie<br />

folgt:<br />

Das gezeigte Muster kann natürlich auch ausgehend von e<strong>in</strong>em Class-A-Netz durchgeführt<br />

werden, wobei dann <strong>der</strong> letzte Tabellenwert mit 256 zu multiplizieren ist. Geht<br />

man von e<strong>in</strong>em Class-C-Netz aus, muss <strong>der</strong> letzte Wert h<strong>in</strong>gegen durch 256 geteilt werden.<br />

Wendet man dieses Beispiel nun auf e<strong>in</strong> konkretes Teilnetz an, z.B. auf das Class-B-<br />

Netz 134.76.0.0, dann ergibt sich das Bild (Tabelle 5.7.5) bei gleichmässiger Aufteilung.<br />

Die Tabellen könnten natürlich noch weiter fortgesetzt werden, aber das Pr<strong>in</strong>zip sollte klar<br />

Teilnetze Netzadresse(n) Netzmaske Broadcastadresse(n) Zahl <strong>der</strong> IP’s<br />

1 134.76.0.0 255.255.0.0 134.76.255.255 65.536<br />

2 134.76.0.0 255.255.128.0 134.76.127.255 32.768<br />

134.76.128.0 255.255.128.0 134.76.255.255 32.768<br />

4 134.76.0.0 255.255.192.0 134.76.63.255 16.384<br />

134.76.64.0 255.255.192.0 134.76.127.255 16.384<br />

134.76.128.0 255.255.192.0 134.76.191.255 16.384<br />

134.76.192.0 255.255.192.0 134.76.255.255 16.384<br />

8 134.76.0.0 255.255.224.0 134.76.31.255 8.192<br />

134.76.32.0 255.255.224.0 134.76.63.255 8.192<br />

134.76.64.0 255.255.224.0 134.76.127.255 8.192<br />

134.76.96.0 255.255.224.0 134.76.159.255 8.192<br />

134.76.128.0 255.255.224.0 134.76.191.255 8.192<br />

134.76.160.0 255.255.224.0 134.76.191.255 8.192<br />

134.76.192.0 255.255.224.0 134.76.223.255 8.192<br />

134.76.224.0 255.255.224.0 134.76.255.255 4.096<br />

Tabelle 5.7: Beispiele e<strong>in</strong>er Aufteilung <strong>in</strong> bis zu acht Teilnetze<br />

geworden se<strong>in</strong>. Es ist jedoch nicht erfor<strong>der</strong>lich e<strong>in</strong> Netz <strong>in</strong> gleiche Teile zu unterglie<strong>der</strong>n,<br />

son<strong>der</strong>n es können auch unterschiedlich grosse Teilbereiche def<strong>in</strong>iert werden, wobei sich<br />

jedoch je<strong>der</strong> Teilbereich <strong>in</strong> die se<strong>in</strong>em Bitmuster passenden Blöcke e<strong>in</strong>fügen muss 20 . Das<br />

angegebene Beispiel könnte also auch so aussehen, wie <strong>in</strong> Tabelle ?? gezeigt. Subnett<strong>in</strong>g<br />

und Supernett<strong>in</strong>g haben wesentlich dazu beigetragen, dass IPv4 immer noch reicht. Dadurch<br />

wird Rout<strong>in</strong>g aufwändiger, da Router nicht mehr anhand <strong>der</strong> ersten vier Stellen<br />

<strong>der</strong> Adresse über <strong>der</strong>en Maske entscheiden können. Router benötigen mehr Speicher für<br />

die Komb<strong>in</strong>ation aus Netznamen und Netzmaske. Adressklassen s<strong>in</strong>d nun von eher historischer<br />

Bedeutung. Problem: Wie werden ehemals ”reservierte” Adressen, wie Broadcast und<br />

Netznamen behandelt, die nun evtl. reguläre Adressen <strong>in</strong> zusammengefaßten Netzen s<strong>in</strong>d?<br />

oben<br />

20 Das bedeutet z.B. im Beispiel, dass e<strong>in</strong>e Netzadresse wie 134.76.60.3.0 bei e<strong>in</strong>er Netzmaske von<br />

255.255.248 ungültig ist. Die Startadresse kann 134.76.[0,7,15,23,...].0 se<strong>in</strong>.


60 KAPITEL 5. TCP-IP<br />

Teilnetze Netzadresse(n) Netzmaske Broadcastadresse(n) Zahl <strong>der</strong> IP’s<br />

16 134.76.0.0 255.255.240.0 134.76.15.255 4.096<br />

134.76.16.0 255.255.240.0 134.76.31.255 4.096<br />

134.76.32.0 255.255.240.0 134.76.47.255 4.096<br />

134.76.48.0 255.255.240.0 134.76.63.255 4.096<br />

134.76.64.0 255.255.240.0 134.76.79.255 4.096<br />

134.76.80.0 255.255.240.0 134.76.95.255 4.096<br />

134.76.96.0 255.255.240.0 134.76.111.255 4.096<br />

134.76.112.0 255.255.240.0 134.76.127.255 4.096<br />

134.76.128.0 255.255.240.0 134.76.143.255 4.096<br />

134.76.144.0 255.255.240.0 134.76.159.255 4.096<br />

134.76.160.0 255.255.240.0 134.76.175.255 4.096<br />

134.76.176.0 255.255.240.0 134.76.191.255 4.096<br />

134.76.192.0 255.255.240.0 134.76.207.255 4.096<br />

134.76.208.0 255.255.240.0 134.76.223.255 4.096<br />

134.76.224.0 255.255.240.0 134.76.239.255 4.096<br />

134.76.240.0 255.255.240.0 134.76.255.255 4.096<br />

...<br />

Tabelle 5.8: Beispiele e<strong>in</strong>er Netzaufteilung mit verschiedenen Subnetzmasken<br />

5.7.6 QoS-Rout<strong>in</strong>g<br />

IP selbst und die meisten <strong>Netzwerk</strong>technologien kennen ke<strong>in</strong> o<strong>der</strong> nur sehr beschränktes<br />

Quality of Service (QoS). Paketorientierte <strong>Netzwerk</strong>e s<strong>in</strong>d zuallererst für gleichberechtigten<br />

Zugriff ohne Ressourcen-Monopolisierung ausgelegt. ATM unterstützt zwar QoS, jedoch<br />

ke<strong>in</strong>e e<strong>in</strong>fache Verknüpfung mit IP über Schichtgrenzen h<strong>in</strong>weg. IP ist verb<strong>in</strong>dungslos, mit<br />

dem Verlassen des Paketes <strong>der</strong> Masch<strong>in</strong>e ist ke<strong>in</strong> <strong>E<strong>in</strong></strong>fluss mehr möglich.<br />

IP-Hea<strong>der</strong> enthält e<strong>in</strong> Optionenfeld für QoS-Flags (dieses wird jedoch nur selten ausgelesen):<br />

• M<strong>in</strong>imum Delay<br />

• Maximum Throughput<br />

• Maximum Reliability<br />

• M<strong>in</strong>imize Costs<br />

Komb<strong>in</strong>ationen aus diesen Fel<strong>der</strong>n s<strong>in</strong>d möglich. Verschiedene Dienste können so unterschiedliche<br />

Merkmale realisieren (Sprache, FTP, SSH,...).<br />

Probleme: Verletzung des Schichtenmodells, da Applikation den IP-Hea<strong>der</strong> mitbestimmen<br />

muss; alle Router müssen Fel<strong>der</strong> auswerten; Prioritäten können sich auf dem Weg<br />

än<strong>der</strong>n (z.B. <strong>E<strong>in</strong></strong>schätzung des Kostenfaktors von Leitungen); Pakete können auf ihrem<br />

Weg umgeschrieben werden. Trotzdem kann QoS-Rout<strong>in</strong>g beim Anschluss von LANs an<br />

das Internet über schmale Upl<strong>in</strong>ks (Bsp. WG-o<strong>der</strong> Firmen-Router an DSL) s<strong>in</strong>nvoll se<strong>in</strong>.<br />

Router s<strong>in</strong>d bereits mit ”normalem” Rout<strong>in</strong>g stark belastet - zusätzliche Regeln können<br />

die Belastung nur erhöhen. Deshalb: Meistens ist es wie<strong>der</strong> ”e<strong>in</strong>facher” die Bandbreite zu<br />

erhöhen, als aufwändiges QoS-Rout<strong>in</strong>g e<strong>in</strong>zusetzen. Im LAN-Bereich gibt es Überlegungen<br />

zu QoS bei Ethernet - IPv6 soll e<strong>in</strong>iges mehr an QoS implementieren.


5.8. ADDRESS RESOLUTION PROTOCOL 61<br />

5.8 Address Resolution Protocol<br />

Jede Ethernet-, Funk- TokenR<strong>in</strong>g-Karte besitzt e<strong>in</strong>e e<strong>in</strong>deutige Hardware-Adresse, die auch<br />

als MAC-Adresse bezeichnet wird. LAN-Karten bedienen sich dieser MAC-Adresse, die für<br />

die Aussendung und den Empfang von Datagrammen über das <strong>Netzwerk</strong> unerlässlich ist. Sie<br />

können nur auf Datagramme antworten, die im Empfänger-Feld e<strong>in</strong>e Rundsende-Adresse,<br />

e<strong>in</strong>e bekannte Verteilsende-Adresse o<strong>der</strong> e<strong>in</strong>e auf die betreffende LAN-Karte h<strong>in</strong>weisende<br />

Individual-Adresse aufweisen.<br />

Die MAC-Adresse steht bereits beim Erwerb des <strong>Netzwerk</strong>geräs fest. Sie ist fest e<strong>in</strong>kodiert<br />

z.B. <strong>in</strong> e<strong>in</strong>er <strong>Netzwerk</strong>-Karte. Sie än<strong>der</strong>t sich nicht und ist weltweit theoretisch 100 %<br />

e<strong>in</strong>deutig. Der flache Adressraum umfasst 48 bit und die Adressen werden traditionell hexadezimal<br />

dargestellt. Man werfe e<strong>in</strong>fach mal e<strong>in</strong>en Blick auf die Unterseite des eigenen Laptops<br />

o<strong>der</strong> den Aufdruck auf e<strong>in</strong>er <strong>Netzwerk</strong>karte und wird dort e<strong>in</strong>e typische Darstellung<br />

<strong>der</strong> Form: 00:0a:e4:35:34:6a f<strong>in</strong>den. Ethernet verwendet e<strong>in</strong> ganz eigenes Adressierungsschema,<br />

das nach komplett an<strong>der</strong>en Kriterien funktioniert, als beispielsweise vom Internet<br />

Protokoll gewohnt. Es gibt lediglich e<strong>in</strong>e Aufteilung <strong>der</strong> Adresse <strong>in</strong> e<strong>in</strong> Hersteller-Prefix und<br />

e<strong>in</strong> e<strong>in</strong>deutiges Suffix für jede Karte e<strong>in</strong>es Herstellers.<br />

5.8.1 ARP - Hilfsprotokoll des IP<br />

Das Address Resolution Protocol wird als B<strong>in</strong>deglied zwischen <strong>der</strong> eigentlichen <strong>Netzwerk</strong>-<br />

Hardware e<strong>in</strong>erseits und dem Internet Protokoll (IP) an<strong>der</strong>seits benötigt. An<strong>der</strong>s als bei<br />

Punkt-zu-Punkt-Verb<strong>in</strong>dungen, wie beispielsweise ISDN agieren <strong>in</strong> e<strong>in</strong>em Ethernet viele<br />

Masch<strong>in</strong>en gleichberechtigt. Damit reicht es nicht, e<strong>in</strong>fach das Paket an e<strong>in</strong>em Ende <strong>der</strong><br />

Leitung ”abzuliefern” und nach kurzer Verzögerung am an<strong>der</strong>en Ende zu erwarten.<br />

IP-Adressen kann man nicht e<strong>in</strong>fach nehmen, da man ja beim Kauf e<strong>in</strong>er Ethernet-Karte<br />

noch gar nicht wissen kann, <strong>in</strong> welchem Netz e<strong>in</strong>e Masch<strong>in</strong>e betrieben wird. Ebenso wollte<br />

sicherlich ke<strong>in</strong>er e<strong>in</strong>sehen, dass e<strong>in</strong> Laptop entwe<strong>der</strong> nur zu Hause o<strong>der</strong> im Firmennetz an<br />

e<strong>in</strong>er bestimmten Stelle angeklemmt werden kann,o<strong>der</strong> dass man sich e<strong>in</strong>en neuen <strong>Netzwerk</strong>adapter<br />

kaufen muss, wenn sich die IP än<strong>der</strong>t. Deshalb verwendet man beim Ethernet<br />

e<strong>in</strong>en eigenen Adressraum mit Eigenschaften, die sich zum IP-Adressraum stark unterscheiden.<br />

Die IP-Adresse ist, wie bereits oben erläutert, im OSI-Schichtenmodell <strong>der</strong> Vermittlungsschicht<br />

zugeordnet und von <strong>der</strong> <strong>in</strong>dividuellen MAC-Adresse unabhängig. Jede Kommunikation<br />

mittels TCP/ IP wird durch die IP-Adresse e<strong>in</strong>geleitet, wodurch für den Aufbau des<br />

Dialogs die MAC-Adresse als sekundär zurückgestuft wird. End-zu-End-Kommunikationen<br />

bedienen sich also <strong>der</strong> IP-Adresse, woh<strong>in</strong>gegen bei den dazwischen liegenden Knotenpunkten<br />

(Hops) <strong>in</strong> den genannten <strong>Netzwerk</strong>typen die MAC-Adresse genutzt wird.<br />

Jedem Host im Netz wurde aber nun auch noch e<strong>in</strong>e IP-Adresse zugeordnet und damit<br />

hat das darunterliegende broadcastfähige LAN e<strong>in</strong> Problem: Mit <strong>der</strong> IP-Adresse 172.16.23.1<br />

weiß es nichts anzufangen, mit <strong>der</strong> MAC-Adresse 00:08:74:46:DC:9C allerd<strong>in</strong>gs schon. <strong>E<strong>in</strong></strong><br />

Vermittlungsdienst muss her: Das Adress Resolution Protocol (ARP) übersetzt die IP-<br />

Adressen <strong>in</strong> Ethernet-Adressen. So gesehen gehört es eigentlich auch nicht vollständig <strong>in</strong><br />

den L<strong>in</strong>k Layer, son<strong>der</strong>n ist irgendwo zwischen L<strong>in</strong>k und Network Layer e<strong>in</strong>zuordnen. In den<br />

ersten beiden 16 bit Fel<strong>der</strong>n des ARP-Paketes stehen <strong>der</strong> Hardwaretyp und die benutzten<br />

Protokolladressen. Im Falle von IP auf <strong>der</strong> Basis von Ethernet steht im ersten Feld e<strong>in</strong>e 1<br />

für Ethernet und im zweiten Feld 0x0800 für das IP-Protokoll, wie es auch im Ethernet-<br />

Rahmen markiert wird. Die beiden 8bit Fel<strong>der</strong> zu Beg<strong>in</strong>n <strong>der</strong> nächsten Zeile bestimmen die<br />

Anzahl <strong>der</strong> Bytes für die Hardware- und Protokolladressen, <strong>in</strong> diesem Fall 6Byte für die<br />

Ethernetadresse und 4 Byte für die IP-Nummer. Das sich anschließende ”Operation”-Feld


62 KAPITEL 5. TCP-IP<br />

HADDR LENGHT<br />

32 bit<br />

HARDWARE ADDRESS TYPE PROTOCOL ADDRESS TYPE<br />

PADDR LENGHT<br />

SENDER HADDR (last 2 Byte)<br />

SENDER PROTOCOL ADDRESS (last 2 Byte)<br />

SENDER HARDWARE ADDRESS (first 4 Byte)<br />

TARGET HARDWARE ADDRESS (last 4 Byte)<br />

TARGET PROTOCOL ADDRESS (all 4 Byte)<br />

OPERATION<br />

SENDER PROTOCOL ADDRESS (first 2 Byte)<br />

TARGET HADDR (first 2 Byte)<br />

Abbildung 5.5: Aufbau e<strong>in</strong>es ARP Pakets<br />

bestimmt, ob es sich um e<strong>in</strong>e Anfrage (Wert 1) o<strong>der</strong> e<strong>in</strong>e Antwort (Wert 2) handelt. ARP<br />

be<strong>in</strong>haltet Fel<strong>der</strong> für zwei Adressb<strong>in</strong>dungen, wobei e<strong>in</strong>e dem Sen<strong>der</strong> und die an<strong>der</strong>e dem<br />

Empfänger entspricht, die <strong>in</strong> den ”Target”-Fel<strong>der</strong>n genannt wird.<br />

In den ersten TCP/IP-fähigen Rechnern wurde e<strong>in</strong>e manuell erstellte Tabelle verwendet<br />

21 , die die Zuordnung zwischen MAC- und IP-Adresse <strong>in</strong>direkt automatisieren sollte.<br />

In den meisten broadcast-fähigen Netzen werden davon losgelöst zusätzlich o<strong>der</strong> ersetzend<br />

Rout<strong>in</strong>g-Informationen komplett automatisch mittels dem Adress Resolution Protocol ausgetauscht,<br />

welches <strong>in</strong> RFC 826 (An Ethernet Address Resolution Protocol) def<strong>in</strong>iert wird.<br />

Je<strong>der</strong> Host verwaltet dabei dynamisch den sogenannten ARP-Cache mit den relationalen<br />

IP-/MAC-<strong>E<strong>in</strong></strong>trägen.<br />

5.8.2 Funktionsweise<br />

ARP arbeitet dabei ziemlich geräuschlos im H<strong>in</strong>tergrund. Man muss nichts extra <strong>in</strong>stallieren,<br />

da diese Fähigkeit eigentlich <strong>in</strong> jeden L<strong>in</strong>uxkernel schon h<strong>in</strong>e<strong>in</strong>kompiliert ist. Die<br />

Programme zur Konfiguration und Abfrage des ARP-Caches s<strong>in</strong>d auf fast jedem L<strong>in</strong>ux-<br />

Rechner <strong>in</strong>stalliert:<br />

mobile:~ # ip neighbor show<br />

10.8.4.1 dev eth0 lladdr 00:0a:e4:35:33:7a REACHABLE<br />

10.8.4.2 dev eth0 lladdr 00:0c:6f:45:03:0d REACHABLE<br />

10.8.4.254 dev eth0 lladdr 00:09:37:31:3a:13 REACHABLE<br />

In e<strong>in</strong>em gegebenen Subnetz, hier 10.8.4.0/255.255.255.0, werden alle Pakete, die e<strong>in</strong>e Masch<strong>in</strong>e<br />

verlassen sollen über das lokale Ethernet ausgetauscht. Dieses trifft auf fast alle<br />

Masch<strong>in</strong>en mit Internet-Verb<strong>in</strong>dung zu, welche nicht ausschliesslich an e<strong>in</strong>er Modem- o<strong>der</strong><br />

ISDN-Verb<strong>in</strong>dung hängen. Masch<strong>in</strong>en <strong>in</strong> diesem Subnetz verfügen meist über genau e<strong>in</strong>e<br />

<strong>Netzwerk</strong>karte, ausser sie stellen Gateway-Funktionen <strong>in</strong> an<strong>der</strong>e Netze bereit. Dann bezeichnet<br />

man sie üblicherweise als Router. So gibt es zwei Szenarien:<br />

1. Die Masch<strong>in</strong>e A will mit e<strong>in</strong>er Masch<strong>in</strong>e B im selben Subnetz kommunizieren. Die<br />

Pakete können ohne die Beteiligung weiterer Masch<strong>in</strong>en direkt über das Ethernet<br />

h<strong>in</strong>- und hergeschickt werden.<br />

21 Diese Fähigkeit ist heute noch vorhanden: Mit dem Kommando arp können <strong>der</strong> Kernel-ARP-Tabelle<br />

statische <strong>E<strong>in</strong></strong>träge h<strong>in</strong>zugefügt o<strong>der</strong> welche gelöscht werden.


5.8. ADDRESS RESOLUTION PROTOCOL 63<br />

2. Die Masch<strong>in</strong>e A will e<strong>in</strong> Paket an irgende<strong>in</strong>e Masch<strong>in</strong>e ausserhalb des Subnetzes schicken.<br />

Da nur <strong>der</strong> Router R, <strong>der</strong> deshalb auch als Default-Gateway bezeichnet wird,<br />

den Weg <strong>in</strong> die weite Welt kennt, liefert A die Daten an R. R kümmert sich dann<br />

um die Weitersendung und leitet A eventuell zurückommende Antwortpakete o<strong>der</strong><br />

Fehlermeldungen zu.<br />

Die Art <strong>der</strong> Daten, die ausgetauscht werden, spielt auf den unteren <strong>Netzwerk</strong>schichten<br />

unterhalb von IP ke<strong>in</strong>e Rolle. Jedes IP-Paket wird an den Data-L<strong>in</strong>k Layer weitergereicht,<br />

um dort versendet zu werden. Mit <strong>der</strong> IP-Adresse von B, die als bekannt vorausgesetzt<br />

wird, kommt A hier nicht weiter und muss deshalb die MAC-Adresse von B <strong>in</strong> Erfahrung<br />

br<strong>in</strong>gen. Der Ablauf e<strong>in</strong>er ARP-Sitzung folgt normalerweise e<strong>in</strong>em strikten Protokoll:<br />

10.8.4.1 10.8.4.2<br />

A B<br />

00:01:AA 00:01:BB<br />

ARP-Reply:<br />

"10.8.1.2 is at 00:01:BB..."<br />

Abbildung 5.6: Die Station mit <strong>der</strong> passenden IP-Adresse schickt e<strong>in</strong> ARP-Reply<br />

1. Zu allererst schaut A <strong>in</strong> se<strong>in</strong>em ARP-Cache nach, ob es nicht vielleicht bereits dasgesuchte<br />

Adress-Paar bzw. die gesuchte MAC-Adressen kennt. In diesem Cache werden<br />

festgestellte Paarungen aus früheren Sitzungen für e<strong>in</strong>e Weile vorgehalten, um nicht<br />

ständig wie<strong>der</strong> neu fragen zu müssen. Dieses würde unnötigen <strong>Netzwerk</strong>-Verkehr produzieren.<br />

2. Falls ke<strong>in</strong> <strong>E<strong>in</strong></strong>trag vorhanden ist, wird vom Initiator mit Hilfe von ARP die MAC-<br />

Adresse <strong>der</strong> fraglichen IP-Adresse zu ermitteln versucht. In <strong>der</strong> Hoffnung diese Frage<br />

wenigstens temporär aus <strong>der</strong> Welt zu schaffen, sendet A e<strong>in</strong> ARP-Datagramm <strong>in</strong>klusive<br />

<strong>der</strong> zu erfragenden IP-Adresse und e<strong>in</strong>er sogenannte ARP-Anfor<strong>der</strong>ung an alle<br />

LAN-Karten mittels <strong>der</strong> bekannten MAC-Broadcast-Adresse (0xFFFF FFFF FFFF).<br />

ARP setzt <strong>in</strong> dieser verhältnismässig globalen Anfor<strong>der</strong>ung se<strong>in</strong>en eigenen Ethernet-<br />

Typ 0x08086 e<strong>in</strong>, damit <strong>der</strong> Schrei von allen verme<strong>in</strong>dlich betroffenen Knotenpunkten<br />

wahrgenommen wird. Dieses Rundschreiben ”Ich kenne die MAC-Adresse X, die IP-<br />

Adresse A und ich suche die MAC-Adresse desjenigen, <strong>der</strong> die IP-Adresse B hat.” wird<br />

von allen aktiven Masch<strong>in</strong>en im <strong>Netzwerk</strong> bemerkt. Falls <strong>in</strong>nerhalb e<strong>in</strong>es def<strong>in</strong>ierten<br />

Timeouts im Sekundenbereich ke<strong>in</strong>e Antwort auf die Broadcast-Anfrage e<strong>in</strong>geht, so<br />

wird die Anfor<strong>der</strong>ung erneut gestellt.<br />

3. Der Rechner B, und nur dieser, wird auf dieses Broadcast-Request antworten: ”Die<br />

IP-Adresse von B ist unter <strong>der</strong> MAC-Adresse Y zu erreichen”. In <strong>der</strong> ARP-Antwort<br />

s<strong>in</strong>d dann alle Fel<strong>der</strong> entsprechend gesetzt.<br />

4. Für e<strong>in</strong>e gewisse Zeit notiert sich A dieses Paar <strong>in</strong> se<strong>in</strong>em Cache. Da es den an<strong>der</strong>en<br />

Teilnehmern den Aufwand spart, später ebenfalls nach dieser Paarung fragen zu<br />

müssen, merkt sich die befragte Masch<strong>in</strong>en ebenfalls diese Paarung, solange <strong>der</strong> Cache<br />

nicht aufgrund potentieller Überfüllung überschrieben wird. Sie tut es auf ”Vorrat”<br />

für den Fall, dass sie später ebenfalls Pakete an B schicken will. Bei e<strong>in</strong>er eventuell<br />

nachfolgenden Anfor<strong>der</strong>ung ist es daher auch nicht mehr nötig den ARP-Dialog


64 KAPITEL 5. TCP-IP<br />

<strong>in</strong> umgekehrter Richtung walten zu lassen, da die relevanten Daten beim Zielsystem<br />

bereits bekannt s<strong>in</strong>d.<br />

10.8.4.1 10.8.4.2<br />

A B<br />

00:01:AA 00:01:BB<br />

Ethernet-Kommunikation<br />

00:01:AA 00:01:BB<br />

IP-Kommunikation<br />

10.8.4.1 10.8.4.2<br />

Abbildung 5.7: Nach dem Austausch <strong>der</strong> MACs erfolgt die IP-Kommunikation<br />

ARP-Datagramme werden von Routern nicht weitergeleitet, da sie <strong>in</strong> <strong>der</strong> IP-Schicht operieren<br />

und auf MAC-Broadcasts grundsätzlich nicht reagieren können und dürfen. Router<br />

stellen daher verwertbare Puffer zwischen e<strong>in</strong>zelnen Rundsende-Subnetzen dar. Mit ihrer<br />

Hilfe kann überflüssiger Traffic im gesamten <strong>Netzwerk</strong> e<strong>in</strong>gedämmt und auf effektiv betroffene<br />

Subnetze m<strong>in</strong>imiert werden.<br />

5.8.3 ARP unter L<strong>in</strong>ux<br />

Unter L<strong>in</strong>ux erfährt man die MAC-Adresse mit:<br />

l<strong>in</strong>ux02:~ # ip l<strong>in</strong>k show<br />

1: lo: mtu 16436 qdisc noqueue<br />

l<strong>in</strong>k/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00<br />

2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000<br />

l<strong>in</strong>k/ether 00:e0:81:55:06:01 brd ff:ff:ff:ff:ff:ff<br />

3: eth1: mtu 1500 qdisc noop qlen 1000<br />

l<strong>in</strong>k/ether 00:e0:81:55:06:00 brd ff:ff:ff:ff:ff:ff<br />

4: sit0: mtu 1480 qdisc noop<br />

l<strong>in</strong>k/sit 0.0.0.0 brd 0.0.0.0<br />

Die beiden Ethernet-Interfaces haben e<strong>in</strong>e gültige Adresse, Loopback (lo) und das Tunnel-<br />

Interface (sit0) benötigen ke<strong>in</strong>e. Zum <strong>Netzwerk</strong>gerät zugeordnete IP-Adressen haben das<br />

bekannte Format bestehend aus vier durch drei Punkte getrennte Blöcke von Dezimalzahlen<br />

10.8.4.254. Zwar arbeiten die Rechner <strong>in</strong>tern mit <strong>der</strong> B<strong>in</strong>ärdarstellung, trotzdem<br />

s<strong>in</strong>d die Unterschiede zwischen MAC- und IP-Adresse groß. ARP arbeitet beim Dolmetschen<br />

geräuschlos im H<strong>in</strong>tergrund. Man muss nichts extra <strong>in</strong>stallieren, da diese Fähigkeit<br />

im L<strong>in</strong>ux-Kernel vorhanden ist. Die Programme arp und ip zur Konfiguration und Abfrage<br />

des ARP-Caches s<strong>in</strong>d auf fast jedem L<strong>in</strong>ux-Rechner <strong>in</strong>stalliert.<br />

mobile root # arp -n<br />

Address HWtype HWaddress Flags Mask Iface<br />

10.8.4.222 ether 00:03:47:B9:DE:36 C eth0<br />

10.8.4.204 ether 00:02:B3:C2:55:91 C eth0<br />

10.8.4.254 ether 00:0C:6E:15:03:0E C eth0<br />

mobile root # arp -d 10.8.4.204<br />

mobile root # arp -n<br />

Address HWtype HWaddress Flags Mask Iface<br />

10.8.4.222 ether 00:03:47:B9:DE:36 C eth0<br />

10.8.4.204 (<strong>in</strong>complete) eth0<br />

10.8.4.254 ether 00:0C:6E:15:03:0E C eth0


5.8. ADDRESS RESOLUTION PROTOCOL 65<br />

mobile root # arp -n<br />

Address HWtype HWaddress Flags Mask Iface<br />

10.8.4.222 ether 00:03:47:B9:DE:36 C eth0<br />

10.8.4.204 ether 00:02:B3:C2:55:91 C eth0<br />

10.8.4.254 ether 00:0C:6E:15:03:0E C eth0<br />

mobile root # arp -s 10.8.4.204 00:11:22:33:44:55<br />

mobile root # arp -n<br />

Address HWtype HWaddress Flags Mask Iface<br />

10.8.4.222 ether 00:03:47:B9:DE:36 C eth0<br />

10.8.4.204 ether 00:11:22:33:44:55 CM eth0<br />

10.8.4.254 ether 00:0C:6E:15:03:0E C eth0<br />

mobile root # p<strong>in</strong>g 10.8.4.204<br />

PING 10.8.4.204 (10.8.4.204) 56(84) bytes of data.<br />

--- 10.8.4.204 p<strong>in</strong>g statistics ---<br />

1 packets transmitted, 0 received, 100% packet loss, time 0ms<br />

mobile root # arp -s 10.8.4.204 00:02:B3:C2:55:91<br />

mobile root # p<strong>in</strong>g 10.8.4.204<br />

PING 10.8.4.204 (10.8.4.204) 56(84) bytes of data.<br />

64 bytes from 10.8.4.204: icmp_seq=1 ttl=64 time=0.164 ms<br />

--- 10.8.4.204 p<strong>in</strong>g statistics ---<br />

1 packets transmitted, 1 received, 0% packet loss, time 0ms<br />

rtt m<strong>in</strong>/avg/max/mdev = 0.164/0.164/0.164/0.000 ms<br />

ARP verlässt sich auf die MAC-Adresse des Ethernet-Adapters, so wie sie vom Betriebssystem<br />

mitgeteilt wird. Wenn man die MAC-Adresse e<strong>in</strong>es Interfaces än<strong>der</strong>n will, kann man<br />

als Adm<strong>in</strong>istrator dazu das Kommando ip l<strong>in</strong>k set verwenden:<br />

l<strong>in</strong>ux:~ # ip l<strong>in</strong>k set eth0 down<br />

l<strong>in</strong>ux:~ # ip l<strong>in</strong>k set eth0 address 00:20:AA:20:AA:20<br />

l<strong>in</strong>ux:~ # ip l<strong>in</strong>k show eth0<br />

2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000<br />

l<strong>in</strong>k/ether 00:20:AA:20:AA:20 brd ff:ff:ff:ff:ff:ff<br />

Das Ganze geht auch mit ifconfig:<br />

l<strong>in</strong>ux:~ # ifconfig eth1<br />

eth1 Protokoll:Ethernet Hardware Adresse 00:00:0E:7D:71:DF<br />

BROADCAST NOARP MTU:1500 Metric:1<br />

RX packets:0 errors:0 dropped:0 overruns:0 frame:0<br />

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0<br />

collisions:0 Sendewarteschlangenlänge:0<br />

RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)<br />

l<strong>in</strong>ux:~ # ifconfig eth1 down<br />

l<strong>in</strong>ux:~ # ifconfig eth1hw ether 00:4F:0E:7D:71:DF<br />

l<strong>in</strong>ux:~ # ifconfig eth1<br />

eth1 Protokoll:Ethernet Hardware Adresse 00:4F:0E:7D:71:DF<br />

<strong>in</strong>et6 Adresse: fe80::24f:eff:fe7d:71df/64 Gültigkeitsbereich:Verb<strong>in</strong>dung<br />

UP BROADCAST RUNNING NOARP MTU:1500 Metric:1<br />

RX packets:0 errors:0 dropped:0 overruns:0 frame:0<br />

TX packets:1 errors:0 dropped:0 overruns:0 carrier:0<br />

collisions:0 Sendewarteschlangenlänge:0<br />

RX bytes:0 (0.0 b) TX bytes:70 (70.0 b)<br />

Das bedeutet schlicht und e<strong>in</strong>fach, dass man sich nicht darauf verlassen kann, dass die im<br />

Netz sichtbare MAC-Adresse wirklich die auf dem <strong>Netzwerk</strong>adapter programmierte ist. Im


66 KAPITEL 5. TCP-IP<br />

WLAN lässt sich die MAC-Adresse sche<strong>in</strong>bar auch auf diese Weise än<strong>der</strong>n. Da sie jedoch<br />

von <strong>der</strong> Firmware <strong>der</strong> Karte noch <strong>in</strong> an<strong>der</strong>en Schichten benutzt wird, kommt nach dieser<br />

Art <strong>der</strong> Än<strong>der</strong>ung ke<strong>in</strong>e Funkverb<strong>in</strong>dung mehr zustande. Es gibt jedoch Programme, mit<br />

denen sich per Firmware die MAC-Adresse von WLAN-Karten än<strong>der</strong>n lässt.<br />

5.8.4 <strong>E<strong>in</strong></strong>gebaute Sicherheitslücken<br />

Normalerweise s<strong>in</strong>d ke<strong>in</strong>e Kontrollmechanismen vorhanden, die e<strong>in</strong>e MAC-Adresse im Namen<br />

mehrerer IP-Adressen kompetent verifizieren kann. Angreifer können sich diese Eigenheit<br />

von ARP zunutze machen.<br />

Die Schwäche von ARP liegt <strong>in</strong> se<strong>in</strong>er Vertrauensseligkeit. ARP stammt aus den frühen<br />

Zeiten <strong>der</strong> IP-Kommunikation, wo e<strong>in</strong> ”es geht” und möglichst schonen<strong>der</strong> Umgang mit<br />

<strong>Netzwerk</strong>resourcen wichtiger waren, als e<strong>in</strong>e sauber implementierte und unter umständen<br />

sehr aufwändige Authentifikation. Wenn e<strong>in</strong> Endsystem e<strong>in</strong> ARP-Reply aufschnappt, dann<br />

wird dieser im Cache abgelegtt, unabhängig davon, ob zuvor nach dieser Adresse gefragt<br />

wurde. Hier<strong>in</strong> verbirgt sich die grundlegende Sicherheitslücke. Aber auch e<strong>in</strong> sche<strong>in</strong>bar folgerichtiger<br />

Ansatz, e<strong>in</strong>e Adresse nur dann zu speichern, wenn vorher genau nach dieser<br />

Adresse gefragt wurde, lässt sich leicht austricksen, <strong>in</strong>dem e<strong>in</strong> potenzieller Angreifer e<strong>in</strong>fach<br />

schneller antwortet, als <strong>der</strong> Inhaber <strong>der</strong> Adresse. So kann <strong>der</strong> Angreifer natürlich e<strong>in</strong>e<br />

beliebige Antwort geben, wie beispielsweise se<strong>in</strong>e eigene Adresse. Ausgangssituation für das<br />

10.8.4.1 10.8.4.2<br />

A B<br />

ARP-Reply:<br />

"10.8.1.1 is at 00:b0:11:33..."<br />

00:b0:11:11:11:11 00:b0:11:22:22:22<br />

10.8.4.50<br />

P<br />

00:b0:11:33:33:33<br />

Abbildung 5.8:<br />

ARP-Reply:<br />

"10.8.1.1 is at 00:b0:11:33..."<br />

im folgenden beschriebene ARP-Spoof<strong>in</strong>g sei die folgende: Die beiden Hosts A und B kommunizieren<br />

mite<strong>in</strong>an<strong>der</strong>. A benutzt die IP-Adresse 10.8.4.1 und die MAC 00:b0:11:11:11:11,<br />

B 10.8.4.2 und MAC 00:b0:11:22:22:22. Der angreifende Host P hat die IP 10.8.4.3 und<br />

dazugehörige MAC 00:b0:11:33:33:33. Er möchte ablauschen, was A und B mite<strong>in</strong>an<strong>der</strong> zu<br />

schnacken haben.<br />

Host P startet se<strong>in</strong>en Angriff, <strong>in</strong>dem er die ARP-Caches <strong>der</strong> Opfer A und B ”vergiftet” 22 ,<br />

d.h. er <strong>in</strong>jiziert gefälschte ARP-Antworten <strong>in</strong> das lokale Subnetz. P schickt an A e<strong>in</strong> ARP-<br />

Reply, dass die Information enthält, dass <strong>der</strong> Rechner B mit <strong>der</strong> IP-Adresse 2 unter <strong>der</strong><br />

MAC-Adresse 00:b0:11:33:33:33 zu erreichen ist. In Wirklichkeit bekomm nun aber P die<br />

Pakete von A für B zugeschickt. Ebenso erhält B gefälschte Pakete von P, dass be<strong>in</strong>halten,<br />

dass A mit <strong>der</strong> IP-Adresse 1 unter <strong>der</strong> MAC-Adresse 00:b0:11:33:33:33 angesprochen wird.<br />

In Zukunft schickt also A se<strong>in</strong>en Verkehr für B statt direkt zu B <strong>in</strong> Wirklichkeit zu P. Bei<br />

B gestaltet es sich genauso, er schickt se<strong>in</strong>en Verkehr für A zu P. Der Angreifer P muss nun<br />

e<strong>in</strong>fach die Pakete korrekt weiterreichen, <strong>in</strong>dem im Kernel IP-Forward<strong>in</strong>g e<strong>in</strong>geschltet wird.<br />

Die korrekten IP-Adressen stehen ja <strong>in</strong> den Paket-Hea<strong>der</strong>n, P kennt auch die korrekten<br />

MAC-Adressen. Wenn P noch e<strong>in</strong> wenig cleverer ist, dann passt er noch den HOP-Count<br />

im IP-Hea<strong>der</strong> an, bevor das Paket se<strong>in</strong> Interface verlässt.<br />

Da je<strong>der</strong> Router im IP-Hea<strong>der</strong> den Hop-Counter um e<strong>in</strong>s reduziert, muss dieser wie<strong>der</strong><br />

erhöht werden. An<strong>der</strong>nfalls würde auffallen, dass <strong>der</strong> Weg von A nach B plötzlich um<br />

22 hiervon stammt <strong>der</strong> Ausdruck ”Poision<strong>in</strong>g”


5.8. ADDRESS RESOLUTION PROTOCOL 67<br />

00:b0:11:11:11:11 00:b0:11:22:22:22<br />

10.8.4.1 10.8.4.2<br />

IP-Kommunikation<br />

A B<br />

Ethernet-Kommunikation<br />

00:b0:11:11... <br />

00:b0:11:33...<br />

10.8.4.1 10.8.4.2<br />

10.8.4.50<br />

P<br />

00:b0:11:33:33:33<br />

Abbildung 5.9:<br />

Ethernet-Kommunikation<br />

00:b0:11:33:33:33 <br />

00:b0:11:22:22:22<br />

m<strong>in</strong>destens e<strong>in</strong>en Router länger geworden ist. Im Zuge <strong>der</strong> Weiterleitung <strong>der</strong> Pakete können<br />

diese bequem mitgelesen werden. Dabei kann <strong>der</strong> Angreifer möglicherweise Passwörter und<br />

an<strong>der</strong>e geheime Daten auslesen. Zudem können Pakete auch problemlos manipuliert werden,<br />

was die Attacke noch mächtiger macht. Da <strong>der</strong> Angreifer sozusagen direkt auf dem logischen<br />

Verb<strong>in</strong>dungspfad zwischen den Opfern sitzt, wird diese Art e<strong>in</strong>es Angriffs auch als ”Man-<br />

In-The-Middle” bezeichnet.<br />

00:b0:11:11:11:11 00:b0:11:22:22:22<br />

10.8.4.1 10.8.4.2<br />

IP-Kommunikation<br />

A B<br />

Paketlaufzeit1<br />

Hop-Count: TTL-1<br />

10.8.4.1 10.8.4.2<br />

10.8.4.50<br />

P<br />

00:b0:11:33:33:33<br />

Abbildung 5.10:<br />

Paketlaufzeit2<br />

Wenn <strong>der</strong> Angriff wie<strong>der</strong> beendet wird, muss <strong>der</strong> ARP-Cache <strong>der</strong> Opfer wie<strong>der</strong> aufgeräumt<br />

werden, d.h. es müssen erneut gefälschte ARP-Replies an A und B geschickt werden,<br />

zur Abwechslung nun mit den korrekten Paarungen von MAC- und IP-Adressen. Passiert<br />

dies nicht und P entfernt sich aus dem Netz o<strong>der</strong> deaktiviert se<strong>in</strong> IP-Forward<strong>in</strong>g, dann<br />

schicken A und B weiterh<strong>in</strong> ihren Verkehr an P. Dieser leitet ihn aber nicht mehr weiter:<br />

Die ganze Sache fällt wegen <strong>der</strong> <strong>Netzwerk</strong>unterbrechung unter Umständen auf.<br />

Insgesamt kann man festhalten, dass man nur an <strong>der</strong> ARP-Reply alle<strong>in</strong> ke<strong>in</strong>e Auffälligkeit<br />

feststellen kann. Die Sen<strong>der</strong> MAC Address stimmt übere<strong>in</strong> mit <strong>der</strong> Absen<strong>der</strong>-Adresse<br />

des umgebenden Ethernet-Frames, so dass es sich bei diesem Paket auch durchaus um e<strong>in</strong><br />

echtes ARP-Reply handeln könnte. Tatsächlich ist dieses Paket aber gefälscht und Teil e<strong>in</strong>er<br />

ARP-Poison-Attacke. Beim Beenden <strong>der</strong> Attacke verrät sich <strong>der</strong> Angreifer. Denn er schickt<br />

von se<strong>in</strong>er MAC-Adresse aus e<strong>in</strong>e ARP-Reply, die angibt, dass se<strong>in</strong>e IP-Adresse jetzt unter<br />

e<strong>in</strong>er an<strong>der</strong>en MAC-Adresse zu erreichen ist. D.h. die Sen<strong>der</strong> MAC Address stimmt <strong>in</strong><br />

diesem Fall nicht übere<strong>in</strong> mit <strong>der</strong> Absen<strong>der</strong>-Adresse des umschließenden Ethernet-Frames.<br />

Hier kann man den Angreifer entdecken und se<strong>in</strong>e MAC-Adresse ablesen.<br />

Das ”Standardwerkzeug” für e<strong>in</strong> ARP-Angriff ist das Programm ettercap. Das kann<br />

<strong>in</strong>zwischen e<strong>in</strong>e ganze Reihe von ”Man-<strong>in</strong>-the-Middle” Angriffe durchführen. Hier <strong>in</strong>teressieren<br />

jedoch nur die ARP-Angriffe. Ettercap ist e<strong>in</strong> Projekt, welches auf Sourceforge gehostet<br />

ist. Ettercap kennt drei verschiedene Benutzer<strong>in</strong>terfaces, e<strong>in</strong>e Kommandozeilenversion,<br />

die mit ”-T” aktiviert wird, e<strong>in</strong>e ncurses-basierte Textoberfläche (”-C”) und e<strong>in</strong>e grafische<br />

GTK-Version. Möchte man nun den Verkehr zwischen den beiden Masch<strong>in</strong>en 10.8.4.204<br />

und 10.8.4.204 mitschneiden, dann erreicht man das über den Aufruf:ettercap -C -M arp


68 KAPITEL 5. TCP-IP<br />

Abbildung 5.11: Ettercap <strong>in</strong> <strong>der</strong> Ncurses-Ausführung<br />

/10.8.4.222/ /10.8.4.204/. Mit ettercap -T -M arp:remote /192.168.1.1/<br />

/192.168.1.2-10/ kann man das ARP Poison<strong>in</strong>g für das Gateway und die Rechner im<br />

Ethernet zwischen 2 und 10 laufen lassen. Die Remote-Option wird benötigt, damit man<br />

den Traffic mitbekommt, <strong>der</strong> über das Gateway geroutet wird.<br />

Ettercap dient nicht nur als Cracker-Werkzeug, es kann ebenso Adm<strong>in</strong>istratoren e<strong>in</strong>gesetzt<br />

werden, um Schwachstellen im eigenen Netz aufzuspüren. Die Illusion, dass sich<br />

Programme wie ettercap o<strong>der</strong> dsniff fernhalten lassen, kann man getrost vergessen, wo<br />

sie schon im Standardumfang vieler Von-CD-Distributionen enthalten s<strong>in</strong>d.<br />

5.8.5 Gefahrenabwehr<br />

Wie man sieht, bemerkt man e<strong>in</strong>en solchen ARP-Angriff, wenn er geschickt ausgeführt<br />

wird, also wenn <strong>der</strong> HOP-Count manipuliert wird, kaum bzw. höchstens, wenn er beendet<br />

wird. Es gibt Möglichkeiten, ARP-Angriffe zu entdecken, aber es gibt ke<strong>in</strong> wirksames Mittel<br />

gegen e<strong>in</strong>en solchen Angriff außer e<strong>in</strong>er Verschlüsselung.<br />

Das än<strong>der</strong>t natürlich auch nichts an <strong>der</strong> Tatsache, dass P immer noch die IP-Pakete<br />

abfangen und mitlesen kann, die zwischen A und B h<strong>in</strong>- und hergeschickt werden, aber<br />

wenn sie gut verschlüsselt s<strong>in</strong>d, kann P nicht mehr viel damit anfangen. Für den Fall, dass<br />

P den Inhalt manipulieren will, <strong>in</strong>sofern das überhaupt S<strong>in</strong>n macht, wenn er den Inhalt nicht<br />

lesen kann, wird das auch auffallen. Verschlüsselung ist die e<strong>in</strong>zige wirksame Möglichkeit.<br />

In kle<strong>in</strong>en <strong>Netzwerk</strong>en, mit seltenen Än<strong>der</strong>ungen <strong>der</strong> angeschlossenen Masch<strong>in</strong>e ist es sogar<br />

mit vertretbaren Aufwand möglich, ARP-Angriffe komplett auszuschliessen, <strong>in</strong>dem man<br />

ARP gar nicht erst verwendet.<br />

Die e<strong>in</strong>fachste Variante ist die manuelle und statische Zuweisung von IP-Adressen zu<br />

MAC-Adressen. Der Adm<strong>in</strong> trägt <strong>in</strong> e<strong>in</strong>er Tabelle die Paarungen e<strong>in</strong> und vergibt entsprechend<br />

dieser Tabelle freie IP-Adressen. Diese Informationen stehen allen Endsystemen zum<br />

Rout<strong>in</strong>g zur Verfügung und sie können, außer durch den Adm<strong>in</strong>, durch niemanden geän<strong>der</strong>t


5.8. ADDRESS RESOLUTION PROTOCOL 69<br />

werden. Die Verwendung von ARP wird schlichtweg überflüssig und damit fällt auch die<br />

Sicherheitslücke komplett weg.<br />

Der große Nachteil dieser Methode ist allerd<strong>in</strong>gs, dass sie nur sehr schlecht skalierbar<br />

ist, d.h. sobald das <strong>Netzwerk</strong> e<strong>in</strong>e gewisse Größe erreicht hat, ist es e<strong>in</strong>fach nicht mehr<br />

praktikabel. Dann gibt es häufige Än<strong>der</strong>ungen, die zum e<strong>in</strong>en kommuniziert werden müssen,<br />

aber zum an<strong>der</strong>en vor allem überhaupt erstmal vorgenommen werden müssen. Angenommen<br />

<strong>der</strong> Adm<strong>in</strong> ist gerade nicht da, dann kann man z.B. ke<strong>in</strong>e <strong>Netzwerk</strong>-Karte auswechseln, weil<br />

man für die neue Karte ke<strong>in</strong>e IP-Adresse hat. Deshalb wurde ARP ja erfunden.<br />

In großen <strong>Netzwerk</strong>en fällt diese Ausweichmöglichkeit also weg, weil es zu umständlich<br />

und schlecht wartbar ist. Verwendet man dann doch wie<strong>der</strong> ARP, kann man aber wenigstens<br />

die Paarungen von MAC- und IP-Adressen im Auge behalten. Zum e<strong>in</strong>en fällt es natürlich<br />

auf, wenn ständig ARP-Replies geschickt werden, zumal es für diese Replies nie e<strong>in</strong> Request<br />

gab. Die gefälschten Replies müssen ja auch ständig neu geschickt werden, denn <strong>der</strong> ARP-<br />

Cache wird nicht ewig vorgehalten, irgendwann fällt <strong>der</strong> <strong>E<strong>in</strong></strong>trag von alle<strong>in</strong>e wie<strong>der</strong> heraus.<br />

<strong>E<strong>in</strong></strong>e zur statische Festlegung <strong>der</strong> <strong>der</strong> ARP-Tabelle m<strong>in</strong>destens gleichwertige Alternative<br />

stellt <strong>der</strong> <strong>E<strong>in</strong></strong>satz von arpwatch von Craig Leres dar, welches nach Verän<strong>der</strong>ungen <strong>der</strong> IP-<br />

/Ethernet-Mapp<strong>in</strong>gs Ausschau hält. Werden Än<strong>der</strong>ungen bemerkt, f<strong>in</strong>det e<strong>in</strong>e Alarmierung<br />

per E-Mail statt. Zudem werden die Manipulationen für e<strong>in</strong>e spätere Analyse protokolliert.<br />

5.8.6 ARP und doppelte IP-Adressen<br />

Wird e<strong>in</strong>em Client-Rechner aus Versehen die gleiche IP-Adresse wie dem zur Verb<strong>in</strong>dung<br />

aufgefor<strong>der</strong>ten Host-System zugeteilt, können diverse Benutzer für kurze Zeit nicht auf die<br />

Dienste des Hosts zugreifen. Die verschiedenen Komponente und Eigenheiten des spezifischen<br />

<strong>Netzwerk</strong>s lassen dieses Problem polymorph ersche<strong>in</strong>en, denn die Architektur des<br />

Netzes, <strong>der</strong> <strong>E<strong>in</strong></strong>satz von Routern, Hubs o<strong>der</strong> Bridges und die verwendete Hard- und Software<br />

haben e<strong>in</strong>en entscheidenden <strong>E<strong>in</strong></strong>fluss auf die Reaktionszeiten von ARP und dadurch<br />

auf das ganze Szenario.<br />

In de<strong>in</strong>er zur letzten Darstellung ähnlichen Situation haben <strong>der</strong> Host B und <strong>der</strong> Rechner<br />

P die gleiche IP-Adresse. Versucht nun Host A e<strong>in</strong>e Verb<strong>in</strong>dung zu P herzustellen, welche<br />

e<strong>in</strong>e ARP-Anfor<strong>der</strong>ung zur Folge hat, erhält er durch das Adress Resolution Protokoll die<br />

IP-Adresse von Host B, da sowohl <strong>der</strong> Host als auch Host B antworten. Host A kann die<br />

Verb<strong>in</strong>dung kaum erfolgreich herstellen, da Host B kaum <strong>in</strong> <strong>der</strong> Lage ist, mit <strong>der</strong> korrekten<br />

Dienst-Software aufzutrumpfen. Beim zweiten Versuch erhält Host A vielleicht die korrekte<br />

Antwort des Hosts, kann jedoch noch immer ke<strong>in</strong>e Verb<strong>in</strong>dung herstellen.<br />

Handelt es sich beim Host B um e<strong>in</strong>en normalen Arbeitsplatzrechner, wird dieser sehr<br />

wahrsche<strong>in</strong>lich bei längerem Nichtgebrauch ausgeschaltet. In diesem Fall taucht das Problem<br />

nur gelegentlich, zum Beispiel während den Arbeitszeiten des Benutzers am Host B,<br />

auf. Dies kann für genervte Benutzer zwischenzeitlich zum Vorteil werden, beh<strong>in</strong><strong>der</strong>t jedoch<br />

die Fehlersuche des <strong>Netzwerk</strong>adm<strong>in</strong>istrators erheblich.<br />

Das letzte Szenario beschreibt sich e<strong>in</strong>facherweise wie folgt: Zwei Host-Rechner bedienen<br />

sich e<strong>in</strong>er identischen IP-Adresse. In diesem Fall werden die Client-Masch<strong>in</strong>en gelegentlich<br />

e<strong>in</strong>e Verb<strong>in</strong>dung zum falschen Host herstellen, was e<strong>in</strong> korrekter Ablauf <strong>der</strong> Kommunikation<br />

unterb<strong>in</strong>det. Dieser Machtkampf ist selten anzutreffen, da es zu den Hauptaufgaben e<strong>in</strong>es<br />

kompetenten Adm<strong>in</strong>istrators zählt, bei je<strong>der</strong> Phase des <strong>Netzwerk</strong>designs auf <strong>in</strong>dividuelle<br />

IP-Adressen zu achten. Hierbei hilft beispielsweise die Verwendung von DHCP.


70 KAPITEL 5. TCP-IP<br />

5.8.7 Proxy-ARP<br />

Mit Proxy ARP wird e<strong>in</strong>e von IP-Routern genutzte Technik betitelt, die mit <strong>der</strong> Entwicklung<br />

von TCP/IP spezifiziert wurde. Der S<strong>in</strong>n <strong>der</strong> Methode liegt <strong>in</strong> <strong>der</strong> Beseitigung e<strong>in</strong>iger<br />

Probleme des begrenzten IP-Adressraums von IPv4. Durch dieses Verfahren können Router<br />

unsichtbar gemacht werden und Teilnetze bequem auf an<strong>der</strong>e Interfaces geroutet werden.<br />

Der L<strong>in</strong>uxkernel unterstützt Proxy-ARP, womit sich recht komplexe Router aufbauen lassen.<br />

Nicht nur aufgrund des Wachstums e<strong>in</strong>es <strong>Netzwerk</strong>es kann relativ schnell und verhältnismässig<br />

unerwartet <strong>der</strong> Punkt <strong>der</strong> physikalischen Beschränkung e<strong>in</strong>er <strong>E<strong>in</strong></strong>führung zusätzlicher<br />

Host <strong>in</strong> das System erreicht werden. In diesem Falle kann das Netz nur durch e<strong>in</strong><br />

zweites unabhängiges physikalisches Kabelsystem erweitert werden. In den K<strong>in</strong><strong>der</strong>jahren<br />

von TCP/IP, vor dem Erf<strong>in</strong>den von Netzmasken und Brücken, konnten zwei Kabelsysteme<br />

nur mit e<strong>in</strong>em für zwei verschiedene IP-Ranges konfigurierten Router verbunden werden.<br />

Repeater waren aufgrund des Fehlens <strong>der</strong> Notwendigkeit von Filterungsfunktionen für diese<br />

Arbeit nicht geeignet. IP-Adressen wurden damals rigoros und verschwen<strong>der</strong>isch vergeben<br />

- man konnte es sich ja damals auch noch leisten.<br />

Wenden wir uns e<strong>in</strong>em illustren Beispiel zu: <strong>E<strong>in</strong></strong> Unternehmen ergatterte sich die registrierte<br />

IP-Adresse <strong>der</strong> Klasse B 130.1.2.3. Die Firma benutzt die Ethernet-Technologie<br />

und möchte 2’048 Host-Rechner mit <strong>der</strong> Hilfe von TCP/IP untere<strong>in</strong>an<strong>der</strong> agieren lassen.<br />

Mit <strong>der</strong> Adresse <strong>der</strong> Klasse B stehen dem Unternehmen 65’534 mögliche Hostadressen zur<br />

freien Verfügung. Da man jedoch Ethernet e<strong>in</strong>setzt, können maximal 1’024 Host <strong>in</strong> e<strong>in</strong>em<br />

Segment e<strong>in</strong>gebunden werden. Die Implementierung weiterer Systeme erfor<strong>der</strong>t das Nutzen<br />

e<strong>in</strong>es Routers o<strong>der</strong> e<strong>in</strong>er Bridge. Um nun trotzdem die erste angestrebte Anzahl Host zu<br />

erreichen, muss e<strong>in</strong> zweites autonomes Kabelsystem angelegt werden, welches aufgrund des<br />

regen Datenverkehrs mittels Router an das erste angeschlossen wird. Konventionelle Router<br />

erfor<strong>der</strong>n, dass den jeweiligen Schnittstellen differente IP-Adressen zugeteilt werden.<br />

Obwohl von den 65’534 Adressen <strong>der</strong> Klasse B nur 1’024 gebraucht wurden, können die<br />

restlichen 64’510 Adressen nicht verwendet werden; also offenbahrt sich e<strong>in</strong>e Vergeudung<br />

<strong>in</strong> höchstem Maße. Damit <strong>der</strong> Router e<strong>in</strong>wandfrei arbeiten kann, muss ihm e<strong>in</strong>e zweite IP-<br />

Adresse <strong>der</strong> Klasse B zugeteilt werden, und damit s<strong>in</strong>d erneut ganze 65’510 IP-Adressen<br />

verschwendet. Dieses Vorgehen ist aus technischer Sicht <strong>in</strong> ke<strong>in</strong>ster Weise akzeptabel; abgesehen<br />

von privaten autonomen <strong>Netzwerk</strong>systemen ohne registrierte IP-Adressen.<br />

Das Internet Protokoll bedient sich ARP, um die MAC-Adresse e<strong>in</strong>er <strong>E<strong>in</strong></strong>heit zu ermitteln,<br />

sofern die Netznummer <strong>in</strong> <strong>der</strong> eigenen IP-Adresse <strong>der</strong> des Empfängerknotens entspricht.<br />

An<strong>der</strong>nfalls kommt e<strong>in</strong> routendes Element (Router o<strong>der</strong> Gateway) zum <strong>E<strong>in</strong></strong>satz.<br />

Damit möglichst wenige IP-Adressen verschleu<strong>der</strong>t werden, ist es aus technischer Sicht<br />

wünschenswert den beiden Interfaces des routenden Systems die gleiche Netznummer zuzuteilen.<br />

Wird jedoch dieselbe Netznummer verwendet, muss man e<strong>in</strong> Verfahren f<strong>in</strong>den,<br />

mit dem man die Richtung <strong>der</strong> Weiterleitung von Datagrammen e<strong>in</strong>deutig erkennen kann.<br />

Proxy ARP ist <strong>in</strong> diesem Fall e<strong>in</strong>er <strong>der</strong> Schlüssel.<br />

Proxy ARP kann auf verschiedenste Weisen implementiert werden. Als die effizienteste<br />

Methode ist die Zuordnung von Bits <strong>in</strong> <strong>der</strong> IP-Adresse, anhand <strong>der</strong>er unterschiedliche<br />

Subnetze identifiziert werden können, anzusehen. Das Relais kann als e<strong>in</strong>e Art Puffer die<br />

unnötigen ARP-Rundsende-nachrichten abblocken, da nur die an an<strong>der</strong>e Subnetze adressierten<br />

Broadcasts weitergeroutet werden müssen. Damit kann <strong>der</strong> überschüssige <strong>Netzwerk</strong>verkehr<br />

e<strong>in</strong>gedämmt und die Performance gewahrt werden. Die e<strong>in</strong>zigen Hops, die die elementaren<br />

Bits zur Kennzeichnung <strong>der</strong> verschiedenen Subnetze erkennen können müssen,<br />

s<strong>in</strong>d die Proxy ARP-Geräte. Natürlich erfor<strong>der</strong>t das erreichen dieses Ziels e<strong>in</strong>e durchdachte<br />

Zuweisung des richtigen Adressbereichs von seiten des <strong>Netzwerk</strong>adm<strong>in</strong>istrators. Beispiels-


5.8. ADDRESS RESOLUTION PROTOCOL 71<br />

weise könnten die ersten vier Bits des Host-Anteils <strong>der</strong> IP-Adresse zur Identifizierung <strong>der</strong><br />

verschiedenen Subnetze e<strong>in</strong>gesetzt werden. Dabei wird jedoch nicht, wie von vielen vielleicht<br />

vermutet, mit Subnetz-Masken gearbeitet o<strong>der</strong> die Adressenstruktur des Endknotens<br />

bekannt. Es können nun also 14 Subnetze dadurch def<strong>in</strong>iert werden (Die Subnetze 0 und 15<br />

f<strong>in</strong>den <strong>in</strong> diesem Beispiel aus Gründen <strong>der</strong> <strong>E<strong>in</strong></strong>fachheit ke<strong>in</strong>e Verwendung!). Empfängt nun<br />

die Schnittstelle 1 e<strong>in</strong>e ARP-Anfor<strong>der</strong>ung, überprüft die Proxy ARP-Vermittlungse<strong>in</strong>heit<br />

die Bits <strong>in</strong> <strong>der</strong> Hostadresse darauf, ob die Nachricht e<strong>in</strong> an<strong>der</strong>es Subnetz kennzeichnet.<br />

Wird <strong>der</strong> Gutfall erkannt, f<strong>in</strong>det e<strong>in</strong>e Weiterleitung an die Schnittstelle 2 statt. Dort wird<br />

dann die Absen<strong>der</strong>adresse durch jene <strong>der</strong> Proxy ARP-Schnittstelle 2 ersetzt und als üblicher<br />

ARP-Broadcast <strong>in</strong>s Neuland geblasen. Die jüngst von <strong>der</strong> ganzen Aktion betroffene Proxy<br />

ARP-<strong>E<strong>in</strong></strong>heit speichert die <strong>in</strong> <strong>der</strong> ARP-Antwort vermerkte MAC-Adresse des Absen<strong>der</strong>s-<br />

, sowie des Empfängerknotens und vermerkt an welcher Schnittstelle sich diese bef<strong>in</strong>den.<br />

Wird vom Absen<strong>der</strong> nun noche<strong>in</strong>mal e<strong>in</strong> Datagramm an die Schnittstelle 1 des Routers gesandt,<br />

enthält dieser bereits die Empfängeradresse <strong>der</strong> Proxy ARP-<strong>E<strong>in</strong></strong>heit. Das Datagramm<br />

wird daher direkt von <strong>der</strong> Proxy ARP-<strong>E<strong>in</strong></strong>heit angenommen. Die Proxy ARP-<strong>E<strong>in</strong></strong>heit ersetzt<br />

nun wie<strong>der</strong>um die tatsächliche MAC-Adresse des Empfängerknotens und sendet das<br />

modifizierte Datagramm an die Schnittstelle 2. Diese Methode funktioniert nur, wenn die<br />

beiden Endknoten die Gültigkeit <strong>der</strong> MAC-Adressen <strong>in</strong> den jeweiligen ARP-Antworten<br />

nicht überprüfen. Es ist durch dieses ganze Proze<strong>der</strong>e möglich, mit e<strong>in</strong>er beliebigen MAC-<br />

Adresse zu antworten, die als Ersatz e<strong>in</strong>es an<strong>der</strong>en Hosts fungiert. Der ARP-Cache e<strong>in</strong>es<br />

Endknotens, <strong>der</strong> sich <strong>in</strong> e<strong>in</strong>em Proxy ARP-System bef<strong>in</strong>det, enthält die MAC-Adresse <strong>der</strong><br />

Proxy ARP-<strong>E<strong>in</strong></strong>heit, die vielen IP-Adressen zugeordnet ist. Diverse Firewall-Systeme erlauben<br />

das Verwerfen von durch Proxy ARP modifizierten Datagrammen, um so entfernte<br />

Manipulationen am ARP-Cache zu unterb<strong>in</strong>den.<br />

5.8.8 Probleme durch Proxy-ARP<br />

Viele Router verwenden per Default-<strong>E<strong>in</strong></strong>stellung Proxy ARP, auch wenn ke<strong>in</strong>e Subnetz-<br />

Adressierungs-schema zum <strong>E<strong>in</strong></strong>satz kommen. Das Router-Element greift <strong>in</strong>sofern beim Empfang<br />

e<strong>in</strong>er ARP-Anfor-<strong>der</strong>ung für e<strong>in</strong> an<strong>der</strong>es Netz o<strong>der</strong> Subnetz manipulativ <strong>in</strong> das Geschehen<br />

e<strong>in</strong>, <strong>in</strong>dem es se<strong>in</strong>e eigene MAC-Adresse <strong>in</strong> <strong>der</strong> ARP-Antwort zurückschickt. Zur<br />

Übermittlung des Datagramms an den Empfänger werden die herkömmlichen Routenwahl-<br />

Mechanismen e<strong>in</strong>gsetzt. Dieser Fall kann jedoch nur e<strong>in</strong>treten, wenn e<strong>in</strong> verwirrter o<strong>der</strong><br />

falsch konfigurierter Rechner das Gefühl des Sich-<strong>in</strong>-e<strong>in</strong>em-an<strong>der</strong>en-Netz-Bef<strong>in</strong>den hat und<br />

<strong>der</strong> Router sich an e<strong>in</strong> an<strong>der</strong>es Bild <strong>der</strong> Adressenstruktur klammert. Es läge also e<strong>in</strong> klassischer<br />

Adressierungs-Fehler vor, da zwei Gerätee<strong>in</strong>heiten die IP-Adresserungsschematas<br />

komplett an<strong>der</strong>s <strong>in</strong>terpretieren. Grund dafür kann die Wahl unterschiedlicher Subnetz-<br />

Masken se<strong>in</strong>. Die beiden Geräte würden so mit e<strong>in</strong>er Netzstruktur arbeiten, die für die<br />

Opposition nicht erkennbar und verständlich ist.<br />

Denial of Service durch ARP-Stürme Der Denial of Service-Angriff mittels ARP-<br />

Sturm hat die Überlastung e<strong>in</strong>er <strong>Netzwerk</strong>komponente o<strong>der</strong> e<strong>in</strong>es Netz(abschnitt)es zur<br />

Folge, was unter Umständen e<strong>in</strong>en weiteren weniger destruktiven Angriff erst ermöglicht<br />

(z.B. IP-Spoof<strong>in</strong>g). Die Extremsituation tritt e<strong>in</strong>, wenn ARP-Broadcasts e<strong>in</strong>e non-existente<br />

IP-Adresse <strong>in</strong> Erfahrung br<strong>in</strong>gen versuchen. Alle an das <strong>Netzwerk</strong> angeschlossenen Gateways<br />

beg<strong>in</strong>nen alsdann mit dem Weiterleiten <strong>der</strong> Anfrage an die Nachbarnetze. Ganz extrem<br />

wird dieser Angriff, wenn nach dem ersten Briadcast-Sturm synthetische ARP-Rückantworten<br />

<strong>der</strong> nicht existierenden Adresse versendet werden, die wie<strong>der</strong>um von den Gateways per<br />

Broadcast zur f<strong>in</strong>alen Verstopfung des Netzes weiterverbreitet werden. Solche Broadcast-


72 KAPITEL 5. TCP-IP<br />

Stürme belegen rasch e<strong>in</strong>en Grossteil <strong>der</strong> <strong>Netzwerk</strong>kapazität und lassen die Performance <strong>in</strong><br />

den Keller s<strong>in</strong>ken. Wichtig ist <strong>in</strong> sensiblen Umgebungen im Vorfeld das sogenannte Media-<br />

Speed-Verhalten durch experimentell simulierte Extremsituationen <strong>in</strong> Erfahrung zu br<strong>in</strong>gen.<br />

HAVOC für UNIX/L<strong>in</strong>ux ist e<strong>in</strong> beliebtes Tool zum Erzw<strong>in</strong>gen von ARP-Stürmen.<br />

Denial of Service durch ARP-Fehlimplenetierungen Auch auf Fehlimplementierungen<br />

<strong>der</strong> ARP-Funktionalität können Denial of Service-Attacken abzielen, wie im NetBSD<br />

Security Advisory 1999-010 (ARP table vulnerability) berichtet wird: obsd fun.c schickt<br />

übergrosse ARP-Pakete an e<strong>in</strong>e OpenBSD 2.6-Masch<strong>in</strong>e, und zw<strong>in</strong>g sie so zur Kernel-Panik.<br />

Aber nicht nur UNIX-Derivate s<strong>in</strong>d von solchen Schlampereien betroffen. Auch Microsot<br />

W<strong>in</strong>dows, welches e<strong>in</strong>e Menge Code von BSD direkt übernommen haben muss, kann mit<br />

den C-Scripts w<strong>in</strong>arp.c und po<strong>in</strong>k.c auf die Pelle gerückt werden. Diese Angriffs-Form wird<br />

im Thread von Joel Jacobson <strong>in</strong> Bugtraq erstmals vorgestellt. Ähnliche Diskussionen f<strong>in</strong>den<br />

sich <strong>in</strong> den beiden Threads von Andrew Lancashire und Lisa Napier über DoS-Attacken<br />

auf Cisco-Systeme, und von Scott Blake über Cabletron-Router, durch das Überfluten <strong>der</strong><br />

ARP-Tabelle.<br />

5.9 ICMP - Internet Control Message Protocol<br />

Das ICMP dient zur Übermittlung von Fehler- und Status<strong>in</strong>formationen. ICMP wird auch<br />

von IP selbst verwendet, um beispielsweise Fehler zu melden. ICMP ist daher zw<strong>in</strong>gend <strong>in</strong><br />

IP vorhanden; funktional gesehen ist es Teil von IP, technisch setzt es jedoch auf IP auf.<br />

ICMP kann aber auch direkt von Applikationen verwendet werden.<br />

ICMP Pakete werden verwendet, wenn beispielsweise <strong>der</strong> Zielrechner o<strong>der</strong> das Zielnetzwerk<br />

nicht erreichbar ist. In diesem Fall gibt e<strong>in</strong> TCP/IP Router beispielsweise e<strong>in</strong> ”host<br />

unreachable” bzw. ”network unreachable” Paket zurück. ICMP ist im Network Layer angesiedelt,<br />

ist aber eigentlich ke<strong>in</strong> wirklich eigenständiges Protokoll, da die Übermittlung<br />

von ICMP-Nachrichten durch IP-Pakete erfolgt und dazu dient, die Übertragung von den<br />

eigentlichen Daten zu steuert. ICMP ist damit ke<strong>in</strong> Datenfluss son<strong>der</strong>n e<strong>in</strong> Kontrollfluss,<br />

<strong>der</strong> den Datenfluss steuert.<br />

Durch se<strong>in</strong>e Vielseitigkeit bietet ICMP aber auch lei<strong>der</strong> die Möglichkeit versteckte Nachrichten<br />

zu übermitteln. <strong>E<strong>in</strong></strong> Stichwort ist hier das sogenannte ”ICMP-Tunnel<strong>in</strong>g”. Beim<br />

ICMP-Tunnel<strong>in</strong>g wird das Datenfeld e<strong>in</strong>es ICMP-Paketes genutzt, um Informationen zwischen<br />

Rechnern auszutauschen. ICMP-Tunnel<strong>in</strong>g ist aber ke<strong>in</strong>e Technik, die es eventuellen<br />

Datenspionen ermöglicht, <strong>in</strong> e<strong>in</strong>en Rechner o<strong>der</strong> e<strong>in</strong> Netz e<strong>in</strong>zubrechen. Dennoch stellt das<br />

Tunnel<strong>in</strong>g e<strong>in</strong>e Bedrohung für das Sicherheitskonzept e<strong>in</strong>es Netzes dar.<br />

<strong>E<strong>in</strong></strong>e recht bekannte Anwendung von ICMP ist das Programm p<strong>in</strong>g, mit dem man die<br />

Erreichbarkeit e<strong>in</strong>es an<strong>der</strong>en Rechners prüfen kann. Dazu wird e<strong>in</strong> ICMP echo request an<br />

den Zielrechner geschickt, dieser sendet e<strong>in</strong> ICMP echo reply zurück, wenn er denn verfügbar<br />

ist. P<strong>in</strong>g ist e<strong>in</strong> e<strong>in</strong>faches Shell-Kommando und wird mittels ”p<strong>in</strong>g Zieladresse” aufgerufen.<br />

dirk@l<strong>in</strong>ux:~/nwak> p<strong>in</strong>g 134.76.60.86<br />

PING 134.76.60.86 (134.76.60.86) from 132.230.9.124 : 56(84) bytes of data.<br />

64 bytes from 134.76.60.86: icmp_seq=1 ttl=47 time=21.1 ms<br />

64 bytes from 134.76.60.86: icmp_seq=2 ttl=47 time=23.2 ms<br />

64 bytes from 134.76.60.86: icmp_seq=4 ttl=47 time=20.9 ms<br />

--- 134.76.60.86 p<strong>in</strong>g statistics ---<br />

4 packets transmitted, 3 received, 25% loss, time 3019ms<br />

rtt m<strong>in</strong>/avg/max/mdev = 20.952/21.774/23.243/1.041 ms


5.10. DOMAIN-NAME-SERVICE (DNS) 73<br />

ICMP wird meistens von IP für den Benutzer unsichtbar verwendet, zum Beispiel um<br />

herauszubekommen, wie groß e<strong>in</strong> Paket se<strong>in</strong> kann, das von L<strong>in</strong>k Protokoll übertragen werden<br />

kann, o<strong>der</strong> um Fehler zu melden.<br />

ICMP hat sehr unterschiedliche Informationen zu transportieren. Deshalb ist nur <strong>der</strong><br />

Grundaufbau des ICMP-Hea<strong>der</strong>s immer gleich, die Bedeutung <strong>der</strong> e<strong>in</strong>zelnen Fel<strong>der</strong> im Protokollkopf<br />

wechselt jedoch. Je<strong>der</strong> ICMP-Nachrichtentyp wird <strong>in</strong> e<strong>in</strong>em IP-Datengramm e<strong>in</strong>gekapselt.<br />

Die <strong>der</strong>zeit wichtigsten ICMP-Nachrichtentypen s<strong>in</strong>d:<br />

• Dest<strong>in</strong>ation Unreachable (Ziel nicht erreichbar) - Diese Nachricht wird verwendet,<br />

wenn e<strong>in</strong> <strong>Netzwerk</strong>, Host, Protokoll o<strong>der</strong> Port nicht erreichbar ist, e<strong>in</strong> Paket nicht<br />

fragmentiert werden kann, weil das DontFragment-Bit gesetzt ist o<strong>der</strong> die Source<br />

Route Option nicht erfolgreich verwendet werden konnte.<br />

• Parameter Problem - Verständigt den Absen<strong>der</strong> e<strong>in</strong>es Datengramms darüber, dass das<br />

Paket aufgrund e<strong>in</strong>er fehlerhaften Angabe im IP-Hea<strong>der</strong> verworfen werden mußte.<br />

• Redirect - Wird ausgesendet, wenn e<strong>in</strong> Router feststellt, dass e<strong>in</strong> Paket falsch weitergeleitet<br />

wurde. Der sendende Host wird damit aufgefor<strong>der</strong>t, die angegebene Route zu<br />

än<strong>der</strong>n.<br />

• Time Exceeded (Zeit verstrichen) - Diese Nachricht wird an den Absen<strong>der</strong> e<strong>in</strong>es Datengramms<br />

gesendet, dessen Lebensdauer den Wert 0 erreicht hat. Diese Nachricht<br />

ist e<strong>in</strong> Zeichen dafür, dass Pakete <strong>in</strong> e<strong>in</strong>em Zyklus wan<strong>der</strong>n, dass Netz überlastet ist<br />

o<strong>der</strong> die Lebensdauer für das Paket zu ger<strong>in</strong>g e<strong>in</strong>gestellt wurde.<br />

• Echo Request und Reply - Mit diesen Nachrichten kann festgestellt werden, ob e<strong>in</strong><br />

bestimmtes Ziel erreichbar ist. <strong>E<strong>in</strong></strong> Echo Request wird an e<strong>in</strong>en Host gesendet und<br />

hat e<strong>in</strong>en Echo Reply zur Folge (falls <strong>der</strong> Host erreicht wird). Das P<strong>in</strong>g-Kommando<br />

nutzt diese Eigenschaft des ICMP.<br />

• Timestamp Request und Reply - Diese beiden Nachrichten s<strong>in</strong>d ähnlich den zuvor beschriebenen<br />

Nachrichten, außer dass die Ankunftszeit <strong>der</strong> Nachricht und die Sendezeit<br />

<strong>der</strong> Antwort mit erfaßt werden. Mit diesen Nachrichtentypen kann die Netzleistung<br />

gemessen werden.<br />

<strong>E<strong>in</strong></strong>e ICMP-Nachricht wird immer als Antwort auf e<strong>in</strong> Datengramm verschickt. Entwe<strong>der</strong><br />

ist e<strong>in</strong> Datengramm auf e<strong>in</strong> Problem gestoßen, o<strong>der</strong> das Datengramm enthält e<strong>in</strong>e<br />

ICMP-Anfrage, auf die e<strong>in</strong>e Antwort versendet werden muss. In beiden Fällen sendet e<strong>in</strong><br />

Host o<strong>der</strong> Router e<strong>in</strong>e ICMP-Nachricht an die Quelle des Datengramms zurück.<br />

5.10 Doma<strong>in</strong>-Name-Service (DNS)<br />

Der Doma<strong>in</strong>-Name-Service ist e<strong>in</strong> auf TCP/IP basieren<strong>der</strong> Dienst und ke<strong>in</strong> Bestandteil<br />

<strong>der</strong> Vermit-tlungs- bzw. Transportschicht. Jedoch werden vielfach Masch<strong>in</strong>en nicht primär<br />

über ihre <strong>Netzwerk</strong>adresse, son<strong>der</strong>n ihren Hostnamen und evtl. Doma<strong>in</strong>namen, die zusammen<br />

den Full Qualified Doma<strong>in</strong> Name ergeben, angesprochen. Deshalb wird dieser Dienst<br />

an dieser Stelle bereits kurz vorgestellt. In <strong>der</strong> Benutzung hat man meistens clientseitig mit<br />

DNS zu tun, die Serverseite wird <strong>in</strong> e<strong>in</strong>em eigenen Abschnitt geson<strong>der</strong>t vorgestellt. Fast jede<br />

Masch<strong>in</strong>e im Internet besitzt neben <strong>der</strong> numerischen Adresse (IP-Nummer) m<strong>in</strong>d. e<strong>in</strong>en<br />

sybolischen Namen (Hostname). ”Nameserver” kennen die zu den symbolischen Namen<br />

gehörenden IP-Adressen und umgekehrt. Wenn man Nameserver direkt abfragen will, kann


74 KAPITEL 5. TCP-IP<br />

Kürzel Bedeutung Kürzel Bedeutung<br />

gov governemental com Unternehmen (”commercial”)<br />

de Deutschland edu Ausbildungse<strong>in</strong>richtung<br />

net <strong>Netzwerk</strong> org Organisation<br />

Tabelle 5.9: Die traditionellen Domänenendungen<br />

Kürzel Bedeutung Kürzel Bedeutung<br />

name Privatpersonen biz Unternehmungen<br />

eu Europa <strong>in</strong>fo Informational<br />

ws ”WebSite” <strong>in</strong>t Internationale Organisationen<br />

Tabelle 5.10: Die von <strong>der</strong> IANA beschlossenen/vorgesehenen neuen Domänenendungen<br />

man das mit den Kommandos host o<strong>der</strong> nslookup machen. Mittels DNS (Doma<strong>in</strong>-Name-<br />

Service) werden die Hostnamen <strong>in</strong> e<strong>in</strong>en hierarchischen Namensraum e<strong>in</strong>geglie<strong>der</strong>t, wobei<br />

geografische Gesichtspunkte (Län<strong>der</strong>doma<strong>in</strong>s, wie ”de”) o<strong>der</strong> organisatorische Gründe (Firmen)<br />

Ausrichtungskriterien abgeben können.<br />

Die Organisation von Namen <strong>in</strong> e<strong>in</strong>er Hierarchie von Doma<strong>in</strong>s schafft gleichzeitig die<br />

Schwierigkeit <strong>der</strong> <strong>E<strong>in</strong></strong>deutigkeit von Namen aus <strong>der</strong> Welt. Bei DNS muß e<strong>in</strong> Hostname nur<br />

<strong>in</strong>nerhalb e<strong>in</strong>er (Sub-)Doma<strong>in</strong> e<strong>in</strong>deutig se<strong>in</strong>, und schon ist sichergestellt, dass er sich von<br />

allen an<strong>der</strong>en Hosts weltweit unterscheidet (Sonst wäre <strong>der</strong> beliebte Aliasname ”www” nicht<br />

möglich!). Mehr noch, voll qualifizierte Namen s<strong>in</strong>d e<strong>in</strong>facher zu merken.<br />

Der FQDN (Full Qualified Doma<strong>in</strong> Name), die Komb<strong>in</strong>ation aus Hostnamen und <strong>der</strong><br />

Doma<strong>in</strong> (<strong>in</strong>cl. evtl. Subdmoma<strong>in</strong>namen) wird durch Punkte <strong>in</strong> Bestandteile geglie<strong>der</strong>t, die<br />

über den Namen und die Zugehörigkeit des Rechners Auskunft geben.<br />

Das erste Wort des FQDN ist <strong>der</strong> sogenannte ”hostname”, <strong>der</strong> h<strong>in</strong>tere Teil des FQDN<br />

ist <strong>der</strong> ”doma<strong>in</strong>name”. Während <strong>der</strong> ”doma<strong>in</strong>name” vorgegeben ist, hat man bei <strong>der</strong> Taufe<br />

des Rechners freie Wahl. Neben Namen, die <strong>in</strong> Zusammenhang mit <strong>der</strong> doma<strong>in</strong> stehen (s.o.)<br />

s<strong>in</strong>d außerdem Comic-Helden, Romanfiguren, berühmte Personen, antike Götter usw. sehr<br />

beliebt. Dem Rechner kann man auch weitere Namen verpassen, sogenannte Aliase, die<br />

meistens die Funktion <strong>der</strong> Masch<strong>in</strong>e ausdrücken, z.B. www.goe.net, ftp.gwdg.de ...<br />

Zu befragende Nameserver unter L<strong>in</strong>ux werden <strong>in</strong> <strong>der</strong> Datei /etc/resolv.conf fest vermerkt<br />

o<strong>der</strong> dynamisch per Bootp/DHCP o<strong>der</strong> durch die Modem- bzw. ISDN-Skripten nach<br />

dem Bezug per PPP e<strong>in</strong>getragen. Diese Datei hat folgendes Format:<br />

search kolosseum.local goe.net gwdg.de<br />

nameserver 10.10.156.1<br />

nameserver 134.76.60.21<br />

Die ”search” Or<strong>der</strong> def<strong>in</strong>iert, welche Doma<strong>in</strong>namen an Hostnamen angehangen wurden,<br />

die ohne Doma<strong>in</strong>kürzel angesprochen wurden: ”p<strong>in</strong>g test” würde versuchen zuerst<br />

”test.kolosseum.local”, dann ”test.goe.net” und zum Schluss ”test.gwdg.de” zu ergänzen<br />

und aufzulösen. So kann man sich beim Bewegen <strong>in</strong> <strong>der</strong> eigenen Doma<strong>in</strong> viel Tipparbeit<br />

sparen. Es können maximal zehn Ergänzungen <strong>der</strong> Suchreihenfolge und maximal drei Nameserver<br />

angegeben werden. Der zweite und dritte DNS werden nur befragt, wenn <strong>der</strong> erste<br />

nicht reagierte, nicht jedoch, wenn die Anfrage auf dem ersten ke<strong>in</strong>en Erfolg brachte.


5.11. TRANSMISSION CONTROL PROTOCOL (TCP) 75<br />

5.11 Transmission Control Protocol (TCP)<br />

Mit <strong>der</strong> Übertragung von Datagrammen (IP-Paketen) von e<strong>in</strong>em <strong>Netzwerk</strong>knoten zum an<strong>der</strong>en<br />

ist es nicht getan. Wenn man sich remote e<strong>in</strong>loggen möchte, z.B. mit dem Kommando<br />

ssh o<strong>der</strong> Daten von e<strong>in</strong>em Webserver bezieht, ist hierfür e<strong>in</strong>e zuverlässige Verb<strong>in</strong>dung die<br />

Voraussetzung. Der Datenstrom wird zum Transport <strong>in</strong> Pakete aufgeteilt, da grosse Dateien<br />

TCP-H<br />

Length<br />

SOURCE PORT DESTINATION PORT<br />

unused<br />

CHECKSUM<br />

SEQUENCE NUMBER<br />

ACKNOWLEDGEMENT NUMBER<br />

U<br />

R<br />

G<br />

A<br />

C<br />

K<br />

P<br />

S<br />

H<br />

R<br />

S<br />

T<br />

S<br />

Y<br />

N<br />

32bit<br />

F<br />

I<br />

N<br />

OPTIONS (0 or more 32bit words)<br />

BEGINNING OF DATA<br />

(optional)<br />

WINDOW SIZE<br />

URGENT POINTER<br />

Transmission Control Protocol (TCP)<br />

Abbildung 5.12: TCP Paket-Hea<strong>der</strong><br />

nicht ”<strong>in</strong> e<strong>in</strong>em Stück” transferiert werden können und <strong>in</strong>teraktive Verb<strong>in</strong>dungen zeitnah<br />

laufen sollen, d.h. nicht ewig gewartet werden kann, bis e<strong>in</strong> grosses Paket ”voll” ist. IP ist<br />

(absichtlich) nicht zuverlässig. Überlastungen im <strong>Netzwerk</strong> werden durch das ”Vergessen”<br />

von Paketen gelöst. Die Verantwortung für die Integritätsprüfung und die Vollständigkeit<br />

<strong>der</strong> Daten übernehmen die beiden kommunizierenden Rechner, die fehlerhafte Daten erkennen<br />

sollen und diese im Fehlerfall erneut anfor<strong>der</strong>n.<br />

Diesen Part übernimmt e<strong>in</strong> weiteres Protokoll, das Transmission Control Protocol (TCP).<br />

Dieses stellt e<strong>in</strong>en zuverlässigen Dienst über IP-Verb<strong>in</strong>dungen her. Da es auf IP aufsetzt,<br />

muss sich TCP um den ”Weg”, das Rout<strong>in</strong>g durchs Netz, ke<strong>in</strong>e Gedanken machen. TCP<br />

br<strong>in</strong>gt se<strong>in</strong>e Informationen wie<strong>der</strong>um <strong>in</strong> e<strong>in</strong>em Hea<strong>der</strong> unter: Dieser ist 20 Bytes lang. <strong>E<strong>in</strong></strong>e<br />

TCP-Verb<strong>in</strong>dung kann man sich am besten wie e<strong>in</strong> Telefonat vorstellen.<br />

TCP identifiziert die Endpunkte e<strong>in</strong>er solchen Verb<strong>in</strong>dung anhand <strong>der</strong> IP-Adressen <strong>der</strong><br />

beiden Rechner und <strong>der</strong> Nummer e<strong>in</strong>es sogenannten Ports auf jedem Host. Ports können<br />

Sie sich als e<strong>in</strong>e Art <strong>E<strong>in</strong></strong>- und Ausgang für <strong>Netzwerk</strong>verb<strong>in</strong>dungen vorstellen. Diese Adressierung<br />

kann man mit e<strong>in</strong>em Haus (IP-Nummer) und den verschiedenen Türkl<strong>in</strong>geln (Port-<br />

Nummern) vergleichen. Auf e<strong>in</strong>er <strong>Unix</strong>-Masch<strong>in</strong>e kann man sich die Zuordnung von Diensten<br />

zu Ports <strong>in</strong> <strong>der</strong> Datei /etc/services ansehen.<br />

In TCP/IP-Suite übernimmt das Transmission Control Protocol die Aufgaben <strong>der</strong> Transportschicht.<br />

Es etabliert e<strong>in</strong> verb<strong>in</strong>dungsorientiertes Protokoll, welches auf dem verb<strong>in</strong>dungslosen<br />

Internet-Protokoll aufsetzt. Dadurch gel<strong>in</strong>gt es, e<strong>in</strong>en zuverlässigen Bytestromes<br />

<strong>in</strong> e<strong>in</strong>er End-zu-End-Ver-b<strong>in</strong>dung auf e<strong>in</strong>em unzuverlässigen Netzverbund aufzubauen.<br />

TCP nimmt Datenströme von Benutzerapplikationen entgegen und teilt diese <strong>in</strong> maximal<br />

64 kByte grosse Blöcke auf. Diese Datenblöcke, Datagramme23 genannt, werden wie<strong>der</strong>um<br />

mit e<strong>in</strong>em Hea<strong>der</strong> versehen. Das so gebildete Datagramm wird dann an die IP-Schicht<br />

23 zur Unterscheidung von den Datenblöcken <strong>der</strong> Hardwareschicht ”Frames” und den Datenblöcken <strong>der</strong><br />

Vermittlungsschicht ”Packet”


76 KAPITEL 5. TCP-IP<br />

weitergeleitet.<br />

Da IP selbst ke<strong>in</strong>e Zustellbestätigung kennt muss TCP diese implementieren und bei<br />

Bedarf e<strong>in</strong> Neuverschicken verlorengegangener o<strong>der</strong> beschädigter Pakete veranlassen. Weiterh<strong>in</strong><br />

muss die Reihenfolge <strong>der</strong> Pakete kontrolliert und evtl. korrigiert werden.<br />

Da auf e<strong>in</strong>em Host mehrere Datenströme möglich se<strong>in</strong> sollen und nur e<strong>in</strong>e IP-Adresse<br />

vergeben wird, erfolgt die Def<strong>in</strong>ition von speziellen Endpunkten. Diese Endpunkte werden<br />

als Sockets bezeichnet. Jedes Socket hat e<strong>in</strong>e Socketnummer. Diese besteht aus <strong>der</strong><br />

IP-Adresse des Hosts und e<strong>in</strong>er 16 bittigen Portnummer. <strong>E<strong>in</strong></strong> Socket kann mehrere Verb<strong>in</strong>dungen<br />

verwalten, wobei jedoch jedes Quadrupel aus Quelladresse und -port und Zieladresse<br />

und -port e<strong>in</strong>deutig se<strong>in</strong> muss.<br />

Portnummern unterhalb von 256 bzw. 1024 s<strong>in</strong>d für sogenannte ”well-known services”<br />

reserviert. Hier f<strong>in</strong>det man die Standarddienste Weitere sechs <strong>E<strong>in</strong></strong>-Bit-Fel<strong>der</strong> des Hea-<br />

Service Port-Nummer Service Portnummer<br />

ftp 21 pop3 110<br />

ssh 22 ntp 123<br />

telnet 23 rsync 873<br />

smtp 25 imaps 993<br />

http 80 pop3s 995<br />

ldap 389 ldaps 636<br />

Tabelle 5.11: TCP-basierte Standardservices<br />

<strong>der</strong>s s<strong>in</strong>d für diverse Flags vorgesehen. Sie steuern das Verb<strong>in</strong>dungsverhalten e<strong>in</strong>es TCP-<br />

Datenkanals. Das Flag Push signalisiert, dass ke<strong>in</strong>e Datenpufferung stattf<strong>in</strong>den soll, d.h.<br />

dass die Datagramme nicht vollständig aufgefüllt werden sollen. Dieses ist bei <strong>in</strong>teraktiven<br />

Verb<strong>in</strong>dungen, wie ssh, telnet und dem Steuerkanal von ftp s<strong>in</strong>nvoll. Sonst müßte man<br />

warten bis z.B. <strong>der</strong> User an die e<strong>in</strong>tausend Zeichen getippt hat, um e<strong>in</strong> Paket zu verschicken.<br />

Synchronize, Acknowledge, Reset und F<strong>in</strong>ish dienen <strong>der</strong> Verb<strong>in</strong>dungssteuerung. Mit<br />

Urgend kann das ”Dr<strong>in</strong>glichkeitsflag” gesetzt werden. Dann zeigt <strong>der</strong> Urgendpo<strong>in</strong>ter, <strong>der</strong><br />

<strong>in</strong> e<strong>in</strong>em weiteren Datenfeld des Hea<strong>der</strong>s untergebracht ist, auf das Paket welches sofort<br />

behandelt werden soll. Damit kann e<strong>in</strong>e ”Out-of-Band” Signalisierung erfolgen.<br />

Das Feld für die Hea<strong>der</strong>-Länge gibt die Zahl <strong>der</strong> verwendeten 32 bit-Worte an. Damit<br />

ist das Startfeld <strong>der</strong> Daten bekannt. <strong>E<strong>in</strong></strong> Analogon f<strong>in</strong>det man im Fragment Offset des<br />

Internet-Protokolls.<br />

Sequence- und Acknowledgenummern dienen <strong>der</strong> Kontrolle <strong>der</strong> Paketreihenfolge und<br />

sollen die Sicherheit e<strong>in</strong>er Verb<strong>in</strong>dung erhöhen. Letzteres darf jedoch nicht dazu verführen,<br />

anzunehmen, dass e<strong>in</strong>e TCP-Sitzung sicher vor bewußter Manipulation o<strong>der</strong> Mitlauschen<br />

ist. Da alle Daten offen, d.h. unverschlüsselt, übertragen werden, können Angreifer versuchen<br />

die Acknowledge- und Sequencenummern zu raten und damit e<strong>in</strong>en Datenstrom<br />

übernehmen.<br />

Diese Nummern werden quasizufällig beim Verb<strong>in</strong>dungsaufbau gesetzt 24 und dann jeweils<br />

um e<strong>in</strong>s (bzw. <strong>in</strong> späteren Implementationen auch an<strong>der</strong>e zufällige Integer-Beträge)<br />

erhöht.<br />

Die W<strong>in</strong>dow-Size, e<strong>in</strong> weiteres Feld des TCP-Hea<strong>der</strong>s, erlaubt Flusskontrolle. Damit<br />

kann die Geschw<strong>in</strong>digkeit e<strong>in</strong>er Verb<strong>in</strong>dung gesteuert werden, <strong>in</strong> dem die Datenmenge bestimmt<br />

wird, nach <strong>der</strong> Paketbestätigungen verschickt werden. Hierbei f<strong>in</strong>det das Slid<strong>in</strong>g-<br />

24 Da das Verfahren möglichst schnell und effizient arbeiten soll, wurde bei früheren TCP-<br />

Implementationen die Zahl e<strong>in</strong>fach erhöht, aus dem Zeittakt abgeleitet etc.


5.12. USER DATAGRAM PROTOCOL (UDP) 77<br />

W<strong>in</strong>dow-Verfahren Anwendung. Damit wird e<strong>in</strong> Zeitfenster eröffnet, <strong>in</strong> dem e<strong>in</strong>e Paketbestätigung<br />

e<strong>in</strong>gegangen se<strong>in</strong> muss.<br />

TCP benutzt e<strong>in</strong>e aufwendige ”State-Mach<strong>in</strong>e” für die e<strong>in</strong>deutige Charakterisierung des<br />

jeweiligen Verb<strong>in</strong>dungszustandes.<br />

Der Verb<strong>in</strong>dungsaufbau erfolgt mittels des sogenannten ”Three-Way-Handshakes”. Erst<br />

nach e<strong>in</strong>em erfolgreichen Verb<strong>in</strong>dungsaufbau kann e<strong>in</strong> Datentransfer stattf<strong>in</strong>den. Für Verb<strong>in</strong>dungsabbau<br />

erfolgt e<strong>in</strong> ”geordneter Abschluss” analog zum Aufbau.<br />

5.12 User Datagram Protocol (UDP)<br />

In vielen Fällen <strong>der</strong> <strong>Netzwerk</strong>kommunikation genügt die Übertragung e<strong>in</strong>es e<strong>in</strong>zigen Paketes<br />

zur Informationsübermittlung <strong>in</strong> jede Richtung. Der Aufwand würde durch das vorgeschaltete<br />

3-Wege-Handshake, welches TCP implementiert, und den geordneten Abbau <strong>der</strong><br />

Verb<strong>in</strong>dung gewaltig angehoben. Dadruch entstünde e<strong>in</strong>e unnötige Belastung des <strong>Netzwerk</strong>es.<br />

<strong>E<strong>in</strong></strong> weiteres <strong>in</strong> IP-<strong>Netzwerk</strong>en verwendetes Protokoll ist das im Gegensatz zu TCP<br />

ungesicherte User Datagram Protocol (UDP). Mit UDP werden e<strong>in</strong>zelne Pakete an den<br />

entsprechenden Dienst gesandt, ohne dafür e<strong>in</strong>e Verb<strong>in</strong>dung aufzubauen. Klassischerweise<br />

verwenden NFS, SNMP und RWHO UDP. Die Grösse des Pakethea<strong>der</strong>s beträgt bei UDP<br />

8 Byte und ist damit gegenüber TCP erheblich ger<strong>in</strong>ger.<br />

Beispiele für die Anwendung e<strong>in</strong>es solchen sparsamen Protokolls s<strong>in</strong>d das DHCP (Dynamic<br />

Host Configuration Protocol) o<strong>der</strong> DNS (Doma<strong>in</strong> Name System). Die genannten<br />

Protokolle f<strong>in</strong>den nur (DNS sehr viel) im LAN statt - dieses zeichnet sich üblicherweise<br />

durch sehr ger<strong>in</strong>ge Fehlerraten aus.<br />

Mit UDP wurde das Design e<strong>in</strong>es sehr e<strong>in</strong>fachen Protokolls <strong>der</strong> Transportschicht geschaffen,<br />

welches IP mit Transportfunktionalität ausstattet. Das User Datagramm Protocol ist<br />

verb<strong>in</strong>dungslos und implementiert nur e<strong>in</strong>en e<strong>in</strong>fachen Hea<strong>der</strong>.<br />

32 bit<br />

Source Port Dest<strong>in</strong>ation Port<br />

UDP Length UDP Checksum<br />

User Datagram Protocol<br />

Abbildung 5.13: UDP Paket-Hea<strong>der</strong><br />

UDP verwendet wie TCP 16 bittige Portnummern, womit 65.536 UDP-Ports auf e<strong>in</strong>er<br />

Masch<strong>in</strong>e verfügbar s<strong>in</strong>d. Diese können komplett parallel zu den TCP-Ports verwendet<br />

werden. Weiterh<strong>in</strong> wird die Paketlänge und e<strong>in</strong>e Prüfsumme vermerkt. UDP kennt ke<strong>in</strong>e<br />

Bestätigungsmeldungen und ke<strong>in</strong>e Prüfung auf Reihenfolge. Der UDP-Hea<strong>der</strong> ist immer<br />

8 Byte lang 25 . Deshalb erhält man sehr ger<strong>in</strong>ge Latenzzeiten. Es eignet sich gut für Broadcasts.<br />

Alle weiteren Aufgaben, die TCP zusätzlich implementiert, müssen bei <strong>der</strong> Verwendung<br />

von UDP von <strong>der</strong> Applikation übernommen werden.<br />

UDP-Pakete können auch per Broadcast an alle Hosts des lokalen Netzes versandt werden,<br />

die IP-Adresse des Empfängers ist dann 255.255.255.255. Das Programm rwhod verwendet<br />

dieses Verfahren, um e<strong>in</strong>geloggte Benutzer und die Uptime <strong>der</strong> Masch<strong>in</strong>en <strong>in</strong> e<strong>in</strong>em<br />

<strong>Netzwerk</strong> zu ermitteln. Auf diese Weise können recht e<strong>in</strong>fach Systeme realisiert werden, die<br />

bestimmte Listener suchen. Diese melden sich auf e<strong>in</strong>en solchen Broadcast dann mit e<strong>in</strong>em<br />

25 zum Vergleich: TCP hat 20 Byte plus evtl. Optionen


78 KAPITEL 5. TCP-IP<br />

entsprechenden Paket; alle an<strong>der</strong>en bekommen das Paket erst gar nicht o<strong>der</strong> müssen sich<br />

e<strong>in</strong>fach an ”alle” wenden. Broadcast-Pakete gehen nur e<strong>in</strong>mal über die <strong>Netzwerk</strong>-Leitung.<br />

Es wird also nicht für jeden Teilnehmer e<strong>in</strong> getrenntes Paket verschickt. Die Leitungs-<br />

Belastung ist also gleich <strong>der</strong> beim Versenden e<strong>in</strong>es Pakets an nur e<strong>in</strong>en Peer.<br />

5.13 Ports<br />

Ports wurden im Zusammenhang <strong>der</strong> Transportprotokolle UDP und TCP bereits kurz<br />

erwähnt, aber kaum erklärt. Dies soll an dieser Stelle nachgeholt werden. Über das TCP<br />

und UDP Protokoll können Daten zu e<strong>in</strong>em an<strong>der</strong>en Rechner übertragen werden. Nun hat<br />

man aber häufig mehrere Dienste auf e<strong>in</strong>em Rechner, und möchte gleichzeitig mit mehreren<br />

Diensten kommunizieren können. Da also e<strong>in</strong> Rechner <strong>in</strong> <strong>der</strong> Regel mehr als e<strong>in</strong>en<br />

Dienst anbietet (z.B. FTP, Telnet, POP, ...), muß man neben <strong>der</strong> IP-Adresse e<strong>in</strong> weiteres<br />

Adressierungsmerkmal f<strong>in</strong>den. Dies s<strong>in</strong>d die sogenannten Ports. So erreicht man z.B. den<br />

Dienst FTP auf e<strong>in</strong>em Rechner <strong>in</strong> <strong>der</strong> Regel über TCP Port 21, Telnet läuft über TCP<br />

Port 23, DNS auf UDP Port 53. H<strong>in</strong>ter jedem Port steht auf dem Rechner e<strong>in</strong> Prozeß, <strong>der</strong><br />

auf Anfragen wartet, h<strong>in</strong>ter Port 21 entsprechend <strong>der</strong> FTP-Daemon. Solche üblichen und<br />

allgeme<strong>in</strong> bekannten Ports nennt man ”well-known ports”.<br />

Man sollte die Informationen nicht verwechseln. Adressen s<strong>in</strong>d Teile von IP. Ports s<strong>in</strong>d<br />

Teile von UDP und TCP. Es gibt damit also ke<strong>in</strong>e IP-Ports, son<strong>der</strong>n nur UDP Ports und<br />

TCP Ports.<br />

In <strong>der</strong> Datei /etc/services s<strong>in</strong>d etliche ”well-known ports” aufgeführt.<br />

5.14 Aufgaben<br />

5.14.1 Internets<br />

1. Warum wurde e<strong>in</strong> weiteres (hardwareunabhängiges) <strong>Netzwerk</strong>-Protokoll mit TC/IP<br />

geschaffen?<br />

2. Welche an<strong>der</strong>en <strong>Netzwerk</strong>protokolle s<strong>in</strong>d auf <strong>der</strong> gleichen OSI-Schicht anzusiedeln,<br />

wie TCP/IP? Warum spielen die meisten eigentlich ke<strong>in</strong>e Rolle mehr?<br />

5.14.2 Internet Protokoll / Hea<strong>der</strong><br />

1. Wozu dient das TTL-Feld im IP-Hea<strong>der</strong>?<br />

2. Man ergänze m<strong>in</strong>destens vier IP-Hea<strong>der</strong>-Fel<strong>der</strong>!<br />

3. Anhand welchen IP-Hea<strong>der</strong>-Felds kann man unter Umständen erkennen, wieviele Masch<strong>in</strong>en<br />

h<strong>in</strong>ter e<strong>in</strong>er maskierenden Firewall (NAT) laufen?<br />

4. <strong>E<strong>in</strong></strong> Rechner hat e<strong>in</strong> IP-Datagramm empfangen und erfolgreich ausgewertet. Woher<br />

weiss die Masch<strong>in</strong>e, an welche höhere <strong>Netzwerk</strong>schicht <strong>der</strong> Inhalt dieses Pakets (die<br />

sog. Payload) weitergereicht werden soll?


5.14. AUFGABEN 79<br />

5. Welches Protokoll auf welcher Schicht des TCP/IP-Stacks benutzt das Kommando<br />

p<strong>in</strong>g (zur Feststellung <strong>der</strong> Erreichbarkeit von Rechnern)?<br />

6. Was macht das ToS (Type of Service) Feld im IP-Hea<strong>der</strong>? Weshalb wird es meistens<br />

ignoriert?<br />

5.14.3 IP-Netze<br />

1. Was unterscheidet die folgenden IP-Nummern im Netz 134.76.60.0/24: 132.230.4.0,<br />

132.230.4.232, 132.230.4.255, 132.230.4.254, 132.230.4.1 vone<strong>in</strong>an<strong>der</strong>?<br />

2. Wie konnte e<strong>in</strong> Router früher schon an <strong>der</strong> IP-Adresse erkennen, um was für e<strong>in</strong> Netz<br />

(Netzmaske) es sich handelt? Weshalb hat man dieses Konzept aufgegeben?<br />

3. Wenn man e<strong>in</strong> Class-C-<strong>Netzwerk</strong> (Netzmaske 255.255.255.0 <strong>in</strong> vier Subnetze aufspaltet,<br />

wieviele Masch<strong>in</strong>en können dann <strong>in</strong> jedem Netz adressiert werden? Erkläre die<br />

Entscheidung!<br />

4. <strong>E<strong>in</strong></strong>em ISP wurde <strong>der</strong> Nummernblock 82.17.23.0/17 zugeteilt. Nun soll dieser Bereich<br />

<strong>in</strong> vier gleiche Subnetze aufgeteilt werden. Wie lauten diese?<br />

5. <strong>E<strong>in</strong></strong> <strong>Netzwerk</strong> habe die Subnetzmaske 255.255.248.0. Wievele Masch<strong>in</strong>en können maximal<br />

<strong>in</strong> diesem Netz adressiert werden?<br />

6. Ist e<strong>in</strong>e Subnetzmaske <strong>der</strong> Form a) 255.255.255.128 o<strong>der</strong> b) 255.255.213.0 zulässig?<br />

Man begründe die Entscheidung!<br />

7. Was versteht man unter IP-Spoof<strong>in</strong>g? Läßt es sich verh<strong>in</strong><strong>der</strong>n; warum o<strong>der</strong> warum<br />

nicht?<br />

8. Man bastele e<strong>in</strong>e (hypothetische) Netzmaske, die Rechner mit geraden IP-Adressen<br />

<strong>in</strong> e<strong>in</strong> und mit ungeraden Adressen <strong>in</strong> e<strong>in</strong> an<strong>der</strong>es Subnetz legt!<br />

5.14.4 Fragmentierung<br />

1. Warum bietet IP die Möglichkeit Pakete zu fragmentieren?<br />

2. Was versteht man unter Path MTU Discovery (PTMUD)? Die MTU (Maximum<br />

Transfer Unit) gibt die maximale Paketgröße auf dem Data L<strong>in</strong>k/physikalischen Layer<br />

an.<br />

3. Wodurch kann PMTUD von Routern (ungewollt) verh<strong>in</strong><strong>der</strong>t werden?


80 KAPITEL 5. TCP-IP<br />

4. Warum arbeitet man bei <strong>der</strong> Fragmentierung mit Offsets und schreibt nicht e<strong>in</strong>fach<br />

die Größe des Fragments <strong>in</strong> das Feld?<br />

5. Man betrachte die Verschickung e<strong>in</strong>es 4000 Byte Datagramms über e<strong>in</strong> <strong>Netzwerk</strong> mit<br />

e<strong>in</strong>er MTU von 900 Byte. Dabei sei das Orig<strong>in</strong>al mit <strong>der</strong> Identifikationssnummer 345<br />

bezeichnet worden. Wieviele Fragmente werden generiert? Für jedes Fragment gebe<br />

man die Identifikation, die Payload ohne IP-Hea<strong>der</strong>, Offset und den Inhalt des ”More<br />

Fragments” Flags an!<br />

5.14.5 IP-Rout<strong>in</strong>g<br />

1. <strong>E<strong>in</strong></strong> Router hat die folgenden <strong>E<strong>in</strong></strong>träge <strong>in</strong> se<strong>in</strong>er (statischen) Rout<strong>in</strong>g-Tabelle:<br />

Address/Netmask Next Hop<br />

135.46.56.0/22 Interface 0 (direkt)<br />

135.46.60.0/22 Interface 1 (direkt)<br />

192.53.40.2/23 Router 1<br />

87.23.16.0/20 Router 2<br />

0.0.0.0/0 Router 3<br />

Wo schickt <strong>der</strong> Router Pakete mit folgenden Zieladressen lang: 135.46.63.10,<br />

192.53.45.12, 87.23.33.189, 135.46.52.2, 87.23.19.55, 192.53.40.7?<br />

5.14.6 ARP<br />

1. Warum wird e<strong>in</strong>e ARP-Anfrage <strong>in</strong> e<strong>in</strong>em Broadcast-Frame (Ethernet, TokenR<strong>in</strong>g, ...)<br />

geschickt? Wie sieht so e<strong>in</strong> spezielles Frame aus?<br />

2. Warum kommt die ARP-Antwort <strong>in</strong> e<strong>in</strong>em Frame mit e<strong>in</strong>er spezifischen Zieladresse<br />

zurück?<br />

3. Braucht man ARP bei <strong>der</strong> Modem/ISDN-<strong>E<strong>in</strong></strong>wahl?


Kapitel 6<br />

L<strong>in</strong>ux im <strong>Netzwerk</strong><br />

L<strong>in</strong>ux hat sich im Laufe <strong>der</strong> Zeit zu e<strong>in</strong>em <strong>der</strong> führenden Betriebssysteme entwickelt, welches<br />

auch und gerade wegen se<strong>in</strong>er vielfältigen Eigenschaften auch auf Routern 1 e<strong>in</strong>gesetzt wird.<br />

Router s<strong>in</strong>d die zentralen Vermittlungs- und Weiterleitungsstellen im verb<strong>in</strong>dungslosen,<br />

paketorientierten Internet.<br />

L<strong>in</strong>ux kann neben TCP/IP auch <strong>in</strong> AppleTalk, IPX/SPX, Decnet und weiteren <strong>Netzwerk</strong>en<br />

betrieben werden. Die folgenden Ausführungen werden sich jedoch nur am Rande<br />

mit an<strong>der</strong>en Netzen als dem Internet-Protokoll (IP) ause<strong>in</strong>an<strong>der</strong>setzen. Die folgenden<br />

Ausführungen zum OSI-Modell und TCP/IP haben natürlich nicht nur mit L<strong>in</strong>ux zu tun,<br />

son<strong>der</strong>n betreffen alle Rechner, die über <strong>Netzwerk</strong>e mite<strong>in</strong>an<strong>der</strong> (mittels TCP/IP) kommunizieren<br />

können.<br />

IP-<strong>Netzwerk</strong>e s<strong>in</strong>d <strong>in</strong>zwischen die dom<strong>in</strong>ierende Form <strong>der</strong> Rechnervernetzung. Der Komplexitätsgrad<br />

und die Anfor<strong>der</strong>ungen an diese Netze haben stark zugenommen. Während<br />

lange Zeit die e<strong>in</strong>fache <strong>E<strong>in</strong></strong>b<strong>in</strong>dung e<strong>in</strong>er L<strong>in</strong>ux-Masch<strong>in</strong>e <strong>in</strong> bestehende <strong>Netzwerk</strong>e durch<br />

Ethernet o<strong>der</strong> Modem/ISDN im Vor<strong>der</strong>grund stand, geht mit den aktuellen Kernels bedeutend<br />

mehr.<br />

6.1 IP-Konfiguration unter L<strong>in</strong>ux<br />

Die <strong>E<strong>in</strong></strong>b<strong>in</strong>dung von L<strong>in</strong>ux <strong>in</strong> e<strong>in</strong> IP-<strong>Netzwerk</strong> geschieht durch die Zuweisung e<strong>in</strong>er e<strong>in</strong>deutigen<br />

Adresse. Diese ist entwe<strong>der</strong> weltweit erreichbar o<strong>der</strong> zum<strong>in</strong>dest im lokalen <strong>Netzwerk</strong><br />

nur e<strong>in</strong>mal vorhanden.<br />

6.1.1 Die traditionellen Tools<br />

Die Konfiguration <strong>der</strong> <strong>Netzwerk</strong>schnittstellen unter L<strong>in</strong>ux erfolgt mit dem Kommando ifconfig.<br />

Aufgerufen ohne Optionen liefert es die konfigurierten Schnittstellen:<br />

shuttle:~/ > /sb<strong>in</strong>/ifconfig<br />

eth0 L<strong>in</strong>k encap:Ethernet HWaddr 00:60:08:38:C7:29<br />

<strong>in</strong>et addr:10.10.156.2 Bcast:10.10.159.255 Mask:255.255.252.0<br />

<strong>in</strong>et6 addr: fe80::240:c7ff:fe99:35ad/10 Scope:L<strong>in</strong>k<br />

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1<br />

RX packets:3841 errors:0 dropped:0 overruns:0 frame:0<br />

TX packets:2437 errors:0 dropped:0 overruns:0 carrier:0<br />

collisions:0 txqueuelen:100<br />

RX bytes:448759 (438.2 Kb) TX bytes:804 (804.0 Kb)<br />

Interrupt:9 Base address:0xe400<br />

1 beispielsweise im Consumer-Bereich auf DSL- o<strong>der</strong> WLAN-Routern<br />

81


82 KAPITEL 6. LINUX IM NETZWERK<br />

lo L<strong>in</strong>k encap:Local Loopback<br />

<strong>in</strong>et addr:127.0.0.1 Mask:255.0.0.0<br />

<strong>in</strong>et6 addr: ::1/128 Scope:Host<br />

UP LOOPBACK RUNNING MTU:3840 Metric:1<br />

RX packets:26 errors:0 dropped:0 overruns:0 frame:0<br />

TX packets:26 errors:0 dropped:0 overruns:0 carrier:0<br />

collisions:0 txqueuelen:0<br />

RX bytes:118360005 (12.8 Mb) TX bytes:118360005 (12.8 Mb)<br />

In <strong>der</strong> Ausgabe sieht man je nach Interface die Angaben zur def<strong>in</strong>ierten IP, die Hardwareadresse,<br />

wenn es sich um e<strong>in</strong> Ethernet<strong>in</strong>terface handelt, sonst den Po<strong>in</strong>t-to-Po<strong>in</strong>tpartner<br />

(z.B. bei Modem und ISDN). Weiterh<strong>in</strong> wird angezeigt, welche Protokolle auf dem Interface<br />

registriert s<strong>in</strong>d (z.B. Appletalk und IPv6 s<strong>in</strong>d neben dem klassischen IPv4 denkbar), wieviel<br />

Byte die maximale Paketgrösse transportiert und die ”Kosten” (Metrik) des Interfaces. In<br />

den folgenden Zeilen gibt es Angaben zu den empfangenen und gesendeten Paketen, sowie<br />

den evtl. aufgetretenen Fehlern. Handelt es sich um e<strong>in</strong> Ethernetanschluss wird <strong>in</strong> e<strong>in</strong>er<br />

weiteren Zeile die Zahl <strong>der</strong> Kollisionen vermerkt und die Länge <strong>der</strong> Queue für ausgehende<br />

Pakete.<br />

Mit dem Befehl: ifconfig eth0 10.10.156.2 netmask 255.255.255.0 broadcast<br />

10.10.56.255 wird z.B. die erste <strong>Netzwerk</strong>karte mit <strong>der</strong> IP-Nummer 10.10.156.2 versehen.<br />

Ist e<strong>in</strong>e weitere <strong>Netzwerk</strong>karte im Rechner enthalten und soll diese auch e<strong>in</strong>gerichtet<br />

werden, dann spricht man sie mit ifconfig eth1 ... an. Möchte man auf e<strong>in</strong>er <strong>Netzwerk</strong>karte<br />

mehrere Netze bzw. IP-Nummern konfigurieren, kann dafür e<strong>in</strong> IP-Alias def<strong>in</strong>iert<br />

werden, wenn <strong>in</strong> <strong>der</strong> Kernelkonfiguration ”IP-Alias<strong>in</strong>g” aktiviert wurde: ifconfig eth0:0<br />

... erlaubt es nun e<strong>in</strong>e weitere IP auf <strong>der</strong> ersten <strong>Netzwerk</strong>karte e<strong>in</strong>zutragen. Dieses Interface<br />

wird vom Kernel getrennt von ”eth0” verwaltet, d.h. wenn ich Pakete zwischen<br />

den beiden Interfaces routen möchte, muss ich dieses im Kernel e<strong>in</strong>schalten (echo "1"<br />

>/proc/sys/net/ipv4/conf/ ip forward). <strong>E<strong>in</strong></strong> Alias auf e<strong>in</strong>er <strong>Netzwerk</strong>karte kann man<br />

jedoch nur konfigurieren, wenn diese <strong>Netzwerk</strong>karte bereits e<strong>in</strong>gerichtet wurde.<br />

6.1.2 Rout<strong>in</strong>g<br />

Im Internet geht es an je<strong>der</strong> Stelle um die Weiterleitung von Paketen von e<strong>in</strong>er Quellzur<br />

Zieladresse. Jedem Netzknoten, die Internet-Router, müssen für jedes IP-Paket neu<br />

entscheiden, wo sie es langschicken. Rout<strong>in</strong>gentscheidungen müssen jedoch schon auf dem<br />

Quellrechner e<strong>in</strong>es Paketes getroffen werden. Dieses gilt für jede L<strong>in</strong>ux-Masch<strong>in</strong>e mit <strong>in</strong>stalliertem<br />

TCP/IP-Stack. Ist das Paket<br />

• für das Loopback-Interface bestimmt<br />

• soll es im lokalen Ethernet zugestellt werden<br />

• soll es über e<strong>in</strong> Interface laufen, an dem e<strong>in</strong> Modem hängt<br />

• soll es an das Default-Gateway im Netz weitergeleitet werden.<br />

Der L<strong>in</strong>ux-Kernel muss also für alle ausgehenden Pakete entscheiden, <strong>in</strong> welches <strong>Netzwerk</strong><br />

er die Pakete schicken soll. Hierzu verwaltet <strong>der</strong> Kernel e<strong>in</strong>e eigene Rout<strong>in</strong>g Tabelle. Diese<br />

enthält Informationen über Routen zu an<strong>der</strong>en <strong>Netzwerk</strong>knoten speichert. Je<strong>der</strong> <strong>E<strong>in</strong></strong>trag<br />

e<strong>in</strong>er Route besitzt dabei e<strong>in</strong>en e<strong>in</strong>deutigen Schlüssel bestehend aus <strong>der</strong> <strong>Netzwerk</strong>adresse<br />

und <strong>der</strong> Netzmaske des verbundenen <strong>Netzwerk</strong>s. Der nächste Hop für e<strong>in</strong> Paket welches<br />

nicht lokal zugestellt wird, ist das Default-Gateway. Dieses Gateway muss <strong>in</strong> e<strong>in</strong>em <strong>der</strong><br />

angeschlossenen Subnetze liegen, da es sonst nicht erreicht werden kann. Üblicherweise läßt<br />

sich <strong>der</strong> Adm<strong>in</strong> diese Tabelle durch route -n o<strong>der</strong> netstat -rn:


6.1. IP-KONFIGURATION UNTER LINUX 83<br />

l<strong>in</strong>ux:~ # route -n<br />

Kernel IP Routentabelle<br />

Ziel Router Genmask Flags Metric Ref Use Iface<br />

10.8.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0<br />

192.168.15.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1<br />

169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1<br />

127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo<br />

0.0.0.0 192.168.15.1 0.0.0.0 UG 0 0 0 eth1<br />

ausgeben.<br />

In den SuSE-L<strong>in</strong>ux-Distributionen werden die IP-<strong>E<strong>in</strong></strong>träge unterhalb des Konfigurationsverzeichnisses<br />

/etc/sysconfig/network gespeichert und über das Runlevel-Skript /etc/<strong>in</strong>it.d/<br />

network start 2 mittels ip aktiviert. Bezieht <strong>der</strong> Rechner se<strong>in</strong>e IP dynamisch per DHCP, so<br />

wird statt ip e<strong>in</strong> DHCP-Client-Tool, wie dhclient, pump o<strong>der</strong> dhcpcd ausgeführt. Diese<br />

Dienste beziehen die IP-Konfiguration über das lokale Ethernet und tragen die Ergebnisse<br />

direkt o<strong>der</strong> per Skript dhclient-script <strong>in</strong> die <strong>Netzwerk</strong>konfiguration e<strong>in</strong>.<br />

6.1.3 Next Generation IP-Config<br />

Die meisten Adm<strong>in</strong>istratoren kennen und arbeiten immer noch ausschliesslich mit den traditionellen<br />

Werkzeugen ifconfig und route. Das IProute2-Paket erlaubt jedoch e<strong>in</strong>e weit<br />

höhere Flexibilität. IProute2 ist seit Kernel-Version 2.2 standardmässig für das Rout<strong>in</strong>g<br />

von IP-Paketen zuständig. Es beherrscht e<strong>in</strong>e ganze Reihe neuer Fähigkeiten:<br />

• des Weiterleitens<br />

• des Filterns<br />

• <strong>der</strong> Klassifikation<br />

von IP-Paketen. Hierzu zählen beispielsweise das <strong>E<strong>in</strong></strong>richten von Backup-Gateways und das<br />

Verwenden von mehreren Default-Gateways. Wo früher nur die Zieladresse e<strong>in</strong>es Paketes<br />

bei <strong>der</strong> Rout<strong>in</strong>g-Entscheidung e<strong>in</strong>e Rolle spielte, können nun auch die Absendeadressen<br />

hierfür <strong>in</strong> Betracht gezogen werden. Ebenfalls lassen sich verschiedene Wege und Prioritäten<br />

anhand von e<strong>in</strong>gesetzten höher liegenden Protokollen (TCP und UDP) und <strong>der</strong>en Ports<br />

festlegen. Auf diese Weise erhält <strong>der</strong> ”best-effort” Service IP e<strong>in</strong>e Quality of Service (QoS)<br />

Komponenten verpasst. Diese ist deutlich mächtiger als die meist sporadische Verwendung<br />

<strong>der</strong> Type of Service (ToS) Flags des IP-Hea<strong>der</strong>s.<br />

IProute2 führt neue Kommandos e<strong>in</strong>: ip und tc s<strong>in</strong>d die beiden wichtigsten. Das erste<br />

Kommando dient zur Bearbeitung <strong>der</strong> Kernel-Rout<strong>in</strong>g-Tabelle. Das zweite zur Manipulation<br />

verschiedener Verkehrsklassen. Letzteres ist Thema an an<strong>der</strong>er Stelle im Skript. Die<br />

Tool-Suite enthält weitere Kommandos, wie nstat, ifstat, routel, rtstat. Sie generieren<br />

Statistiken und Überblicke.<br />

6.1.4 Das Kommando ip<br />

IProute2 stammt von Alexey Kuznetsov entwickelt. Das Projekt besteht seit 1999 und wird<br />

seit Kernel 2.2 für das lokale Rout<strong>in</strong>g von IP-Paketen benutzt. Folgende Aktionen kann e<strong>in</strong><br />

Sysadm<strong>in</strong> mit IProute2 vornehmen:<br />

• Management von IP-Adressen (IPv4, IPv6)<br />

2 Die Runlevel-Skripten s<strong>in</strong>d auch direkt mit rcnetwork aufrufbar, da dieses L<strong>in</strong>ks aus dem Verzeichnis<br />

/usr/sb<strong>in</strong> auf die entsprechenden Runlevelskripten s<strong>in</strong>d.


84 KAPITEL 6. LINUX IM NETZWERK<br />

• ARP Tabellen Management<br />

• Rout<strong>in</strong>g Tabellen Management<br />

• Rout<strong>in</strong>g Policy Database Management<br />

• IP Tunnel Konfiguration<br />

• Paket und Routen Monitor<br />

• Traffic Shap<strong>in</strong>g (QoS)<br />

ip ist e<strong>in</strong> zusammengesetztes Kommando. Se<strong>in</strong>e Funktion wird durch das zu bearbeitende<br />

Objekt bestimmt. Allgeme<strong>in</strong> setzt sich <strong>der</strong> Aufruf von ip wie folgt zusammen: ip<br />

[OPTIONS] OBJECT [COMMAND[ARGUMENTS]|help]<br />

Die OPTIONS bee<strong>in</strong>flussen wie bei gewohnten Kommandos auch das generelle Verhalten<br />

und die Ausgabe die ip Befehls. Optionen folgen direkt nach dem Kommando und s<strong>in</strong>d mit<br />

dem ”-” Zeichen e<strong>in</strong>geleitet. Sie können nicht h<strong>in</strong>ter dem Objekt stehen.<br />

• -V[ersion] - gibt die aktuelle ip-Version aus.<br />

• -s[tatistics] zeigt passend zum Objekt ausführlichere Informationen an.<br />

• -f[amily] <strong>in</strong>et, <strong>in</strong>et6, l<strong>in</strong>k legt die die Protokollfamilie fest.<br />

• -o[nel<strong>in</strong>e] sorgt für die Ausgabe aller Informationen <strong>in</strong> e<strong>in</strong>er Zeile. So läßt sich die<br />

Ausgabe <strong>in</strong> Skripten oft besser bearbeiten.<br />

• -r[esolve] schaltet die Namensauflösung von IP-Adressen und Netzen e<strong>in</strong>.<br />

OBJECT bezeichnet den Objekttyp. Zu diesem lassen sich Informationen ausgeben.<br />

O<strong>der</strong> es wird e<strong>in</strong>e Operation auf ihn angewendet. Das Objekt<br />

• l<strong>in</strong>k bezeichnet e<strong>in</strong> physikalisches o<strong>der</strong> logisches Interface bzw. <strong>Netzwerk</strong>adapter.<br />

• address ist die IPv4 o<strong>der</strong> IPv6 Adresse e<strong>in</strong>es Adapters.<br />

• neighbour greift auf den Kernel ARP Cache zu.<br />

• route gibt Rout<strong>in</strong>g Tabellen aus und erlaubt <strong>der</strong>en Bearbeitung<br />

• rule bezeichnet e<strong>in</strong>e Regel <strong>in</strong> <strong>der</strong> Rout<strong>in</strong>g Policy Database.<br />

• maddress dient zur Bearbeitung von Multicast Adressen.<br />

• mroute ist für Multicast Rout<strong>in</strong>g Cache <strong>E<strong>in</strong></strong>träge<br />

• tunnel def<strong>in</strong>iert IP-<strong>in</strong>-IP Tunnel.<br />

COMMAND spezifiziert die Aktion, die mit dem OBJECT veranstaltet werden soll.<br />

Die Art und Menge <strong>der</strong> möglichen Aktionen hängt dabei vom Objekttyp ab. Üblicherweise<br />

lassen sich Objekte h<strong>in</strong>zuzufügen (add), entfernen (delete) o<strong>der</strong> anzeigen (show). <strong>E<strong>in</strong></strong>ige<br />

Objekte kennen weniger an<strong>der</strong>e weitere Aktionen.<br />

ARGUMENTS s<strong>in</strong>d Kommando-Optionen. Sie hängen von <strong>der</strong> Art des Kommandos<br />

und vom Objekttyp ab. Es existieren zwei Typen von Argumenten:<br />

• flags - können durch e<strong>in</strong>zelnes Schlüsselwort abgekürzt werden.<br />

• parameters - bestehen aus e<strong>in</strong>em Schlüsselwort gefolgt von e<strong>in</strong>em Wert.<br />

help liefert immer e<strong>in</strong>e Kurzhilfe für das Kommando generell o<strong>der</strong> die Anwendung des<br />

Kommandos auf e<strong>in</strong>zelne Objekte, z.B. ip help o<strong>der</strong> ip route help.


6.1. IP-KONFIGURATION UNTER LINUX 85<br />

6.1.5 Erste Schritte mit ip<br />

Die folgenden Beispiele sollen demonstrieren, wie ip die Standardaufgaben von route, arp<br />

und ifconfig übernimmt, die e<strong>in</strong> Sysadm<strong>in</strong> üblicherweise damit ausführt. Dazu sollte man<br />

sagen, dass bereits seit e<strong>in</strong>iger Zeit die beiden traditionellen Kommandos ifconfig und<br />

route im H<strong>in</strong>terground ip verwenden. Das Anzeigen aller Interfaces mit darauf def<strong>in</strong>ierten<br />

IP-Adressen erfolgt durch:<br />

l<strong>in</strong>ux02:~ # ip addr show<br />

1: lo: mtu 16436 qdisc noqueue<br />

l<strong>in</strong>k/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00<br />

<strong>in</strong>et 127.0.0.1/8 brd 127.255.255.255 scope host lo<br />

<strong>in</strong>et6 ::1/128 scope host<br />

valid_lft forever preferred_lft forever<br />

2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000<br />

l<strong>in</strong>k/ether 00:e0:29:0b:f9:38 brd ff:ff:ff:ff:ff:ff<br />

<strong>in</strong>et 10.8.4.254/24 brd 10.8.4.255 scope global eth0<br />

<strong>in</strong>et 10.2.13.248/32 scope global eth0<br />

<strong>in</strong>et6 fe80::2e0:29ff:fe0b:f938/64 scope l<strong>in</strong>k<br />

valid_lft forever preferred_lft forever<br />

3: eth1: mtu 1500 qdisc noop qlen 1000<br />

l<strong>in</strong>k/ether 00:0c:6e:15:03:0e brd ff:ff:ff:ff:ff:ff<br />

4: sit0: mtu 1480 qdisc noqueue<br />

l<strong>in</strong>k/sit 0.0.0.0 brd 0.0.0.0<br />

11: tun0: mtu 1412 qdisc pfifo_fast qlen 10<br />

l<strong>in</strong>k/[65534]<br />

<strong>in</strong>et 132.230.129.2/32 scope global tun0<br />

Die Informationen zur Rout<strong>in</strong>g Tabelle liefert das Kommando ip wie folgt:<br />

l<strong>in</strong>ux02:~ # ip route show<br />

10.1.1.11 via 10.8.4.1 dev eth0 src 10.2.13.248 mtu 1500 advmss 1460 \<br />

fragtimeout 64<br />

10.8.4.0/24 dev eth0 proto kernel scope l<strong>in</strong>k src 10.8.4.254<br />

169.254.0.0/16 dev eth0 scope l<strong>in</strong>k<br />

10.0.0.0/14 via 10.8.4.1 dev eth0 src 10.2.13.248<br />

127.0.0.0/8 dev lo scope l<strong>in</strong>k<br />

default dev tun0 scope l<strong>in</strong>k<br />

Das Bild sieht etwas an<strong>der</strong>s als von route gewohnt aus. Adm<strong>in</strong>istratoren mit langer IP-<br />

Erfahrung werden sich schnell zurecht f<strong>in</strong>den und die Vorteile von ip schätzen lernen.<br />

Das Setzen e<strong>in</strong>er IP-Adresse auf e<strong>in</strong> Interface o<strong>der</strong> das H<strong>in</strong>zufügen e<strong>in</strong>er weiteren, durchaus<br />

auf dasselbe, geschieht mit:<br />

l<strong>in</strong>ux02:~ # ip addr add 10.8.1.10/24 broadcast 10.8.1.255 dev eth0<br />

l<strong>in</strong>ux02:~ # ip addr add 10.8.2.10/24 broadcast 10.8.2.255 dev eth0<br />

l<strong>in</strong>ux02:~ # ip addr show eth0<br />

2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000<br />

l<strong>in</strong>k/ether 00:0c:29:5a:b3:d6 brd ff:ff:ff:ff:ff:ff<br />

<strong>in</strong>et 10.8.1.10/24 brd 10.8.1.255 scope global eth0<br />

<strong>in</strong>et 10.8.2.10/24 brd 10.8.2.255 scope global eth0


86 KAPITEL 6. LINUX IM NETZWERK<br />

Die Angabe <strong>der</strong> <strong>Netzwerk</strong>maske ist e<strong>in</strong>igen vielleicht etwas ungewohnt. Statt <strong>in</strong> <strong>der</strong> klassischen<br />

Form e<strong>in</strong>er IP-Adresse (hier wäre es die 255.255.255.0) erfolgt die Beschreibung<br />

durch die Zahl <strong>der</strong> <strong>E<strong>in</strong></strong>sen im Präfix (hier 24). Die (Hardware-)Daten zu e<strong>in</strong>em e<strong>in</strong>zelnen<br />

Interface zeigt:<br />

l<strong>in</strong>ux02:~ # ip l<strong>in</strong>k show eth0<br />

2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000<br />

l<strong>in</strong>k/ether 00:0c:29:5a:b3:d6 brd ff:ff:ff:ff:ff:ff<br />

l<strong>in</strong>ux02:~ # ip l<strong>in</strong>k set eth0 down<br />

l<strong>in</strong>ux02:~ # ip l<strong>in</strong>k set eth0 address 00:20:AA:20:AA:20<br />

l<strong>in</strong>ux02:~ # ip l<strong>in</strong>k set eth0 mtu 1400<br />

l<strong>in</strong>ux02:~ # ip l<strong>in</strong>k set eth0 name dsl0<br />

l<strong>in</strong>ux03:~ # ip l<strong>in</strong>k show dsl0<br />

2: dsl0: mtu 1400 qdisc pfifo_fast qlen 1000<br />

l<strong>in</strong>k/ether 00:20:aa:20:aa:20 brd ff:ff:ff:ff:ff:ff<br />

Abschalten läßt es sich mit dem darauf folgenden Befehl. Wenn <strong>der</strong> Adm<strong>in</strong> die MAC-Adresse<br />

des Interfaces än<strong>der</strong>n will, kann er dazu ebenfalls das Subkommando ”set” verwenden. Nur<br />

diesmal ist es nicht e<strong>in</strong> e<strong>in</strong>faches Flag (down) son<strong>der</strong>n e<strong>in</strong> Parameter gefolgt durch e<strong>in</strong>en<br />

Wert (die neue Hardwareadresse). Eben dieses gilt für die Reduktion <strong>der</strong> MTU um 100 Byte<br />

o<strong>der</strong> für das Setzen e<strong>in</strong>es an<strong>der</strong>en Interface-Namens. Das macht dann S<strong>in</strong>n, wenn <strong>der</strong> Adm<strong>in</strong><br />

Interfaces beispielsweise nach ihrer Funktion kennzeichnen möchte. Anschliessend erfolgt die<br />

Anzeige <strong>der</strong> Konfiguration mit dem neuen Interface-Namen (hier dsl0). Das Interface ist<br />

abgeschaltet - zu sehen daran, dass <strong>in</strong> <strong>der</strong> Anzeige bei den Flags ”UP” fehlt. In jedem<br />

<strong>der</strong> gezeigten Aufrufe wurde das Interface direkt h<strong>in</strong>ter dem Kommando (set o<strong>der</strong> show)<br />

angegeben.<br />

Mit <strong>der</strong> gesetzten Option ”-s” gibts etwas mehr zu sehen:<br />

l<strong>in</strong>ux02:~ # ip -s l<strong>in</strong>k show eth0<br />

2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000<br />

l<strong>in</strong>k/ether 00:e0:29:0b:f9:38 brd ff:ff:ff:ff:ff:ff<br />

RX: bytes packets errors dropped overrun mcast<br />

162342126 915844 0 0 0 0<br />

TX: bytes packets errors dropped carrier collsns<br />

1020902001 1147698 0 0 0 0<br />

Die Statistiken zum Interface kennt man schon von ifconfig. ip zeigt sie <strong>in</strong> e<strong>in</strong>er Tabelle,<br />

was die skriptbasierte Auswertung erleichtert. Mehr Informationen gibt es bei Wie<strong>der</strong>holung<br />

<strong>der</strong> Option (”-s -s”). Dann schlüsselt ip noch die Art <strong>der</strong> aufgetretenen Fehler auf.<br />

Der ARP-Cache kann mit:<br />

l<strong>in</strong>ux02:~ # ip neighbor show<br />

10.8.4.220 dev eth0 lladdr 00:10:a4:8d:56:0a nud delay<br />

10.8.4.1 dev eth0 lladdr 00:0f:66:c7:73:e8 nud stale<br />

10.8.4.204 dev eth0 lladdr 00:08:74:4d:6f:3f nud stale<br />

ausgelesen werden.<br />

6.2 Weitergehende Anwendungen von IProute2<br />

In den ersten Abschnitten wurden e<strong>in</strong>ige IP- und Rout<strong>in</strong>gkonfigurationen gezeigt. Mit den<br />

IProute2-Kommandos ist jedoch noch e<strong>in</strong>iges mehr dr<strong>in</strong>.


6.2. WEITERGEHENDE ANWENDUNGEN VON IPROUTE2 87<br />

6.2.1 Weitere Tools<br />

Das IProute2-Paket enthält e<strong>in</strong>ige weitere nützliche Programme. So liefert das Kommando<br />

nstat Statistiken des Kernels zum IP-Verkehr.<br />

l<strong>in</strong>ux02:~ # nstat<br />

#kernel<br />

IpInReceives 1011352 0.0<br />

IpForwDatagrams 48960 0.0<br />

IpInUnknownProtos 3 0.0<br />

IpInDelivers 953958 0.0<br />

IpOutRequests 1255516 0.0<br />

IpReasmReqds 16824 0.0<br />

IpReasmOKs 8412 0.0<br />

IpFragOKs 2 0.0<br />

IcmpInErrors 5437 0.0<br />

IcmpInDestUnreachs 5 0.0<br />

IcmpInTimeExcds 222 0.0<br />

IcmpInParmProbs 4736 0.0<br />

IcmpInEchoReps 476 0.0<br />

IcmpInTimestamps 3 0.0<br />

IcmpOutErrors 26789 0.0<br />

IcmpOutTimeExcds 26313 0.0<br />

IcmpOutTimestamps 476 0.0<br />

TcpActiveOpens 1258 0.0<br />

TcpPassiveOpens 323 0.0<br />

[ ... ]<br />

Diese Informationen kennen e<strong>in</strong>ige vielleicht schon von <strong>der</strong> SNMP-Standard-MIB. Letztendlich<br />

macht beispielsweise NetSNMP unter L<strong>in</strong>ux nichts an<strong>der</strong>es, als diese Kernel-Informationen<br />

auszulesen. So erhält <strong>der</strong> Adm<strong>in</strong> Informationen zu empfangenen und gesendetet<br />

IP-Paketen (IpInReceives, IpOutRequests), wieviele davon geroutet wurden (IpForwDatagrams),<br />

unroutebare Pakete (IpOutNoRoutes). Ebenfalls gibt es Statistiken zum Internet<br />

Control Message Protocol (ICMP). ICMP liefert IP-Fehlermeldungen, wenn <strong>Netzwerk</strong>e,<br />

Masch<strong>in</strong>en, höherschichtige Protokolle o<strong>der</strong> Ports nicht erreichbar s<strong>in</strong>d (IcmpInDestUnreachs).<br />

P<strong>in</strong>g benutzt mit Echo und Reply diesen Dienst für Tests auf Erreichbarkeit von<br />

IP-Adressen (IcmpInEchoReps). Weiterh<strong>in</strong> gibt es Statistiken zu IPv6, UDP und TCP.<br />

routel ist e<strong>in</strong> Shell-Skript und gibt e<strong>in</strong>e ausführliche Kernel-Rout<strong>in</strong>g-Table aus. ifstat<br />

fasst die Statistiken zu Datenraten <strong>der</strong> e<strong>in</strong>zelnen <strong>Netzwerk</strong><strong>in</strong>terfaces zu e<strong>in</strong>er Tabelle zusammen:<br />

l<strong>in</strong>ux02:~ # ifstat<br />

ifstat: history is aged out, resett<strong>in</strong>g<br />

#kernel<br />

Interface RX Pkts/Rate TX Pkts/Rate RX Data/Rate TX Data/Rate<br />

RX Errs/Drop TX Errs/Drop RX Over/Rate TX Coll/Rate<br />

lo 3905 0 3905 0 393392 0 393392 0<br />

0 0 0 0 0 0 0 0<br />

eth0 915949 0 1120K 0 158546K 0 996987K 0<br />

0 0 0 0 0 0 0 0<br />

tun0 9071 0 13359 0 3535K 0 1090K 0<br />

0 0 0 0 0 0 0 0<br />

Der Befehl ss zeigt die aktuell bestehenden TCP-Verb<strong>in</strong>dungen an:<br />

l<strong>in</strong>ux02:~ # ss<br />

State Recv-Q Send-Q Local Address:Port Peer Address:Port


88 KAPITEL 6. LINUX IM NETZWERK<br />

ESTAB 0 0 132.230.129.7:56946 132.230.1.142:ssh<br />

ESTAB 0 0 10.8.4.254:57051 10.8.4.205:microsoft-ds<br />

ESTAB 0 0 132.230.129.7:56687 134.76.63.80:ssh<br />

Zu weiteren Kommandos und ausführlicheren Beschreibungen sei auf die mitgelieferte Dokumentation<br />

o<strong>der</strong> weiterführende Literatur verwiesen.<br />

6.2.2 Rout<strong>in</strong>g Policy Database<br />

Klassisches TCP/IP Rout<strong>in</strong>g wertet auf dem Weg e<strong>in</strong>es Paketes nur dessen Zieladresse aus.<br />

Erst am Ziel wird im Falle e<strong>in</strong>er Antwort die Quelladresse benutzt. Oftmals ist jedoch<br />

Rout<strong>in</strong>g auf <strong>der</strong> Basis von an<strong>der</strong>en IP-Hea<strong>der</strong> Daten wie beispielsweise <strong>der</strong> Quelladresse,<br />

des höherschichtigen Protokolls o<strong>der</strong> ToS erwünscht. Da sich e<strong>in</strong>zelne Dienste gut an ihren<br />

Portnummern untscheiden lassen, soll vielfach auch <strong>der</strong> nächste Hea<strong>der</strong> <strong>in</strong> Betracht gezogen<br />

werden. Der Port steht im TCP o<strong>der</strong> UDP-Kopf. Diese Art des Rout<strong>in</strong>gs bezeichnet man<br />

als Policy Rout<strong>in</strong>g. Viele Adm<strong>in</strong>s kennen dieses Konzept bereits von <strong>der</strong> <strong>E<strong>in</strong></strong>richtung e<strong>in</strong>er<br />

Firewall.<br />

In IProute2 wird das Policy Rout<strong>in</strong>g durch e<strong>in</strong>e Rout<strong>in</strong>g Policy Database (RPDB) und<br />

e<strong>in</strong>em Set von Regeln implementiert. Die RPDB besteht aus 255 Tabellen, mit denen IP-<br />

Pakete die bestimmten Mustern folgen, geroutet werden können. Die Muster lassen sich mit<br />

dem Befehl ip rule und die Rout<strong>in</strong>g Tabellen mit ip route manipulieren.<br />

Immer e<strong>in</strong>gerichtet s<strong>in</strong>d drei vorkonfigurierte Tabellen ”local”, ”ma<strong>in</strong>” und ”default”.<br />

Dazu gehören drei Regeln, die bestimmen wann diese Tabellen für das Rout<strong>in</strong>g aufgerufen<br />

werden sollen. Die Regeln werden <strong>in</strong> <strong>der</strong> Reihenfolge ihrer Priorität abgearbeitet. Die<br />

Priorität ist <strong>der</strong> Wert vor dem Doppelpunkt.<br />

l<strong>in</strong>ux02:~ # ip rule show<br />

0: from all lookup local<br />

32766: from all lookup ma<strong>in</strong><br />

32767: from all lookup default<br />

In <strong>der</strong> vorkonfigurierten <strong>E<strong>in</strong></strong>stellung wird für jedes ankommende Paket die Route zuerst <strong>in</strong><br />

<strong>der</strong> Tabelle local nachgeschlagen. Falls sie dort nicht steht, werden die Tabellen ma<strong>in</strong> und<br />

danach default befragt.<br />

Mit Hilfe <strong>der</strong> RPDB lassen sich nun Fragestellungen, wie das Rout<strong>in</strong>g <strong>in</strong> Abhängigkeit<br />

von <strong>der</strong> Absendeadresse o<strong>der</strong> das Rout<strong>in</strong>g mit mehreren Gateways e<strong>in</strong>fach realisieren. Das<br />

Rout<strong>in</strong>g nach Quelladresse demonstriert das erste Beispiel. Sei e<strong>in</strong> kle<strong>in</strong>es Firmennetz über<br />

zwei Provi<strong>der</strong> an das Internet angeschlossen. <strong>E<strong>in</strong></strong> Provi<strong>der</strong> bietete e<strong>in</strong>e schnelle Leitung, die<br />

jedoch relativ teuer sei. Der an<strong>der</strong>e Provi<strong>der</strong> sei billig, hat aber e<strong>in</strong>e deutliche Verzögerung.<br />

Es sollen daher nur Pakete vom Voice-over-IP-Gateway <strong>der</strong> Beispielfirma (IP-Adresse<br />

192.168.100.100) über den schnellen Provi<strong>der</strong> 192.168.1.254 geleitet werden. Alle an<strong>der</strong>en<br />

Pakete nehmen den verzögerten Weg über das Gateway 192.168.2.254:<br />

Alle Masch<strong>in</strong>en im privaten Subnetz 192.168.100.0 benutzen e<strong>in</strong> geme<strong>in</strong>sames L<strong>in</strong>ux<br />

Default-Gateway. Auf diesem Gateway soll anhand <strong>der</strong> Quelladresse entschieden werden,<br />

über welchen Router (das können beispielsweise kle<strong>in</strong>e <strong>in</strong>tegrierte DSL/ISDN-Router se<strong>in</strong>)<br />

e<strong>in</strong> Paket se<strong>in</strong>en weiteren Weg nimmt.<br />

Für dieses Regelset wird zuerst e<strong>in</strong>e neue Tabelle ”SourceRout<strong>in</strong>g” <strong>in</strong> <strong>der</strong> Datei /etc/<br />

iproute2/rt tables e<strong>in</strong>getragen. Hierfür muss e<strong>in</strong>e Regel erstellt werden, die für alle Pakete<br />

mit <strong>der</strong> Quelladresse 192.168.100.100 die Rout<strong>in</strong>g Tabelle ”SourceRout<strong>in</strong>g” befragt.<br />

l<strong>in</strong>ux02:~# echo 100 SourceRout<strong>in</strong>g >> /etc/iproute2/rt_tables<br />

l<strong>in</strong>ux02:~# ip rule add from 192.168.100.100 table SourceRout<strong>in</strong>g<br />

l<strong>in</strong>ux02:~# ip rule show


6.2. WEITERGEHENDE ANWENDUNGEN VON IPROUTE2 89<br />

Abbildung 6.1: Default-Gateway mit zwei Wegen zu verschiedenen Routern<br />

0: from all lookup local<br />

32765: from 192.168.100.100 lookup SrcRout<strong>in</strong>g<br />

32766: from all lookup ma<strong>in</strong><br />

32767: from all lookup default<br />

Zum Schluss wird noch das schnelle Gateway als Standard Route <strong>in</strong> die Tabelle Source-<br />

Rout<strong>in</strong>g e<strong>in</strong>getragen. Ab dann werden alle Pakete von <strong>der</strong> IP-Adresse 192.168.100.100 über<br />

den schnellen Weg geschickt.<br />

l<strong>in</strong>ux:~# ip route add default via 192.168.1.254 dev eth0 table SourceRout<strong>in</strong>g<br />

6.2.3 Generelle 2-Wege-Routen<br />

Das folgende Beispiel befaßt sich wie<strong>der</strong> mit dem Rout<strong>in</strong>g über zwei Gateways. Es können<br />

auch mehrere se<strong>in</strong>, das spielt hier aber ke<strong>in</strong>e Rolle. Die Fragestellung ist etwas modifiziert:<br />

• Wie kann man ausgehenden Verkehr gleichmässig auf beide Strecken verteilen (Load<br />

Balanc<strong>in</strong>g)?<br />

• Wie lassen sich Pakete, die über e<strong>in</strong>e Leitung kommen wie<strong>der</strong> über dieselbe verschickt<br />

werden (Split Access)?<br />

• Wie kann e<strong>in</strong>e Backup-Default-Route def<strong>in</strong>iert werden, die nur bei Ausfall <strong>der</strong> Default-<br />

Route benutzt wird?<br />

In e<strong>in</strong>em ersten Schritt legt man zwei neue Rout<strong>in</strong>g Tabellen Route1 und Route2 <strong>in</strong><br />

/etc/iproute2/rt tables an, identisch zum eben beschriebenen Verfahren. Route1 sei dabei<br />

die Tabelle für Provi<strong>der</strong> 1 und entsprechend Route2 die für Provi<strong>der</strong> 2.<br />

l<strong>in</strong>ux02:~# ip route add 132.230.129.0/28 dev eth0 src 132.230.129.1 table Route1<br />

l<strong>in</strong>ux02:~# ip route add default via 132.230.129.15 table Route1<br />

l<strong>in</strong>ux02:~# ip route add 80.168.20.0/25 dev eth1 src 80.168.20.125 table Route2<br />

l<strong>in</strong>ux02:~# ip route add default via 80.168.20.126 table Route2<br />

Die Rout<strong>in</strong>g Rules legen fest, welche Tabelle für welche IP herangezogen wird.


90 KAPITEL 6. LINUX IM NETZWERK<br />

Abbildung 6.2: Szenario mit zwei Routen über Provi<strong>der</strong> 1 und 2<br />

l<strong>in</strong>ux02:~# ip rule add from 132.230.129.1 table Route1<br />

l<strong>in</strong>ux02:~# ip rule add from 80.168.20.125 table Route2<br />

Im folgenden Schritt wird die Ma<strong>in</strong> Rout<strong>in</strong>g Tabelle für das lokale Rout<strong>in</strong>g <strong>in</strong> beide <strong>Netzwerk</strong>e<br />

konfiguriert.<br />

l<strong>in</strong>ux02:~# ip route add 132.230.129.0/28 dev eth1 src 132.230.129.1<br />

l<strong>in</strong>ux02:~# ip route add 80.168.20.0/25 dev eth2 src 80.168.20.125<br />

Zum Abschluss wird die Default-Route für die ”ma<strong>in</strong>” Rout<strong>in</strong>g Table gesetzt. Da <strong>der</strong><br />

Verkehr gleichmäßig auf beide Anschlüsse verteilt werden soll, muss die Route jetzt als<br />

Multipath-Route angelegt se<strong>in</strong>. Der ”weight” Parameter dient dazu die Verteilung über die<br />

e<strong>in</strong>zelnen Verb<strong>in</strong>dungen zu gewichten. Man kann bei Bedarf auch e<strong>in</strong>en Provi<strong>der</strong> stärker als<br />

den an<strong>der</strong>en belasten.<br />

l<strong>in</strong>ux02:~# ip route add default scope global nexthop via 132.230.129.14 dev eth1 \<br />

weight 1 nexthop via 80.168.20.126 dev eth2 weight 1<br />

Im letzten Beispiel wurden die beiden Default-Routen gleichmäßig o<strong>der</strong> gewichtet benutzt.<br />

Wenn e<strong>in</strong>e immer verwendet werden soll und die an<strong>der</strong>e nur beim Ausfall <strong>der</strong> ersten den<br />

Datenverkehr komplett übernimmt, kann man das über die Angabe e<strong>in</strong>er Metrik 3 regeln.<br />

Der Kernel benutzt Gateway immer die Route mit <strong>der</strong> kle<strong>in</strong>sten Metrik, solange er sie<br />

erreichen kann. Falls diese nicht mehr verfügbar ist, greift er automatisch auf die Route<br />

mit <strong>der</strong> nächstkle<strong>in</strong>eren Priorität zurück. Für das Beispiel soll Gateway 80.168.20.126 als<br />

Gateway für eventuelle Ausfälle von Gateway 132.230.129.14 dienen. Für diese Aufgabenstellung<br />

genügt es, die Route zum Router 1 mit e<strong>in</strong>er Metrik 1 zu def<strong>in</strong>ieren. Die Route<br />

zum Backup-Gateway erhält e<strong>in</strong>e höhere Metrik von beispielsweise 5. Die re<strong>in</strong>en Zahlenwerte<br />

s<strong>in</strong>d dabei nicht so <strong>in</strong>teressant. Alle vorherigen Rout<strong>in</strong>ge<strong>in</strong>stellungen s<strong>in</strong>d vorher zu<br />

löschen. Das Beispiel nutzt dazu das Kommando ”flush”. Mit <strong>der</strong> Option ”-4” legt man fest,<br />

dass flush nur auf IPv4-Adressen wirkt. Damit bleiben eventuell vorhandene IPv6-<strong>E<strong>in</strong></strong>träge<br />

unberührt.<br />

l<strong>in</strong>ux02:~# ip -4 addr flush label "eth0"<br />

l<strong>in</strong>ux02:~# ip route add default via 132.230.129.14 dev eth0 metric 1<br />

l<strong>in</strong>ux02:~# ip route add default via 80.168.20.126 dev eth0 metric 5<br />

3 ”Kosten” o<strong>der</strong> Präferenz e<strong>in</strong>er Route - je kle<strong>in</strong>er <strong>der</strong> Wert desto besser


6.3.<br />

ÜBERPRÜFUNG DER KONFIGURATION 91<br />

6.2.4 Dienste-basiertes Rout<strong>in</strong>g<br />

Wenn sich Dienste und <strong>der</strong>en Adm<strong>in</strong>istratoren an Standards halten, kann man sie anhand<br />

ihrer verwendeten Portnummern identifizieren. Die Datei /etc/services listet die Zuordnung<br />

von Portnummern zu Diensten auf. ip hat selbst ke<strong>in</strong>e Möglichkeit direkt <strong>in</strong> folgende Hea<strong>der</strong>,<br />

TCP o<strong>der</strong> UDP e<strong>in</strong>es Datenpaketes zu schauen. Das können entwe<strong>der</strong> tc o<strong>der</strong> besser das<br />

Netfilter Paket übernehmen. Letzteres ist oft sowieso schon als Firewall im <strong>E<strong>in</strong></strong>satz. So lassen<br />

sich IP-Pakete klassifizieren und ihre Hea<strong>der</strong> manipulieren. Man markiert Pakete, die an<br />

e<strong>in</strong>en bestimmten Port geschickt werden, mit e<strong>in</strong>er Nummer. Auf Basis dieser werden dann<br />

wie<strong>der</strong> Rout<strong>in</strong>g Tabellen erstellt.<br />

Das Beispiel sei wie das e<strong>in</strong>gangs beschriebene. Diesmal sollen nur SSH Pakete die<br />

schnelle Verb<strong>in</strong>dung passieren und alle an<strong>der</strong>en den kostengünstigeren Weg nehmen.<br />

Als erstes, werden alle ausgehenden SSH-Pakete mit dem Netfilter-Tool iptables durch<br />

e<strong>in</strong>e ”1” gekennzeichnet. Das Label kann e<strong>in</strong>e beliebige Zahl se<strong>in</strong>.<br />

l<strong>in</strong>ux02:~# iptables -A OUTPUT -i eth0 -t mangle -p tcp --dport 22 -j MARK \<br />

--set-Mark 1<br />

l<strong>in</strong>ux02:~# echo 200 ssh >> /etc/iproute2/rt_tables<br />

l<strong>in</strong>ux02:~# ip rule add fwmark 1 table ssh<br />

l<strong>in</strong>ux02:~# ip route add default via 192.168.1.254 dev eth0 table ssh<br />

Dann wird wie<strong>der</strong> e<strong>in</strong>e Regel <strong>in</strong> <strong>der</strong> RPDB erstellt, die besagt, dass für alle Pakete, die<br />

mit e<strong>in</strong>er 1 markiert s<strong>in</strong>d, die Tabelle ssh befragt wird. Zuletzt muss e<strong>in</strong>e Default Route<br />

zur schnellen Verb<strong>in</strong>dung <strong>in</strong> <strong>der</strong> Rout<strong>in</strong>g Tabelle ssh erzeugt werden. Ab dann gehen alle<br />

SSH-Pakete über den schnellen Router 1.<br />

6.3 Überprüfung <strong>der</strong> Konfiguration<br />

Den Erfolg e<strong>in</strong>er IP-Konfiguration kann man am besten im Netz mit dem Befehl p<strong>in</strong>g testen<br />

(das setzt e<strong>in</strong>en weiteren Rechner mit garantiert funktionieren<strong>der</strong> <strong>Netzwerk</strong>konfiguration<br />

voraus!). p<strong>in</strong>g IP-Adresse/Hostname sendet Datenpakte im Sekundenabstand an die<br />

angegebene IP-Adresse o<strong>der</strong> Rechnernamen 4 . P<strong>in</strong>g 5 kennt e<strong>in</strong>ige <strong>in</strong>teressante Kommandoparameter,<br />

die sich auch zum Testen <strong>der</strong> Leistungsfähigkeit e<strong>in</strong>es LAN’s eigenen. So lässt<br />

sich mit ”-c Zahl” die Anzahl <strong>der</strong> verschickten Pakete festlegen, ”-f” lässt den Systemadm<strong>in</strong>istrator<br />

so viele Pakete versenden, wie nur irgendwie geht und mit ”-s Zahl” lässt sich die<br />

Paketgrösse, die zum Test verschickt wird, variieren.<br />

Meldet p<strong>in</strong>g ke<strong>in</strong>en Erfolg 6 , kann man mit dem Kommando tcpdump überprüfen, ob<br />

überhaupt Datenpakete auf dem <strong>Netzwerk</strong><strong>in</strong>terface e<strong>in</strong>treffen und vom Kernel registriert<br />

werden.<br />

6.4 Aufgaben<br />

6.4.1 IP-Konfiguration und Erreichbarkeit<br />

1. Wie bekommt man folgende Informationen heraus: IP Adresse, Rout<strong>in</strong>g Tabelle, eigene<br />

MAC-Adresse(n)?<br />

2. Wie lautet die <strong>Netzwerk</strong>maske des eigenen Subnetzes und wie kann diese verän<strong>der</strong>t<br />

werden?<br />

4 Dieses setzt jedoch e<strong>in</strong>en funktionierenden Nameservice voraus!<br />

5 weitere Informationen kann man sich über den Aufruf <strong>der</strong> Manualseiten mit man p<strong>in</strong>g anzeigen lassen.<br />

6 das me<strong>in</strong>t e<strong>in</strong>e Meldung wie ”100” packet loss”


92 KAPITEL 6. LINUX IM NETZWERK<br />

3. Warum muss die eigene <strong>Netzwerk</strong>maske zu den <strong>E<strong>in</strong></strong>stellungen des Subnetzes passen,<br />

<strong>in</strong> dem man sich bef<strong>in</strong>det? Was passiert, wenn die Maske des Subnetzes kle<strong>in</strong>er o<strong>der</strong><br />

größer als die auf <strong>der</strong> eigenen Masch<strong>in</strong>e e<strong>in</strong>gestellte ist?<br />

4. Man organisiere sich die IP vom Nachbarn und versuche diesen per P<strong>in</strong>g zu erreichen.<br />

Wie erfährt man se<strong>in</strong>e eigene Default-Gateway-Adresse?<br />

5. Wie erfahre ich die MAC-Adressen me<strong>in</strong>er Kommunikationspartner? Wie lauten die<br />

MAC-Adressen für goe.net o<strong>der</strong> www.spiegel.de?<br />

6.4.2 Datenverkehr zählen<br />

1. Welche ganz e<strong>in</strong>fachen Möglichkeiten hat man, um festzustellen, wieviel Datenverkehr<br />

von e<strong>in</strong>er Masch<strong>in</strong>e <strong>in</strong>s Netz geschickt o<strong>der</strong> empfangen wurde?


Kapitel 7<br />

DHCP<br />

7.1 Automatische IP-Zuweisung<br />

Adm<strong>in</strong>istratoren s<strong>in</strong>d für ihren zugewiesenen IP-Bereich selbst zuständig RZ teilt z.B. das<br />

Uni Class-B-Netz von 132.230.0.0/ 255.255.0.0 mittels Subnett<strong>in</strong>g <strong>in</strong> 256 Class-C Netze<br />

auf. In diesen Netzen s<strong>in</strong>d bis zu 254 Rechner zu verwalten. Ziel ist die Rezentralisierung<br />

<strong>der</strong> netzwerkseitigen Konfiguration - <strong>der</strong> <strong>E<strong>in</strong></strong>satz des DHCP (Dynamic Host Control Protocol)<br />

als <strong>Netzwerk</strong>protokoll <strong>der</strong> Anwendungsschicht, mittels dessen grundlegende Daten zur<br />

Konfiguration e<strong>in</strong>es Clientsystems übertragen werden können.<br />

Dynamic Host Configuration Protocol kann zur automatischen und dynamischen IP-<br />

Zuweisung verwendet werden. Damit kann die Konfiguration auf e<strong>in</strong>em zentralen Rechner<br />

des Teilnetzes erfolgen (bzw. weitere lassen sich aus Redundanzgründen e<strong>in</strong>fügen). Die Rechner<br />

lassen sich fest konfigurieren, aber es kann auch e<strong>in</strong> Pool von Adressen für wechselnde<br />

Hosts verwaltet werden.<br />

Damit kann e<strong>in</strong>e weit höhere Anzahl von Masch<strong>in</strong>en als vorhandene IP-Nummern bedient<br />

werden. DHCP verwendet spezielle IP-Nummern 0.0.0.0 (Host ohne IP-Information)<br />

und 255.255.255.255. Lokaler Broadcast an alle Teilnetze s<strong>in</strong>d durch Router vone<strong>in</strong>an<strong>der</strong><br />

abgegrenzt, damit werden Broadcastpakete nur im eigenen Subnetz sichtbar. 0.0.0.0 wird<br />

nach IP-Bezug sofort wie<strong>der</strong> frei.<br />

7.2 Implementation<br />

DHCP 1 , das ”Dynamic Host Control Protocol” stellt e<strong>in</strong>e Erweiterung und Ergänzung des<br />

BOOTP dar. Die <strong>E<strong>in</strong></strong>schränkungen im BOOTP e<strong>in</strong>erseits und se<strong>in</strong>e anerkannten Vorteile<br />

zur Konfiguration großer Rechnerzahlen an<strong>der</strong>erseits mündeten <strong>in</strong> <strong>der</strong> Entwicklung von<br />

DHCP.<br />

Weiterentwicklungen, wie z.B. dynamisches DNS, f<strong>in</strong>den <strong>in</strong> erster L<strong>in</strong>ie beim dhcpd<br />

statt, die verwendeten bootpd Implementierungen stammen aus den Anfängen <strong>der</strong> 90er<br />

Jahre und werden nur noch im Fall grober Sicherheitsverletzungen gepatcht. Das Internet-<br />

Software-Consortium 2 entwickelte e<strong>in</strong>e Beispielimplementation des DHCP und e<strong>in</strong>iger an-<br />

<strong>der</strong>er Internetprotokolle. Der Sourcecode liegt <strong>in</strong> den meisten Fällen auch <strong>in</strong> e<strong>in</strong>er L<strong>in</strong>uxanpassung<br />

vor, so dass e<strong>in</strong>e e<strong>in</strong>fache Übersetzung für die Zielplattform erfolgen kann. Im<br />

1 Die grundlegenden RFCs für DHCP s<strong>in</strong>d:<br />

RFC1541 : ”Dynamic Host Configuration Protocol”, Oktober 1993<br />

RFC2131 : ”Dynamic Host Configuration Protocol”, März 1997<br />

RFC2132 : ”DHCP Options and BOOTP Vendor Extensions”, März 1997<br />

2 siehe dazu [W6], wobei das ISC neben <strong>der</strong> DHCP-Implementierung weitere Internet-Standards betreut.<br />

93


94 KAPITEL 7. DHCP<br />

Weiteren bezieht sich daher die Beschreibung auf die DHCP-Implementierung des ISC.<br />

Diese liegt <strong>in</strong>zwischen <strong>in</strong> <strong>der</strong> dritten Version vor und unterstützt e<strong>in</strong>e ganze Reihe neuer<br />

Eigenschaften, wie die Unterstützung von Dynamischen DNS o<strong>der</strong> Vendor Code Identifier.<br />

32 bit<br />

OP HTYPE HLEN HOPS<br />

TRANSACTION IDENTIFIER<br />

SECONDS ELAPSED FLAGS<br />

CLIENT IP ADDRESS<br />

YOUR IP ADDRESS<br />

SERVER IP ADDRESS<br />

ROUTER IP ADDRESS<br />

CLIENT HARDWARE ADDRESS (16 OCTETS)<br />

.<br />

.<br />

SERVER HOSTNAME (64 OCTETS)<br />

.<br />

.<br />

OPTIONS (VARIABLE)<br />

.<br />

.<br />

DHCP Message Format<br />

Abbildung 7.1: Aufbau e<strong>in</strong>es DHCP-Paketes<br />

DHCP arbeitet auf Port 67 zur Anfrage an den Server und auf Port 68 zur Rückantwort<br />

an den Client. Solche Informationen f<strong>in</strong>det man <strong>in</strong> <strong>der</strong> /etc/services. Das vorgestellte Protokoll<br />

läßt sich nur s<strong>in</strong>nvoll <strong>in</strong> broadcastfähigen Netzen 3 e<strong>in</strong>setzen. Es ist nicht (bzw. nur<br />

über den Umweg e<strong>in</strong>es DHCP-Gateway-Servers) routebar. DHCP verwendet als Transportprotokoll<br />

UDP, da 3-Wege-Handshake mit den IP-Spezialadressen 4 kaum s<strong>in</strong>nvoll realisiert<br />

werden kann. In den meisten Fällen genügt e<strong>in</strong> Datenpaket pro Konfigurationsschritt <strong>in</strong><br />

jede Richtung. DHCP ist e<strong>in</strong>e Erweiterung des Bootp, welches weniger komplex im Leasehandl<strong>in</strong>g<br />

ist. Es kennt nur statische Adresszuweisungen und weniger vordef<strong>in</strong>ierte Konfigurationsoptionen.<br />

DHCP arbeitet im vierstufigen Verfahren bei <strong>der</strong> Adresszuweisung:<br />

• Client schickt DHCPDISCOVER an 255.255.255.255 Port 67 um Server zu ermitteln<br />

• Server schickt e<strong>in</strong>en Vorschlag mit Parametern als DHCPOFFER an 255.255.255.255<br />

Port 68<br />

• Client sucht sich aus evtl. mehreren ”Offers” nach bestimmten Kriterien e<strong>in</strong>e passende<br />

aus (z.B. nach <strong>der</strong> Länge <strong>der</strong> ”Lease”) und schickt DHCPREQUEST gerichtet an den<br />

passenden Server<br />

• Server bestätigt mit DHCPACK gerichtet an Client<br />

3 Ethernet bzw. TokenR<strong>in</strong>g<br />

4 255.255.255.255 für den lokalen Broadcast im Netz als Anfrage mit <strong>der</strong> eigenen IP 0.0.0.0


7.2. IMPLEMENTATION 95<br />

1<br />

Konfiguration<br />

festlegen<br />

2<br />

3<br />

Konfiguration<br />

annehmen<br />

4<br />

5<br />

Lease<br />

entfernen<br />

Server Client<br />

DHCPDISCOVER<br />

DHCPOFFER<br />

DHCPREQUEST<br />

DHCPACK<br />

DHCPRELEASE<br />

Beg<strong>in</strong>n <strong>der</strong><br />

Initialisierung<br />

Konfiguration<br />

wählen<br />

Initialisierung<br />

abgeschlossen<br />

Sauberes<br />

Beenden<br />

Abbildung 7.2: Ablauf e<strong>in</strong>er DHCP-Anfrage<br />

• Server kann e<strong>in</strong> Request e<strong>in</strong>es Clients ablehnen und e<strong>in</strong> NAK schicken<br />

• Wenn <strong>der</strong> Client e<strong>in</strong> Problem mit <strong>der</strong> zugewiesenen Adresse hat, sendet er e<strong>in</strong> DE-<br />

CLINE<br />

• Der Client kann die erhaltene Adresse vor Ablauf zurückgeben und hierfür e<strong>in</strong> RE-<br />

LEASE senden<br />

• Der Client kann die erhaltene Adresse vor Ablauf verlängern und hierfür e<strong>in</strong> RENEW<br />

schicken<br />

Der DHCP-Server verwaltet den Adresspool und versieht jede Adresse mit <strong>der</strong> ”Verleih”-<br />

Zeit. Er kennt e<strong>in</strong>e Reihe fest def<strong>in</strong>ierter Optionen und bei Bedarf können weitere eigene<br />

Optionen def<strong>in</strong>iert werden. 5<br />

Im Ethereal-Mitschnitt kann man gut den Aufbau e<strong>in</strong>es DHCP-(Request)-Paketes sehen,<br />

wie er schematisch im Bild (DHCP-Paket) gezeigt ist. Das erste Feld gibt den Typ des<br />

Paketes an - hier Boot-Request. Die verwendete Hardware ist e<strong>in</strong> Ethernet, weshalb die<br />

MAC-Adressen 6Byte lang s<strong>in</strong>d. Es traten ke<strong>in</strong>e Hops auf, da die Aktion im selben LAN<br />

stattfand. DHCP arbeitet mit dem verb<strong>in</strong>dungslosen UDP. Deshalb muss es Transaktionen<br />

zuordnen können. Hierfür gibt es e<strong>in</strong>en 32 bittigen Identifier. Darauf folgten die verstrichene<br />

Zeit und Flags.<br />

5 <strong>in</strong>sgesamt s<strong>in</strong>d 255 Optionen möglich


96 KAPITEL 7. DHCP<br />

Abbildung 7.3: DHCP-Session unter <strong>der</strong> Lupe<br />

Interessant s<strong>in</strong>d dann wie<strong>der</strong> die Blöcke <strong>der</strong> IP-Adressen. Der Client kann e<strong>in</strong>e Adresse<br />

von e<strong>in</strong>er noch gültigen Zuweisung besitzen (Client IP). Die vom Server zugewiesene<br />

Adresse steht <strong>in</strong> ”Your IP”. Next Server kann die Adresse des nächsten zu kontaktierenden<br />

Servers beispielsweise TFTP enthalten. Sonst steht hier die Adresse des DHCP-Servers.<br />

Die Adresse des Relay-Agent enthält die IP des beteiligten Routers, wenn die Anfrage über<br />

e<strong>in</strong> DHCP-Relay zum Server gelangte. Im Beispiel s<strong>in</strong>d alle Adressen leer (0.0.0.0). Diese<br />

Informationen entnimmt <strong>der</strong> DHCP-Client nicht dem IP-Hea<strong>der</strong>. So können ”Next Server”<br />

und die Absendeadresse des DHCP-Servers durchaus differieren.<br />

Weitere Fel<strong>der</strong> s<strong>in</strong>d für den Serverhostnamen und e<strong>in</strong> Bootfile (das dann per TFTP<br />

geholt werden könnte - nützlich für Diskless Clients) reserviert. Ab dann geht es weiter mit<br />

den verschiedenen DHCP-Optionen. Interessant ist vielleicht noch die Option 50 (Requested<br />

IP Address). Da <strong>der</strong> Client schone<strong>in</strong>mal e<strong>in</strong>e Lease bezogen hatte, versucht er die gleiche<br />

IP-Nummer wie<strong>der</strong> anzufor<strong>der</strong>n. Das hat den Vorteil, dass die Masch<strong>in</strong>e bestehende IP-<br />

Verb<strong>in</strong>dungen nicht durch Adressenwechsel kappt. Die meisten an<strong>der</strong>en Optionen erklären<br />

sich selbst. <strong>E<strong>in</strong></strong>e Liste aller dem ISC-Server bekannten Optionen liefert die Manpage: man<br />

dhcp-options.<br />

7.3 DHCP-Server<br />

Konfiguriert wird <strong>der</strong> DHCP-Dämon (dhcpd) mittels /etc/dhcpd.conf. Es stehen etliche<br />

weitere <strong>E<strong>in</strong></strong>stellungen zur Verfügung; diese können mit man dhcp-options angezeigt werden.<br />

Die DHCP-Konfigurationsdatei hängt <strong>in</strong> ihrer Ausgestaltung vom verfolgten <strong>E<strong>in</strong></strong>satzziel<br />

ab: So werden für Diskless X-Stations bzw. L<strong>in</strong>ux-Workstations vielleicht e<strong>in</strong>e Reihe zusätz-


7.3. DHCP-SERVER 97<br />

licher Daten übertragen, die für den Betrieb von W<strong>in</strong>dowsmasch<strong>in</strong>en nicht relevant s<strong>in</strong>d.<br />

Entsprechende benutzerdef<strong>in</strong>ierte Optionstr<strong>in</strong>gs werden e<strong>in</strong>geführt, um bestimmte Textfel<strong>der</strong><br />

6 z.B. zur Konfiguration des X-Servers zu kopieren.<br />

Es gibt e<strong>in</strong>e Reihe von Möglichkeiten, um die /etc/dhcpd.conf zu strukturieren. Zusätzlich<br />

zum ”subnet”-Statement hilft das ”group”-Statement dabei - neben <strong>der</strong> Unterteilung<br />

nach Subnetzen - Konfigurationsblöcke mit gleichen Parametern zusammenzufassen. So<br />

muss nicht für jeden Host die gesamte Palette wie<strong>der</strong>holt werden.<br />

<strong>E<strong>in</strong></strong>e Beispielkonfiguration könnte wie folgt aussehen:<br />

option doma<strong>in</strong>-name "subdoma<strong>in</strong>.doma<strong>in</strong>.site second.doma<strong>in</strong>";<br />

filename "/tftpboot/bootimg";<br />

use-host-decl-names on;<br />

default-lease-time 72000;<br />

max-lease-time 144000;<br />

subnet 10.16.60.0 netmask 255.255.252.0 {<br />

option doma<strong>in</strong>-name-servers 10.16.60.21, 10.16.60.100;<br />

option ntp-servers ntps1.doma<strong>in</strong>.site, ntps2.doma<strong>in</strong>.site;<br />

option font-servers fontserver.doma<strong>in</strong>.site;<br />

option x-display-manager x1.doma<strong>in</strong>.site, x2.doma<strong>in</strong>.site;<br />

# option netbios-name-servers 10.16.63.252;<br />

option routers 10.16.63.254;<br />

option broadcast-address 10.16.63.255;<br />

# range 10.16.60.201 10.16.60.253;<br />

}<br />

group {<br />

option lpr-servers 10.16.60.2;<br />

host dxs02 {<br />

hardware ethernet 00:00:1C:D2:87:DF;<br />

fixed-address 10.16.60.64; }<br />

[...]<br />

7.3.1 DHCP-Standardoptionen<br />

DHCP kann aufgrund se<strong>in</strong>er Flexibilität zum zentralen Konfigurationstool avancieren. Man<br />

kann versuchen, über diesen Dienst alle relevanten Informationen zum Betrieb von L<strong>in</strong>ux<br />

Th<strong>in</strong>-Clients zu übertragen. Neben den klassischen Parametern, wie Hostname, IP-Adresse,<br />

Netzmaske und Gateway, zählt dazu e<strong>in</strong>e Reihe von Server-IP’s: X-Display-, Time-, Swap-,<br />

NIS-Server und weitere.<br />

Die DHCP-Konfigurationsdatei /etc/dhcpd.conf hängt <strong>in</strong> ihrem Umfang vom <strong>E<strong>in</strong></strong>satzziel<br />

ab: So werden für Diskless X-Stations vielleicht e<strong>in</strong>e Reihe zusätzlicher Daten, z.B.<br />

über Informationen zum Font-, Pr<strong>in</strong>t-, Swap- und NIS-Server übertragen, die für den X-<br />

Term<strong>in</strong>albetrieb nicht erfor<strong>der</strong>lich s<strong>in</strong>d.<br />

# -- global options -default-lease-time<br />

160000;<br />

max-lease-time 200000;<br />

use-host-decl-names on;<br />

ddns-update-style none;<br />

subnet 192.168.2.0 netmask 255.255.255.192 {<br />

option broadcast-address 192.168.2.63;<br />

option doma<strong>in</strong>-name-servers 192.168.2.22;<br />

option doma<strong>in</strong>-name "test.site, test2.site";<br />

option nis-doma<strong>in</strong> "chnsmi20";<br />

6 Variablentyp ”str<strong>in</strong>g”


98 KAPITEL 7. DHCP<br />

option nis-servers 192.168.2.3;<br />

option log-servers 192.168.2.4;<br />

option netbios-name-servers 192.168.2.5;<br />

option routers 192.168.2.1;<br />

# range 192.168.2.50 192.168.2.62;<br />

}<br />

# -- client specific -group<br />

{<br />

host test1 {<br />

hardware ethernet 00:80:48:C2:DD:6A;<br />

fixed-address 192.168.2.41; }<br />

host test2 {<br />

hardware ethernet 00:E0:4C:39:10:21;<br />

fixed-address 192.168.2.42; }<br />

}<br />

Das ”group” Statement hilft hierbei - neben <strong>der</strong> Unterteilung nach Subnetzen - Konfigurationsblöcke<br />

mit gleichen Parametern zusammenzufassen. So muss nicht für jeden Host die<br />

gesamte Palette wie<strong>der</strong>holt werden.<br />

Das Beispiel zeigt bereits e<strong>in</strong>ige typische Konfigurationsparameter des ISC-DHCP-<br />

Servers. Die ”default-lease-time” und ”max-lease-time” s<strong>in</strong>d Ganzzahlwerte, die <strong>in</strong> Sekunden<br />

angeben, wie lange e<strong>in</strong>e herausgegebene Adresse standardmäßig und maximal gültig ist.<br />

Dieses spielt beson<strong>der</strong>s e<strong>in</strong>e Rolle <strong>in</strong> dynamischen Netzen mit potenziell mehr verwalteten<br />

Masch<strong>in</strong>en als vorhandenen IP-Adressen. Mittels ”use-host-decl-names” wird gesteuert, ob<br />

<strong>der</strong> Rechnername anhand des ”host”-Statements übermittelt o<strong>der</strong> <strong>in</strong> e<strong>in</strong>er eigenen Option<br />

def<strong>in</strong>iert werden soll. Der ”ddns-update-style” bestimmt über die Zusammenarbeit mit dem<br />

Doma<strong>in</strong> Name Server. Soll ke<strong>in</strong>e stattf<strong>in</strong>den, weil alle Rechnernamen fest im DNS verankert<br />

s<strong>in</strong>d, wird wie im Beispiel ”none” gesetzt.<br />

Die meisten DHCP-Optionen s<strong>in</strong>d selbsterklärend. Die komplette Liste aller def<strong>in</strong>ierbaren<br />

Optionen kann <strong>der</strong> Manpage zu ”dhcp-options” entnommen werden. Die <strong>in</strong>nerhalb<br />

<strong>der</strong> dhcpd.conf def<strong>in</strong>ierten Subnetze müssen <strong>in</strong>nerhalb <strong>der</strong> gültigen <strong>Netzwerk</strong>konfiguration<br />

des Servers liegen. Ausserhalb liegende Netze können nicht bedient werden. Innerhalb des<br />

”subnet”-Statements legt die ”range” fest, welche Adressen im def<strong>in</strong>ierten Bereich dynamisch<br />

verwaltet werden. Der Server merkt sich herausgegebene IP-Adressen <strong>in</strong> e<strong>in</strong>er geson<strong>der</strong>ten<br />

Datei, den dhcpd.leases, welche sich unterhalb <strong>der</strong> /var Verzeichnisstruktur <strong>in</strong><br />

Abhängigkeit <strong>der</strong> verwendeten Distribution bef<strong>in</strong>det.<br />

7.3.2 DHCP-DNS-Verb<strong>in</strong>dung<br />

Damit <strong>der</strong> ISC-DHCP-Server dynamische Updates im DNS-Server - es funktioniert nur die<br />

Zusammenarbeit mit BIND - vornehmen kann, s<strong>in</strong>d e<strong>in</strong>ige Vorbereitungen nötig. In <strong>der</strong><br />

Zonendef<strong>in</strong>itionsdatei /etc/named.conf habt man die Möglichkeit dieses zu konfigurieren:<br />

acl mynetwork {<br />

10.16.10.0/24;<br />

127.0.0.1;<br />

};<br />

[ ... ]<br />

zone "mydoma<strong>in</strong>.site" <strong>in</strong> {<br />

type master;<br />

allow-update { WERT; };<br />

file "master/mydoma<strong>in</strong>.site";<br />

};<br />

zone "239.168.192.<strong>in</strong>-addr.arpa" {


7.4. BENUTZERDEFINIERTE OPTIONEN 99<br />

};<br />

type master;<br />

file "master/10.16.10.rev";<br />

allow-update { WERT; };<br />

Dabei kann ”allow-update” verschiedene Werte annehmen: none - ke<strong>in</strong>e Updates s<strong>in</strong>d erlaubt.<br />

127.0.0.1 - Updates s<strong>in</strong>d nur von <strong>der</strong> Masch<strong>in</strong>e selbst (localhost) gestattet. ”allowupdate<br />

mynetwork; ” konfiguriert, dass aus dem e<strong>in</strong>gangs def<strong>in</strong>ierten Quellen Update-<br />

Informationen akzeptiert werden.<br />

In <strong>der</strong> dhcpd.conf sollten m<strong>in</strong>destens die folgenden globalen Optionen auftauchen:<br />

ddns-updates on;<br />

ddns-doma<strong>in</strong>name "mydoma<strong>in</strong>.site";<br />

ddns-update-style ad-hoc;<br />

allow unknown-clients;<br />

[ ... ]<br />

subnet 10.16.10.0 netmask 255.255.255.0 {<br />

range dynamic-bootp 10.10.10.10 10.16.10.250;<br />

option subnet-mask 255.255.255.0;<br />

option routers 10.16.10.254;<br />

allow unknown-clients;<br />

}<br />

Beide Dienste müssen Sie nach erfolgter Konfiguration neu starten. Im Anschluss können<br />

Sie beispielsweise e<strong>in</strong>e W<strong>in</strong>dowsmasch<strong>in</strong>e e<strong>in</strong>e IP-Adresse vom Server beziehen lassen. Dann<br />

sieht man im Logfile die Interaktion von DHCP und DNS:<br />

[ ... ]<br />

Jan 12 21:05:52 hermes named[16798]: client 10.16.10.254#33708: updat<strong>in</strong>g\<br />

zone ’mydoma<strong>in</strong>.site/IN’: add<strong>in</strong>g an RR<br />

Jan 12 21:05:52 hermes named[16798]: journal file master/mydoma<strong>in</strong>.site. \<br />

zone.jnl does not exist, creat<strong>in</strong>g it<br />

Jan 12 21:05:52 hermes dhcpd: if zx-spektrum.mydoma<strong>in</strong>.site IN A rrset \<br />

doesn’t exist add zx-spektrum.mydoma<strong>in</strong>.site 80000 IN A 10.16.10.250:\<br />

success.<br />

Jan 12 21:05:52 hermes named[16798]: client 10.16.10.254#33708: updat<strong>in</strong>g\<br />

zone ’239.168.192.<strong>in</strong>-addr.arpa/IN’: delet<strong>in</strong>g an rrset<br />

Jan 12 21:05:52 hermes named[16798]: client 10.16.10.254#33708: updat<strong>in</strong>g\<br />

zone ’239.168.192.<strong>in</strong>-addr.arpa/IN’: add<strong>in</strong>g an RR<br />

Jan 12 21:05:52 hermes named[16798]: journal file master/10.16.10.rev.jnl\<br />

does not exist, creat<strong>in</strong>g it<br />

[ ... ]<br />

Vielen reicht e<strong>in</strong>e Zugriffssteuerung anhand <strong>der</strong> IP-Nummer nicht. Diese kann oft zu e<strong>in</strong>fach<br />

gefälscht werden. Seit e<strong>in</strong>iger Zeit bietet BIND zur Absicherung sogenannte Transaction<br />

Signatures (TSIG). Sie basieren auf e<strong>in</strong>er <strong>E<strong>in</strong></strong>wege-Hashfunktion. Sie werden über die<br />

komplette DNS-Nachricht berechnet und als Resource Record an die Nachricht angehängt.<br />

7.4 Benutzerdef<strong>in</strong>ierte Optionen<br />

DHCP bietet die Möglichkeit bestimmte, sogenannte Vendoroptionen aufzunehmen, d.h.<br />

es können zusätzliche Optionen zu den bereits vorhandenen def<strong>in</strong>iert werden. Hierfür kann<br />

<strong>der</strong> Codenummernbereich von 128 - 255 verwendet werden. Wenn man umfangreiche Informationen<br />

übertragen will, sollte man die Paketgröße des BOOTP-Reply-Pakets über


100 KAPITEL 7. DHCP<br />

den Standard 7 h<strong>in</strong>aus erhöhen. Die Option kann nur Ganzzahlwerte enthalten, die jedoch<br />

die MTU-Size des <strong>Netzwerk</strong>es nicht überschreiten soll, da die meisten Clients ke<strong>in</strong>e fragmentierten<br />

DHCP-Antworten verarbeiten können. Diese Optionen werden zu Beg<strong>in</strong>n <strong>der</strong><br />

Konfigurationsdateien 8 des dhcpd bzw. dhclient def<strong>in</strong>iert. Die folgende Liste ist eher als<br />

Beispiel denn als vollständige Aufzählung zu verstehen, da für gegebene Aufgaben die notwendigen<br />

Fel<strong>der</strong> auch völlig an<strong>der</strong>s aussehen können.<br />

# -- lot of <strong>in</strong>formation to be transferred -dhcp-max-message-size<br />

1200;<br />

# -- user def<strong>in</strong>ed options -option<br />

o128 code 128 = str<strong>in</strong>g;<br />

option o129 code 129 = str<strong>in</strong>g;<br />

option menudflts code 160 = str<strong>in</strong>g;<br />

option motdl<strong>in</strong>e1 code 184 = str<strong>in</strong>g;<br />

option menul<strong>in</strong>e1 code 192 = str<strong>in</strong>g;<br />

option menul<strong>in</strong>e2 code 193 = str<strong>in</strong>g;<br />

option menul<strong>in</strong>e3 code 194 = str<strong>in</strong>g;<br />

Wobei folgende Variablentypen verwendet werden können: str<strong>in</strong>g, <strong>in</strong>teger, boolean, text, ipnumber.<br />

Diese lassen sich auch zu Arrays zusammenfassen. Das ist das klassische Verfahren,<br />

welches für die vordef<strong>in</strong>ierten Optionen für Listen von IP-Nummern zum <strong>E<strong>in</strong></strong>satz kommt.<br />

Die Option 128 def<strong>in</strong>iert e<strong>in</strong> ”Magic-Packet”, welches die Auswertung von Menu-Optionen<br />

für Etherboot e<strong>in</strong>schaltet. Standardwerte für die Menü-Auswahl, d.h. welches Feld nach<br />

e<strong>in</strong>em gewissen Timeout gestartet werden soll, werden mit <strong>der</strong> Option 160 festgelegt. Die<br />

Zusammensetzung des Menüs, welches nach dem Kontakt von Etherboot mit dem DHCP-<br />

Server angezeigt wird, geschieht durch die Optionen 192 und folgende. Hierbei wird für jede<br />

Menü-Zeile e<strong>in</strong> eigenes Feld benötigt. Mittels <strong>der</strong> Option 129 s<strong>in</strong>d Parameter zum Kernelstart<br />

übermittelbar, die z.B. auch den Root-Verzeichnispfad enthalten . <strong>E<strong>in</strong></strong>e ”Message of<br />

the day” 9 kann durch das Setzen <strong>der</strong> Option 184 erfolgen.<br />

7.5 Die Verwendung von Vendor-Code-Identifiern<br />

Vendor-Code-Identifier s<strong>in</strong>d als feste Optionen für DHCP def<strong>in</strong>iert: ”vendor-class-identifier”<br />

für die Identifizierung des Clients durch den Server und ”vendor-encapsulated-options” zur<br />

Identifizierung des Servers seitens des Clients.<br />

Auf diese Weise lassen sich die DHCP-Anfragen verschiedener booten<strong>der</strong> Rechner vone<strong>in</strong>an<strong>der</strong><br />

differenzieren, so dass es gel<strong>in</strong>gt an e<strong>in</strong>e Masch<strong>in</strong>e <strong>in</strong> Abhängigkeit vom anfragenden<br />

Client verschiedene Werte für die gleiche Option zurückzuliefern. Dieses ist zw<strong>in</strong>gend<br />

notwendig, wenn PXE und Etherboot h<strong>in</strong>tere<strong>in</strong>an<strong>der</strong> verkettet booten sollen, da PXE zwar<br />

die identische IP-Konfiguration erhält, aber anstelle des Kernel-Images das Etherboot-PXE-<br />

Image zur Ausführung laden soll. Dieses sieht man am unten stehendem Beispiel: Es werden<br />

bestimmte Optionen nur gesetzt bzw. die Default-Option überschrieben, wenn <strong>in</strong> <strong>der</strong> Anfrage<br />

des Clients e<strong>in</strong> bestimmter Str<strong>in</strong>g identifiziert werden kann.<br />

Die Interaktion mit PXE und Etherboot mittels VCI ist im folgenden Beispiel demonstriert.<br />

# -- vendor identifier dependend sett<strong>in</strong>gs -class<br />

"Etherboot" {<br />

match if substr<strong>in</strong>g (option vendor-class-identifier,0,9)="Etherboot";<br />

7<br />

Die Standardgröße des Bootp-Paketes beträgt 572 Byte. <strong>E<strong>in</strong></strong>e Erhöhung auf z.B. 1024 Byte kann durch<br />

”dhcp-max-message-size 1024” erreicht werden.<br />

8<br />

üblicherweise /etc/dhcpd.conf für den Server-Dämon sowie /etc/dhclient.conf für den Client<br />

9 Hier das Textfeld über <strong>der</strong> Menu-Auswahl


7.6. DHCP-CLIENT 101<br />

option o128 E4:45:74:68:00:00;<br />

option motdl<strong>in</strong>e1 = "Welcome to Testlabs";<br />

option vendor-encapsulated-options 3c:09:53:74:75:64:69:6e:65:74:7a:ff;<br />

}<br />

class "PXEClient:" {<br />

match if substr<strong>in</strong>g (option vendor-class-identifier,0,10)="PXEClient:";<br />

filename "/nfsroot/dxs/boot/eb-3c905c.pxe";<br />

}<br />

[...]<br />

host dxs03 {<br />

hardware ethernet 00:00:B4:72:D2:4E;<br />

if substr<strong>in</strong>g (option vendor-class-identifier,0,3)="PXE"<br />

{ filename "/nfsroot/dxs/boot/rtl8139.pxe"; }<br />

fixed-address 10.8.4.13;<br />

}<br />

[...]<br />

Die ”class”-Statements zeigen globale Def<strong>in</strong>itionen. Es können aber auch hostspezifische<br />

<strong>E<strong>in</strong></strong>stellungen getroffen werden, wie das untenstehende Beispiel zeigt.<br />

7.6 DHCP-Client<br />

Von schlanken Implementierungen für Embedded Devices mal abgesehen 10 gibt es eigentlich<br />

nur e<strong>in</strong>e wesentliche Serverimplementierung. Dafür gibt es aber verschiedene DHCP-Clients.<br />

<strong>E<strong>in</strong></strong> Client ist beim ISC-Paket dabei, das Programm dhclient. Mit den Kommandos dhcpcd,<br />

dem DHCP-Client-Daemon, und pump stehen alternative Clients zur Verfügung. Letztere<br />

verwendet man, wenn nur e<strong>in</strong>e kle<strong>in</strong>e Anzahl von Standarde<strong>in</strong>stellungen mittels DHCP<br />

vorgenommen werden soll. Im Gegensatz zu dhclient, welches auf e<strong>in</strong> externes Skript zum<br />

Anwenden <strong>der</strong> DHCP-<strong>Netzwerk</strong>konfiguration angewiesen ist, arbeiten die beiden letztgenannten<br />

Kommandos direkt auf den betroffenen Dateien, wie z.B. auf <strong>der</strong> resolv.conf zur<br />

<strong>E<strong>in</strong></strong>stellung <strong>der</strong> DNS-Client-Konfiguration.<br />

dhclient verwendet e<strong>in</strong>e eigene Konfigurationsdatei. Die Konfiguration sollte passend<br />

zum DHCP-Server erfolgen, wenn mit benutzerdef<strong>in</strong>ierten Optionen gearbeitet wird. Die<br />

<strong>E<strong>in</strong></strong>stellungsdatei lautet /etc/dhclient.conf:<br />

# /etc/dhclient.conf<br />

#<br />

send dhcp-max-message-size 1200;<br />

send dhcp-lease-time 18000;<br />

request subnet-mask, broadcast-address, time-offset, routers,<br />

doma<strong>in</strong>-name, doma<strong>in</strong>-name-servers, host-name;<br />

require subnet-mask, doma<strong>in</strong>-name-servers;<br />

timeout 60;<br />

retry 60;<br />

reboot 10;<br />

select-timeout 5;<br />

<strong>in</strong>itial-<strong>in</strong>terval 2;<br />

script "/sb<strong>in</strong>/dhclient-script";<br />

dhclient schreibt, wenn er e<strong>in</strong>e IP-Konfiguration von e<strong>in</strong>em Server erhalten hat, die Daten<br />

<strong>in</strong> die Datei /var/lib/dhcp/dhclient.leases:<br />

lease {<br />

10 ”dnsmasq” ist e<strong>in</strong> solches Programm


102 KAPITEL 7. DHCP<br />

}<br />

<strong>in</strong>terface "eth1";<br />

fixed-address 10.16.10.12;<br />

option subnet-mask 255.255.255.0;<br />

option dhcp-lease-time 3600;<br />

option dhcp-message-type 5;<br />

option doma<strong>in</strong>-name-servers 10.16.10.1;<br />

option dhcp-server-identifier 10.16.10.254;<br />

option broadcast-address 10.16.10.255;<br />

option doma<strong>in</strong>-name "mydoma<strong>in</strong>.site";<br />

renew 5 2004/12/31 16:31:33;<br />

reb<strong>in</strong>d 5 2004/12/31 17:00:14;<br />

expire 5 2004/12/31 17:07:44;<br />

Nachdem dhclient die DHCP-Informationen vom Server bezogen hat, geschieht die<br />

<strong>E<strong>in</strong></strong>tragung bzw. Anwendung dieser mittels dhclient-script, welches im Anhang als Shell-<br />

Skript beispielhaft angeführt ist. dhclient-script wird von dhclient mittels Temporärskript<br />

<strong>in</strong> /tmp mit allen erhaltenen Variablen gestartet. Diese werden als Shell-Variablen <strong>in</strong> <strong>der</strong><br />

aufrufenden Kommandozeile übergeben. Wärend es mit dhclient nicht möglich ist zwei un-<br />

Abbildung 7.4: DHCP-Client unter W<strong>in</strong>dows98<br />

abhängige Instanzen für zwei verschiedene Ethernet-Interfaces zu starten, bietet sichdhcpcd<br />

ethN 11 für e<strong>in</strong>e solche Betriebsart an. Die Lease-Datei des dhcpcd sieht etwas an<strong>der</strong>s aus.<br />

Jedoch f<strong>in</strong>den sich die gleichen Konfigurationsdaten wie<strong>der</strong>:<br />

11 ethN steht für das Interface auf dem die Anfrage geschickt werden soll, beispielsweise dhcpcd eth1 o<strong>der</strong><br />

dhcpcd wlan0


7.6. DHCP-CLIENT 103<br />

IPADDR=10.16.10.12<br />

NETMASK=255.255.255.0<br />

NETWORK=10.16.10.0<br />

BROADCAST=10.16.10.255<br />

DOMAIN=’mydoma<strong>in</strong>.site’<br />

DNS=10.16.10.1<br />

DHCPSID=10.16.10.254<br />

DHCPGIADDR=0.0.0.0<br />

DHCPSIADDR=10.16.10.254<br />

DHCPCHADDR=00:0C:29:5A:B3:E0<br />

DHCPSHADDR=00:50:56:ED:BC:96<br />

DHCPSNAME=’’<br />

LEASETIME=60<br />

RENEWALTIME=720<br />

REBINDTIME=1575<br />

INTERFACE=’eth1’<br />

CLASSID=’L<strong>in</strong>ux 2.6.8-24.11-default i686’<br />

CLIENTID=00:0C:29:5A:B3:E0<br />

Hier können Adm<strong>in</strong>s kontrollieren, welche Daten <strong>der</strong> Client vom Server bezogen hat. dhcpcd<br />

kennt e<strong>in</strong>e Reihe von Optionen, die se<strong>in</strong> Verhalten steuern:<br />

Option Bedeutung<br />

-d Generieren von Debug-Output<br />

-i VCID Schicken e<strong>in</strong>es Vendor Class Identifiers. An<strong>der</strong>e Möglichkeit<br />

Clients anstatt mit <strong>der</strong> MAC-Adresse ause<strong>in</strong>an<strong>der</strong>zuhalten.<br />

-k Schicken e<strong>in</strong>es SIGHUP an laufende dhcpcd Prozesse<br />

Tabelle 7.1: Optionen zur Steuerung des Verhaltens von dhcpcd<br />

Abbildung 7.5: Erneuern e<strong>in</strong>er Lease unter W<strong>in</strong>dows-XP<br />

Unter W<strong>in</strong>dows gibt es das grafische Programm w<strong>in</strong>ipcfg für W<strong>in</strong>dows 98/ME. Mit dem<br />

Klick auf ”Aktualisieren” beschafft sich <strong>der</strong> Benutzer e<strong>in</strong>e neue Lease vom DHCP-Server.<br />

Die Gültigkeit und an<strong>der</strong>e Daten f<strong>in</strong>det man im erweiterten Bereich. ipconfig -renew <strong>in</strong><br />

<strong>der</strong> Kommandozeile regelt die dynamische IP-Beschaffung für die professionelleren Systeme,<br />

wie W<strong>in</strong>dows2000 und XP.


104 KAPITEL 7. DHCP<br />

7.7 DHCP mit LDAP-Backend<br />

In sehr großen Netzen ist die Verwaltung von sehr vielen Masch<strong>in</strong>en <strong>in</strong> e<strong>in</strong>er e<strong>in</strong>fachen<br />

Textdatei (dhcpd.conf) irgendwann nicht mehr zeitgemäß. Es kommt <strong>der</strong> Wunsch auf alle<br />

relevanten Informationen zu den e<strong>in</strong>zelnen Masch<strong>in</strong>en <strong>in</strong> e<strong>in</strong>er Datenbank zu verwalten. Das<br />

Ganze sollte dann auch noch dynamisch funktionieren: Nach e<strong>in</strong>em Update <strong>der</strong> Datenbank<br />

sollte <strong>der</strong> DHCP-Server ohne Neustart mit den aktualisierten Informationen arbeiten.<br />

Hierzu hat Brian Masney 12 e<strong>in</strong>en Patch für den aktuellen ISC DHCP <strong>der</strong> Version 3<br />

gebastelt. Dieser ermöglicht e<strong>in</strong>e Integration mit e<strong>in</strong>em LDAP-Server. Die Struktur <strong>der</strong><br />

DHCP-Konfiguration eignet sich von sich aus gut mit ihren Gruppen- und Subnetz-Abschnitten<br />

<strong>in</strong> e<strong>in</strong>er hierarchischen Datenbank abgebildet zu werden.<br />

Der DHCP-Server <strong>der</strong> aktuellen SuSE-Distributionen ist bereits angepasst, bei Debian<br />

Test<strong>in</strong>g o<strong>der</strong> Unstable Releases muss <strong>der</strong> Patch noch e<strong>in</strong>gefahren werden. Ob das LDAP-<br />

Backend bereits Bestandteil des Servers ist, zeigt das Logfile beim Start:<br />

Jan 12 20:47:26 s2 dhcpd: Internet Systems Consortium DHCP Server V3.0.1<br />

[ ... ]<br />

Jan 12 20:47:26 s2 dhcpd: Not search<strong>in</strong>g LDAP s<strong>in</strong>ce ldap-server, ldap-port<br />

and ldap-base-dn were not specified <strong>in</strong> the config file<br />

[ ... ]<br />

Um dann Ihren DHCP-Server zur Zusammenarbeit mit LDAP zu motivieren, s<strong>in</strong>d e<strong>in</strong>ige<br />

<strong>E<strong>in</strong></strong>tragungen <strong>in</strong> <strong>der</strong> globalen Sektion <strong>der</strong> Konfigurationsdatei notwendig. Dafür können<br />

dann die ”subnet”, ”group” und ”host” Statements entfallen. Diese Informationen wan<strong>der</strong>n<br />

<strong>in</strong> die Datenbank.<br />

ldap-server 10.8.4.254;<br />

ldap-port 389;<br />

ldap-username "cn=dhcpd,ou=users,dc=mydoma<strong>in</strong>,dc=site";<br />

ldap-password "GeheiM";<br />

ldap-base-dn "ou=computers,dc=mydoma<strong>in</strong>,dc=site";<br />

ldap-method dynamic;<br />

Die ersten fünf Deklarationen legen den Zugriff auf den LDAP-Server fest. IP-Nummer<br />

o<strong>der</strong> alternativ <strong>der</strong> Rechnername und die Portnummer s<strong>in</strong>d selbsterklärend. Der ”ldapusername”<br />

gibt an, mit welchem Account sich <strong>der</strong> DHCP-Server an den LDAP-Server<br />

b<strong>in</strong>det. Dieser Account muss über entsprechende Leserechte auf dem ihm zugewiesenen<br />

Abschnitt <strong>der</strong> Datenbank haben. Üblicherweise gehört zum LDAP-Benutzer auch e<strong>in</strong> Passwort<br />

(ldap-passwort).<br />

Die ”ldap-base-dn” ist die Basis für Suchanfragen auf dem LDAP-Baum. Dann müssen<br />

ke<strong>in</strong>e langen Dist<strong>in</strong>guished Names (dn) angegeben werden, son<strong>der</strong>n <strong>der</strong> Teil <strong>in</strong> <strong>der</strong> Base kann<br />

entfallen. Die letzte Option bestimmt mit dem Flag dynamic, dass <strong>der</strong> DHCP-Server bei<br />

je<strong>der</strong> Anfrage den LDAP-Server befragt. Steht hier ”static” holt er sich die Informationen<br />

genau e<strong>in</strong>mal vom LDAP-Server und kappt dann die Verb<strong>in</strong>dung zu diesem.<br />

Der LDAP-Server <strong>in</strong> <strong>der</strong> Standard-Konfiguration kennt zwar schon e<strong>in</strong>e Reihe von Objektklassen,<br />

für die Daten des DHCP-Servers s<strong>in</strong>d jedoch weitere notwendig, z.B. dhcpHost,<br />

dhcpdGroup, dhcpOptions, dhcpServer, ...<br />

Auf die Konfiguration e<strong>in</strong>es LDAP-Servers wird hier nicht weiter e<strong>in</strong>gegangen. Mit LD-<br />

AP beschäftigt sich e<strong>in</strong> eigener Abschnitt des Skriptes. 13 Für das Beispiel existiere bereits<br />

12 http://www.newwave.net/ masneyb<br />

13 Wenn dieser Teil nicht <strong>in</strong> <strong>der</strong> aktuellen Ausgabe enthalten ist, kann dieser über http://goe.net beschafft<br />

werden.


7.7. DHCP MIT LDAP-BACKEND 105<br />

e<strong>in</strong> lauffähiger Server, <strong>der</strong> für den Bereich ”dc=mydoma<strong>in</strong>, dc=site” e<strong>in</strong>gerichtet ist. <strong>E<strong>in</strong></strong><br />

LDIF zum Bestücken e<strong>in</strong>es LDAP-Servers mit DHCP-Daten könnte so aussehen:<br />

# Anlage e<strong>in</strong>es DHCP-Servers im LDAP-Baum<br />

dn: dc=myserver, dc=mydoma<strong>in</strong>, dc=site<br />

objectClass: top<br />

objectClass: dhcpServer<br />

cn: myserver.mydoma<strong>in</strong>.site<br />

dhcpServiceDN: cn=Network, dc=myserver, dc=mydoma<strong>in</strong>, dc=site<br />

# Def<strong>in</strong>ieren e<strong>in</strong>es Knotens "Network" unterhalb dieses Servers<br />

dn: cn=Network, dc=myserver, dc=mydoma<strong>in</strong>, dc=site<br />

cn: Network<br />

objectClass: top<br />

objectClass: dhcpService<br />

objectClass: dhcpOptions<br />

dhcpPrimaryDN: cn=myserver.mydoma<strong>in</strong>.site, dc=myserver, dc=mydoma<strong>in</strong>,<br />

dc=site<br />

dhcpOption: doma<strong>in</strong>-name "myserver.mydoma<strong>in</strong>.site mydoma<strong>in</strong>.site"<br />

dhcpOption: doma<strong>in</strong>-name-servers 10.16.60.1,10.10.10.10<br />

dhcpStatements: default-lease-time 21600<br />

dhcpStatements: max-lease-time 43200<br />

dhcpStatements: ddns-update-style ad-hoc<br />

# Unterhalb des Knotens "Network" <strong>E<strong>in</strong></strong>trag für das Netz 10.16.60.0<br />

# schaffen<br />

dn: cn=10.16.60.0, cn=Network, dc=myserver, dc=mydoma<strong>in</strong>, dc=site<br />

cn: 10.16.60.0<br />

objectClass: top<br />

objectClass: dhcpSubnet<br />

objectClass: dhcpOptions<br />

dhcpNetMask: 24<br />

dhcpOption: routers 10.16.60.254<br />

dhcpOption: subnet-mask 255.255.255.0<br />

# In diesem Netz e<strong>in</strong>zelne Masch<strong>in</strong>en e<strong>in</strong>tragen: ldaphost1<br />

dn: cn=ldaphost1, cn=10.16.60.0, cn=Network, dc=myserver, dc=mydoma<strong>in</strong>,<br />

dc=site<br />

cn: ldaphost1<br />

objectClass: top<br />

objectClass: dhcpHost<br />

dhcpHWAddress: ethernet 00:c0:26:31:6a:13<br />

dhcpStatements: fixed-address 10.16.60.11<br />

# In diesem Netz e<strong>in</strong>zelne Masch<strong>in</strong>en e<strong>in</strong>tragen: ldaphost2<br />

dn: cn=ldaphost2, cn=10.16.60.0, cn=Network, dc=myserver, dc=mydoma<strong>in</strong>,<br />

dc=site<br />

cn: ldaphost2<br />

objectClass: top<br />

objectClass: dhcpHost


106 KAPITEL 7. DHCP<br />

dhcpHWAddress: ethernet 00:c0:26:31:6a:14<br />

dhcpStatements: fixed-address 10.16.60.12<br />

Nach dem Neustart des DHCP-Servers sollte dieser <strong>in</strong> <strong>der</strong> Lage se<strong>in</strong>, die Daten per LDAP zu<br />

beziehen. Für die Fehlersuche empfielt es sich die Debug-Level sowohl des LDAP-Servers als<br />

auch des dhcpd hoch e<strong>in</strong>zustellen. Aus Sicht des Autors ist die Anb<strong>in</strong>dung des DHCP an LD-<br />

AP nicht wirklich optimal. Die Art <strong>der</strong> Datenbank wird kaum ausgenutzt. So gibt es für alle<br />

DHCP-Optionen e<strong>in</strong> e<strong>in</strong>ziges Attribut, welches letztendlich nur e<strong>in</strong>e Zeile <strong>der</strong> Konfigurationsdatei<br />

ohne Semikolon speichert. Wenn <strong>in</strong> <strong>der</strong> dhcpd.conf: option doma<strong>in</strong>-name-servers<br />

10.16.60.1,192.168.10.10; stand, so steht <strong>in</strong> <strong>der</strong> LDAP-Datenbank im Attibut ”dhcpOption”:<br />

”doma<strong>in</strong>-name-servers 10.16.60.1,192.168.10.10”<br />

In vielen Fällen würde man die Computer gerne <strong>in</strong> e<strong>in</strong>er e<strong>in</strong>heitlichen Liste unterhalb e<strong>in</strong>es<br />

Knotens, beispielsweise ”ou=computer” verwalten 14 und alle DHCP-spezifischen Daten<br />

<strong>in</strong> e<strong>in</strong>em eigenen Knoten halten. Das ist <strong>der</strong>zeitig nicht möglich. So erfüllt LDAP lediglich<br />

die Funktion e<strong>in</strong>es dynamischen Backends, kann aber nicht wirklich se<strong>in</strong>e Stärken zu e<strong>in</strong>er<br />

s<strong>in</strong>nvollen Masch<strong>in</strong>enverwaltung ausspielen.<br />

7.8 Aufgaben<br />

7.8.1 DHCP<br />

1) Wor<strong>in</strong> besteht <strong>der</strong> Vorteil von DHCP gegenüber BOOTP? Nennen Sie e<strong>in</strong>ige Eigenschaften<br />

des ISC DHCPv3!<br />

2) Bauen Sie e<strong>in</strong>en DHCP-Server auf, <strong>der</strong> IP-Adressen dynamisch vergibt!<br />

a) Wie sieht <strong>der</strong> entsprechende <strong>E<strong>in</strong></strong>trag <strong>in</strong> <strong>der</strong> /etc/dhcpd.conf aus?<br />

b) Warum bekommt e<strong>in</strong> Rechner häufig dieselbe IP zugeteilt, die dieser schon e<strong>in</strong>mal hatte?<br />

Wo werden diese Informationen abgelegt?<br />

c) Client-Seite: Verän<strong>der</strong>n Sie die MAC-Adresse Ihrer <strong>Netzwerk</strong>karte (Tip: ifconfig ethX hw<br />

ether 00:00:B4:34:35:XY, wobei X, Y Hexadezimalzahlen se<strong>in</strong> sollten, die sich von <strong>der</strong> Wahl<br />

<strong>der</strong> an<strong>der</strong>en Kursteilnehmer unterscheiden.) und starten Sie den Dienst zum dynamischen<br />

Bezug von IP-Nummern neu. Warum bekommen Sie nun e<strong>in</strong>e an<strong>der</strong>e IP als vorher zugeteilt?<br />

3) Wenn man sehr viele Daten (z.B. e<strong>in</strong>e grosse Reihe von Server-IP-Nummern) übergeben<br />

möchte, könnte <strong>der</strong> Platz im DHCP-Antwort-Paket nicht mehr ausreichen. Wäre es s<strong>in</strong>nvoll<br />

deshalb TCP statt UDP e<strong>in</strong>zusetzen, um e<strong>in</strong>e gesicherte Übertragung mehrerer Pakete zu<br />

erreichen? Welche an<strong>der</strong>en Möglichkeiten gibt es noch?<br />

4) Nennen Sie verschiedene Hierarchielevel <strong>der</strong> def<strong>in</strong>ierten Optionen! Welche Level überschreiben<br />

welche? Wozu kann dieses nützlich se<strong>in</strong>?<br />

14 Siehe das Beispiel Samba-LDAP für PDC


Kapitel 8<br />

DNS<br />

8.1 <strong>E<strong>in</strong></strong>stieg<br />

Das Doma<strong>in</strong> Name System (DNS) hatte es zu Zeiten des Internet-Booms bis <strong>in</strong> die Hauptnachrichten<br />

geschafft: Immer dann, wenn es juristische Ause<strong>in</strong>an<strong>der</strong>setzungen über bekannte<br />

Namen und Marken gab. Wenn jemand im Internet was zu Gött<strong>in</strong>gen sucht, probiert<br />

er es am besten unter dem Namen <strong>der</strong> Stadt, also www.goett<strong>in</strong>gen.de. Ke<strong>in</strong>er kennt die<br />

IP-Adresse des Auftritts - 134.76.251.205.<br />

Auch wenn es an <strong>der</strong> gerichtlichen Front ruhiger geworden ist, kommen täglich neue<br />

Doma<strong>in</strong>s h<strong>in</strong>zu. Viele haben sich vielleicht schon vor e<strong>in</strong>iger Zeit e<strong>in</strong>e eigene Webpräsenz<br />

mit eigenem Namen bei irgende<strong>in</strong>em Provi<strong>der</strong> e<strong>in</strong>richten lassen o<strong>der</strong> denken darüber nach<br />

e<strong>in</strong>e Doma<strong>in</strong> zu registrieren. Man frage e<strong>in</strong>fach mal im eigenen Umfeld herum - bestimmt<br />

f<strong>in</strong>den sich Bekannte und Verwandte als Inhaber e<strong>in</strong>er Internet-Doma<strong>in</strong>.<br />

Ebenfalls erweitert sich die Zahl <strong>der</strong> sogenannten Toplevel-Doma<strong>in</strong>s ständig. So ist die<br />

Landes-Toplevel-Doma<strong>in</strong> de die weltweit zweitgrößte nach <strong>der</strong> generischen Doma<strong>in</strong> com.<br />

Irgendjemand muss diese ganzen Namen auch verwalten. Darum kümmert sich <strong>der</strong> Doma<strong>in</strong><br />

Name Server. Auch für diese Aufgabe bietet sich L<strong>in</strong>ux an.<br />

8.1.1 Enstehungsgeschichte<br />

DNS ist <strong>in</strong>zwischen untrennbar mit dem Internet verknüpft. Rechner im weltweiten Internet<br />

werden <strong>in</strong> <strong>der</strong> überwiegenden Zahl über ihren Namen und nicht über ihre IP-Adresse<br />

angesprochen. Es ist jedoch so, dass das Internet-Protokoll ohne Probleme ohne DNS klarkommt,<br />

DNS jedoch als Dienst direkt auf IP angewiesen ist.<br />

Menschen können sich schliesslich Namen besser merken als Telefonnummern. Wenn<br />

auch das Beispiel sich nicht direkt übertragen lässt, zeigt es die Bedeutung. Je<strong>der</strong> kennt<br />

www.google.de. Kaum aber jemand weiss, dass beim Ansurfen <strong>der</strong> Seite aus Deutschland 1<br />

<strong>der</strong> Browser e<strong>in</strong>e Verb<strong>in</strong>dung zu IP 66.102.9.99 o<strong>der</strong> 66.102.9.104 aufbaut. Wer wissen<br />

möchte, wie <strong>der</strong> Browser den Namen zur Adresse mit Hilfe <strong>der</strong> Systembibliotheken auflöst,<br />

gibt e<strong>in</strong>fachmal das Kommando host e<strong>in</strong>.<br />

dirk@l<strong>in</strong>ux:~> host www.google.de<br />

www.google.de is an alias for www.google.com.<br />

www.google.com is an alias for www.google.akadns.net.<br />

www.google.akadns.net has address 66.102.9.99<br />

www.google.akadns.net has address 66.102.9.104<br />

Das Netz kann aber ausschliesslich mit B<strong>in</strong>äradressen umgehen - auch die besser lesbare<br />

Dotted Quad Notation aus dem Beispiel ist nur e<strong>in</strong>e Übersetzung für den menschlichen<br />

1 je nach Provi<strong>der</strong>, da es oft erstmal e<strong>in</strong> Proxy ist<br />

107


108 KAPITEL 8. DNS<br />

Benutzer. Deshalb wird e<strong>in</strong> System für die Zuordnung von Namen zu Adressen - und umgekehrt<br />

benötigt. Am Anfang g<strong>in</strong>g es mit e<strong>in</strong>er e<strong>in</strong>fachen Textdatei los. Diese Textdatei gibt<br />

es immer noch. In kle<strong>in</strong>en Netzen o<strong>der</strong> zu Zeiten <strong>in</strong> denen Ihre Masch<strong>in</strong>e ke<strong>in</strong>e <strong>Netzwerk</strong>verb<strong>in</strong>dung<br />

zu e<strong>in</strong>em DNS-Server hat, soll sie trotzdem Namen und IPs zuordnen können:<br />

# /etc/hosts<br />

# Syntax:<br />

# IP-Address Full-Qualified-Hostname Short-HostnamePv6 addresses<br />

::1 ipv6-localhost ipv6-loopback<br />

fe00::0 ipv6-localnet<br />

ff00::0 ipv6-mcastprefix<br />

ff02::1 ipv6-allnodes<br />

ff02::2 ipv6-allrouters<br />

127.0.0.1 localhost<br />

10.8.4.101 dionysos.mydoma<strong>in</strong>.site dionysos<br />

# resolv other mach<strong>in</strong>es without DNS<br />

10.8.4.205 aphrodite.wg.site aphrodite<br />

10.8.4.206 athene.wg.site athene<br />

[ ... ]<br />

10.8.4.250 thetis.wg.site thetis<br />

Üblicherweise steht da nur noch die eigene Masch<strong>in</strong>e dr<strong>in</strong>, im Beispiel dionysos. Diese <strong>E<strong>in</strong></strong>stellung<br />

landet <strong>in</strong> dieser Datei, wenn man die Masch<strong>in</strong>e mit dem Installationstool <strong>der</strong> gerade<br />

verwendeten Distribution e<strong>in</strong>richtet Alle an<strong>der</strong>en <strong>E<strong>in</strong></strong>träge gelten für spezielle Adressen,<br />

wie das lokale Loopback (127.0.0.1). In e<strong>in</strong>em kle<strong>in</strong>en <strong>Netzwerk</strong>, <strong>in</strong> dem sich wenig än<strong>der</strong>t,<br />

könnte man e<strong>in</strong>fach weitere Rechner <strong>in</strong> diese Datei e<strong>in</strong>tragen und diese anschliessend auf<br />

alle Masch<strong>in</strong>en verteilen. Im Beispiel lassen sich so aphrodite, athene ... ohne Zurhilfenahme<br />

von DNS auflösen.<br />

Da gehen dann schnell die Probleme los: Nicht immer s<strong>in</strong>d alle Rechner gleichzeitig<br />

an. Dann ist die Verteilung unvollständig. Bei häufigen Updates steigt mit <strong>der</strong> Zahl <strong>der</strong><br />

Rechner und <strong>der</strong> <strong>E<strong>in</strong></strong>träge die Fehlerwahrsche<strong>in</strong>lichkeit und ziemlich schnell hat <strong>der</strong> Adm<strong>in</strong><br />

ke<strong>in</strong>e Lust mehr. Das g<strong>in</strong>g den Betreibern <strong>der</strong> frühen IP-Netze genau so. Das frühe Internet<br />

bestand aus wenigen Hosts und die Adm<strong>in</strong>istratoren dieser Masch<strong>in</strong>en kannten sich alle<br />

persönlich.<br />

Das hörte mit <strong>der</strong> steigenden Zahl vernetzter Rechner irgendwann auf. Das Konzept<br />

e<strong>in</strong>er e<strong>in</strong>zigen ”flachen” Datei liess nicht mehr aufrecht erhalten. Fragen <strong>der</strong> Übersichtlichkeit,<br />

Ausfallsicherheit und Redundanz liessen sich mit dem Dateikonzept nicht überzeugend<br />

lösen. <strong>E<strong>in</strong></strong> weiteres Problem tritt auf, wenn die User <strong>in</strong> gewissem Rahmen ihre Rechnernamen<br />

selbst verwalten wollen.<br />

Informatiker an <strong>der</strong> University of California <strong>in</strong> Berkeley machten sich Gedanken, wie sich<br />

das Problem lösen liesse. Das neue System sollte dabei dezentral verteilt, ausfallsicher se<strong>in</strong><br />

und die Datenbestände schnell konvergieren. Die Berkeley Internet Name Doma<strong>in</strong> Software<br />

- daher <strong>der</strong> Name BIND - ist <strong>der</strong> Standard auf den meisten L<strong>in</strong>ux-/<strong>Unix</strong>-Systemen. Die<br />

Software ist OpenSource und <strong>der</strong>zeit <strong>in</strong> <strong>der</strong> Version 9.X verfügbar. Die aktuelle Version<br />

verrät e<strong>in</strong>em das Kommando /usr/sb<strong>in</strong>/named -v.<br />

DNS war nicht <strong>der</strong> e<strong>in</strong>zige Versuch. Viele Adm<strong>in</strong>s kennen sicherlich WIN¿, das W<strong>in</strong>dows<br />

Name System. Dieses kann im P2P- o<strong>der</strong> Servermodus arbeiten, kennt aber nur e<strong>in</strong>e<br />

flache Namenshierarchie, welche <strong>in</strong> früheren Versionen auf 255 Masch<strong>in</strong>en beschränkt war.<br />

WINS ist e<strong>in</strong> System für LANs - ohne große Benutzere<strong>in</strong>griffe verständigen sich die beteiligten<br />

Masch<strong>in</strong>en über ihre Namen. Sie verursachen dabei aber e<strong>in</strong>en nicht unerheblichen


8.1. EINSTIEG 109<br />

<strong>Netzwerk</strong>verkehr. Mit W<strong>in</strong>dows2000 und dem Active Directory, welches als unterliegende<br />

Struktur DNS verwendet, verliert WINS weiter an Bedeutung.<br />

8.1.2 DNS - Das virtuelle IP-Telefonbuch<br />

DNS ist e<strong>in</strong> hierarchisches System mit e<strong>in</strong>er e<strong>in</strong>zigen geme<strong>in</strong>samen Wurzel. Diese wird durch<br />

e<strong>in</strong>en Punkt ”.” symbolisiert. Dann folgen die sogenannten Toplevel-Doma<strong>in</strong>s. Hiervon gibt<br />

es zwei Typen: generische Doma<strong>in</strong>s und Län<strong>der</strong>kürzel. Die generischen Toplevel Doma<strong>in</strong>s,<br />

wie org, gov, com, mil, arpa und edu wurden schon im Herbst 1984 vorgeschlagen. net folgte<br />

e<strong>in</strong> Jahr später. H<strong>in</strong>zu kamen auf dem obersten Level die zweibuchstabigen Län<strong>der</strong>kürzel<br />

nach ISO 3166. <strong>E<strong>in</strong></strong>e vollständige Liste ist unter [1] erhältlich. Unterhalb dieser Hierarchiestufe<br />

kann man selbst, Organisationen o<strong>der</strong> Firmen Doma<strong>in</strong>s registrieren. Ab den folgenden<br />

Hierarchiestufen habt <strong>der</strong> Adm<strong>in</strong> dann fast volle Freiheit, wenn er sich nur an die Benennungsstandards<br />

hält.<br />

Das Konzept des umgekehrten hierarchischen Baumes kennt man von den gängigen<br />

Dateisystemen her. Verfolgt man e<strong>in</strong>en Pfad von Wurzel zu e<strong>in</strong>em Knoten, so ergibt sich<br />

<strong>der</strong> jeweilige Verzeichnis- bzw. Date<strong>in</strong>amen. Die e<strong>in</strong>zelnen Ebenen werden beispielsweise<br />

bei <strong>Unix</strong> durch e<strong>in</strong>en Schrägstrich (/), durch e<strong>in</strong>en Backslash () bei W<strong>in</strong>dows vone<strong>in</strong>an<strong>der</strong><br />

getrennt. Diese Struktur f<strong>in</strong>det sich <strong>in</strong> weiteren Bereichen. Telefonnummern folgen <strong>in</strong>ternational<br />

e<strong>in</strong>em ähnlichen Pr<strong>in</strong>zip: Zuerst f<strong>in</strong>det man den Län<strong>der</strong>code (+49), dann die<br />

Orts-Vorwahl (551) und schliesslich die Anschlussnummer (654321).<br />

Genauso setzt sich <strong>der</strong> komplette Rechnername 2 aus mehreren Teilen zusammen. Ausser<br />

dass als Trennelement <strong>der</strong> e<strong>in</strong>zelnen Ebenen <strong>der</strong> Punkt (.) verwendet wird. An<strong>der</strong>s als <strong>in</strong><br />

den beiden vorgenannten Beispielen dreht sich die Reihenfolge von Allgeme<strong>in</strong> zu Speziell<br />

um: Der Rechnername steht l<strong>in</strong>ks, gefolgt von den Zwischenebenen bis zur Wurzel, die<br />

rechts steht. So ist beispielsweise <strong>in</strong> www.goe.net ”www” e<strong>in</strong> Name für e<strong>in</strong>en konkreten<br />

Rechner. Dieser Rechner ist Mitglied <strong>in</strong> <strong>der</strong> Second-Level-Doma<strong>in</strong> ”goe”, die unterhalb <strong>der</strong><br />

Toplevel-Doma<strong>in</strong> ”net” registriert wurde.<br />

8.1.3 Regeln für die Namensgebung<br />

Damit am Ende die selbstgetauften Rechner <strong>der</strong> eigenen Doma<strong>in</strong> im weltweiten Netz auch<br />

gefunden werden können, geht es nicht ohne Standards ab. Für die Zusammensetzung e<strong>in</strong>es<br />

gültigen FQDN gelten e<strong>in</strong>ige Regeln:<br />

• Je<strong>der</strong> Teilname (label) umfasst maximal 63 Zeichen. Es muss m<strong>in</strong>destens e<strong>in</strong> Buchstabe<br />

enthalten se<strong>in</strong>, damit e<strong>in</strong> Verwechseln mit IP-Adressen ausgeschlossen wird.<br />

• Die Gesamtlänge des FQDN darf 255 Zeichen <strong>in</strong>klusive <strong>der</strong> Punkte nicht überschreiten.<br />

• Erlaubt s<strong>in</strong>d die alphanumerischen Zeichen 0-9 und a-z. Groß- und Kle<strong>in</strong>schreibung<br />

spielt ke<strong>in</strong>e Rolle. Zusätzlich möglich ist die Verwendung des B<strong>in</strong>destrichs ”-”. Er<br />

kann im Gegensatz zu den an<strong>der</strong>en Zeichen nicht am Anfang o<strong>der</strong> Ende e<strong>in</strong>es Namens<br />

stehen. Inzwischen s<strong>in</strong>d auch Umlaute im Namen erlaubt. Hierfür gelten jedoch<br />

spezielle Regeln.<br />

• Je<strong>der</strong> FQDN endet mit e<strong>in</strong>em Punkt. Das macht normalerweise ke<strong>in</strong>er und ist ausserhalb<br />

<strong>der</strong> Zonendateien des BIND auch ke<strong>in</strong> Problem.<br />

2 <strong>in</strong> <strong>der</strong> Fachsprache mit FQDN - Full Qualified Doma<strong>in</strong> Name bezeichnet


110 KAPITEL 8. DNS<br />

Für Umlautdoma<strong>in</strong>s, sogenannte International Doma<strong>in</strong> Names (IDN) wird die sogenannte<br />

ACE-Umschrift verwendet. Anwen<strong>der</strong> geben <strong>in</strong> ihrem Browser beispielsweise jörg.hänßler.de<br />

e<strong>in</strong>. Diesen Str<strong>in</strong>g wandelt <strong>der</strong> Browser dann <strong>in</strong>tern <strong>in</strong> ACE für die Abfrage an den Nameserver<br />

um. Das Ergebnis des Beispiels sieht dann so aus xn–jrg-sna.xn–hnssler-5wa.de.<br />

Viele Web-Browser beherrschen <strong>in</strong>zwischen den Umgang mit IDN, viele an<strong>der</strong>e Client-<br />

Programme jedoch nicht. So liefert zwar www.müller.de e<strong>in</strong> Ergebnis im Konqueror, e<strong>in</strong><br />

p<strong>in</strong>g www.müller.de jedoch nur e<strong>in</strong> lapidares ”unknown host www.müller.de”.<br />

<strong>E<strong>in</strong></strong> p<strong>in</strong>g auf die ACE-Umschrift (hier www.xn–mller-kva.de) klappt natürlich. Die Längenbegrenzung<br />

des Teilstr<strong>in</strong>gs bleibt bestehen. So können Umlautdoma<strong>in</strong>s nicht die Länge<br />

von 63 Zeichen erreichen, da noch Platz für die Umschrift e<strong>in</strong>zuplanen ist.<br />

Für nicht öffentliche Netze ist man nicht zwangsläufig an vorgegebene Toplevel-Doma<strong>in</strong>s<br />

gebunden, man kann sich e<strong>in</strong>fach e<strong>in</strong>e aussuchen. Wenn man jedoch für se<strong>in</strong> privates Netz<br />

e<strong>in</strong>fach e<strong>in</strong>e offizielle Doma<strong>in</strong> wählt, wie beispielsweise testnetz.de, dann könnten Nutzer<br />

verwirrt werden. Sie würden dann unter Umständen versucht se<strong>in</strong>, diese Doma<strong>in</strong> auch von<br />

an<strong>der</strong>en Orten als dem eigenen privaten nach aussen abgeschotteten Netz zu erreichen.<br />

<strong>E<strong>in</strong></strong> Name, wie hermes.wg.site macht durch den Toplevel ”.site” klar, dass es diese Doma<strong>in</strong><br />

nicht offiziell gibt. Bis vor e<strong>in</strong>iger Zeit war stattdessen die Pseudo-Toplevel-Doma<strong>in</strong> ”.local”<br />

Quasistandard. Sie ist aber für selbstkonfigurierende lokale Netze 3 gedacht<br />

8.1.4 Registrieren und Verwalten von Doma<strong>in</strong>s<br />

Organisationen, Privatpersonen, Firmen registrieren immer e<strong>in</strong>e Second-Level-Doma<strong>in</strong>, die<br />

unterhalb e<strong>in</strong>er dieser Toplevel-Namen liegt. Mit <strong>der</strong> Registrierung beispielsweise von ”goe”<br />

unterhalb von ”net” wurde dem Autor die Doma<strong>in</strong> goe.net zugeordnet. Damit folgt nicht<br />

automatisch auch die Existenz von Doma<strong>in</strong>s, wie goe.org o<strong>der</strong> das Nutzungsrecht darauf. So<br />

musste beispielsweise die Firma Google die verschiedenen Doma<strong>in</strong>s google.com, google.net,<br />

google.de o<strong>der</strong> google.us e<strong>in</strong>zeln registrieren. Die Abbildung zeigt e<strong>in</strong>en symbolischen Aus-<br />

country generic<br />

de fr uk<br />

Toplevel<br />

Doma<strong>in</strong>s<br />

net mil org com edu<br />

Second Level<br />

gwdg Doma<strong>in</strong>s<br />

uni-freiburg<br />

goe kernel google<br />

ftp<br />

www www ftp www l<strong>in</strong>ux<br />

www ftp ks<br />

Part of Doma<strong>in</strong> Name Space<br />

www<br />

Abbildung 8.1: Ausschnitt aus dem Namensraum<br />

schnitt aus dem DNS-Namensraum des Internets. Neben den ursprünglich festgelegten dreibuchstabigen<br />

generischen Toplevel-Doma<strong>in</strong>s und den Län<strong>der</strong>kürzeln s<strong>in</strong>d <strong>in</strong> jüngster Zeit<br />

weitere Doma<strong>in</strong>-Endungen h<strong>in</strong>zugekommen. Durch die Mo<strong>der</strong>ation von ICANN wurden<br />

weitere Toplevel-Doma<strong>in</strong>s vorgeschlagen: aero, biz, coop, <strong>in</strong>fo, museum, name, pro o<strong>der</strong> eu.<br />

Unterhalb dieser neuen Toplevel-Doma<strong>in</strong>s können zum Teil schon (m<strong>in</strong>destens <strong>in</strong>fo, biz,<br />

name) Doma<strong>in</strong>s über verschiedene Registrare e<strong>in</strong>getragen werden.<br />

3 Apple nennt diesen Dienst Rendevouz. Unter L<strong>in</strong>ux gibt es dafür den mdnsd Dienst, <strong>der</strong> dynamisches<br />

DNS <strong>in</strong> lokalen Netzen bereitstellt.


8.2. IMPLEMENTATION 111<br />

Für die e<strong>in</strong>zelnen Toplevel-Doma<strong>in</strong>s ist nicht e<strong>in</strong>e Organisation o<strong>der</strong> Firma zuständig.<br />

Für die Toplevel-Doma<strong>in</strong> de regelt dieses DENIC. Sie ist e<strong>in</strong>e e<strong>in</strong>getragene Genossenschaft.<br />

In ihr s<strong>in</strong>d beispielsweise große Internet-Service-Provi<strong>der</strong> und Diensteanbieter Mitglied.<br />

Diese können im Auftrag ihrer Kunden Doma<strong>in</strong>s registrieren. Die Informationen wem e<strong>in</strong>e<br />

Doma<strong>in</strong> gehört, wer für den Betrieb des Nameservers dieser Doma<strong>in</strong> zuständig ist und<br />

weitere Daten s<strong>in</strong>d <strong>in</strong> <strong>der</strong> sogenannten whois-Datenbank gespeichert. Früher liessen sich<br />

diese Informationen per Kommandozeilen-Tool direkt abfragen, nun geht es nur noch über<br />

die Webschnittstellen <strong>der</strong> Registrare o<strong>der</strong> auch direkt bei www.denic.de. Doma<strong>in</strong>-Inhaber,<br />

adm<strong>in</strong>istrativer o<strong>der</strong> technischer Ansprechpartner und Zonenverwalter können durchaus<br />

verschiedene Personen se<strong>in</strong>.<br />

Die meisten Registrare stellen zwei Möglichkeiten zur Verfügung e<strong>in</strong>e Doma<strong>in</strong> zu ”konnektieren”,<br />

d.h. im Internet erreichbar zu machen. Der übliche Weg ist die ”Delegation”.<br />

Das bedeutet, dass <strong>in</strong> den DENIC-Datenbanken die Adressen von m<strong>in</strong>destens zwei (maximal<br />

fünf) Nameservern vermerkt werden. Üblicherweise stellen die Registrare bei <strong>der</strong> Erste<strong>in</strong>tragung<br />

von Nameservern sicher, dass diese funktionieren. Die Daten des zugehörigen<br />

SOA-Records (SOA=Start Of Authority) des Nameservers sollten ich deshalb <strong>in</strong> folgendem<br />

Spektrum bewegen (Angaben <strong>in</strong> Sekunden): <strong>E<strong>in</strong></strong>e alternative Möglichkeit e<strong>in</strong>e Doma<strong>in</strong><br />

Variable Gefor<strong>der</strong>te Zeiten <strong>in</strong> Sekunden<br />

refresh 10000 - 86400<br />

retry 1800 -28800<br />

expire 604800 - 3600000<br />

ttl 180 - 345600<br />

Tabelle 8.1: <strong>E<strong>in</strong></strong>stellungen im SOA<br />

zu konnektieren besteht dar<strong>in</strong>, dass auf dem Nameserver des Registrars e<strong>in</strong> bis zu e<strong>in</strong>ige<br />

”Dienste”, die mit dieser Doma<strong>in</strong> zusammenhängen direkt e<strong>in</strong>getragen werden. So können<br />

beispielsweise www.¡Name <strong>der</strong> Doma<strong>in</strong>¿.de o<strong>der</strong> ftp.¡Name <strong>der</strong> Doma<strong>in</strong>¿.de direkt mit e<strong>in</strong>er<br />

IP-Adresse registriert werden. Dieses Verfahren wird als Konnektierung mittels NSentry-<br />

<strong>E<strong>in</strong></strong>trägen bezeichnet. Das spart den eigenen Nameserver und macht bei kle<strong>in</strong>en Doma<strong>in</strong>s<br />

mit wenigen Diensten S<strong>in</strong>n.<br />

8.2 Implementation<br />

<strong>E<strong>in</strong></strong> Nameserver ist niemals für das gesamte Internet verantwortlich, son<strong>der</strong>n verwaltet lediglich<br />

e<strong>in</strong>en Teil des Namensraumes. Bevor es jedoch um die Frage geht, welcher Nameserver<br />

sich um welchen Bereich des Namensraumes kümmert, s<strong>in</strong>d e<strong>in</strong>ige Begriffe zu klären. Bisher<br />

kam <strong>der</strong> Ausdruck ”Doma<strong>in</strong>”, deutsch ”Domäne” schon häufiger vor. Diesen sollte man<br />

nicht mit e<strong>in</strong>er (W<strong>in</strong>dows-)NT-Domäne verwechseln. <strong>E<strong>in</strong></strong>e solche fasst auch Gruppen von<br />

Rechnern organisatorisch zusammen. Es stecken jedoch komplett an<strong>der</strong>e Pr<strong>in</strong>zipien h<strong>in</strong>ter<br />

e<strong>in</strong>er DNS- o<strong>der</strong> W<strong>in</strong>dows-Doma<strong>in</strong>.<br />

8.2.1 Nameserver und Zuständigkeiten<br />

Bezogen auf den DNS-Namensraum ist e<strong>in</strong> Doma<strong>in</strong> e<strong>in</strong> Knoten des Baumes mit allen darunter<br />

folgenden Verzweigungen. So s<strong>in</strong>d die Masch<strong>in</strong>en ftp.uni-freiburg.de und www.ks.unifreiburg.de<br />

Teile <strong>der</strong> Doma<strong>in</strong> uni-freiburg.de. Die Rechner mit <strong>der</strong> geme<strong>in</strong>samen Doma<strong>in</strong><br />

können, müssen aber nicht <strong>in</strong> e<strong>in</strong>em geme<strong>in</strong>samen IP-Subnetz liegen. Sie haben auch sonst<br />

nicht viel geme<strong>in</strong> o<strong>der</strong> müssen <strong>in</strong> irgende<strong>in</strong>er weitergehenden Beziehung zue<strong>in</strong>an<strong>der</strong> stehen.


112 KAPITEL 8. DNS<br />

Im Beispiel stehen <strong>der</strong> Rechner ftp.uni-freiburg.de und die Subdoma<strong>in</strong> ks.uni-freiburg.de auf<br />

e<strong>in</strong>er Hierarchiestufe. Unterhalb von ”ks” können wie<strong>der</strong>um Rechner (im Beispiel ”www”)<br />

e<strong>in</strong>getragen se<strong>in</strong> o<strong>der</strong> weitere Subdoma<strong>in</strong>s folgen. Der Begriff Domian ist e<strong>in</strong>e Frage <strong>der</strong> Organisation:<br />

”Welche Hosts be<strong>in</strong>haltet die DNS-Doma<strong>in</strong> D?” o<strong>der</strong> ”Unter welcher Doma<strong>in</strong><br />

ist die Person P o<strong>der</strong> Organisation O erreichbar?”<br />

Ist man nun für e<strong>in</strong>e solche Doma<strong>in</strong> zuständig o<strong>der</strong> <strong>der</strong>en Eigentümer, betreibt man<br />

e<strong>in</strong>en Nameserver. In diesem kann man dann beliebige Rechnernamen e<strong>in</strong>tragen o<strong>der</strong> Sub-<br />

Doma<strong>in</strong>s festlegen. So ist ks.uni-freiburg.de e<strong>in</strong>e Subdoma<strong>in</strong> von uni-freiburg.de. Wenn man<br />

sich diese Organisation näher anschaut, stellt man fest, dass die Doma<strong>in</strong>names hierarchisch<br />

aufgebaut s<strong>in</strong>d. Trotzdem ist nur e<strong>in</strong> Nameserver für diese Doma<strong>in</strong> verantwortlich. Dieser<br />

Nameserver ist ”autoritativ”. Die bis zu vier weiteren Nameserver, die man bei <strong>der</strong><br />

Registrierung angeben kann, erfüllen Backup- und Redundanzfunktionen.<br />

<strong>E<strong>in</strong></strong> zentrales Konzept des DNS ist die Delegation. Die hierarchische Struktur des DNS<br />

erlaubt die Verteilung von Informationen. Das hat e<strong>in</strong>ige Vorteile: Die Daten werden an den<br />

Stellen gepflegt, wo sie bekannt s<strong>in</strong>d. Oft kommunizieren <strong>in</strong> lokalen Netzen gerade die lokalen<br />

Masch<strong>in</strong>en direkt mite<strong>in</strong>an<strong>der</strong>. Namensanfragen können direkt vor Ort mit kürzester<br />

Verzögerung beantwortet werden. Durch Delegation wird die Autorität für Subdoma<strong>in</strong>s auf<br />

an<strong>der</strong>e Nameserver übertragen. Das passiert bei <strong>der</strong> Registrierung e<strong>in</strong>er DE-Doma<strong>in</strong> beim<br />

DENIC, wenn man eigene Nameserver angibt. Die neu e<strong>in</strong>getragene Doma<strong>in</strong> ist e<strong>in</strong>e Subdoma<strong>in</strong><br />

von DE. Bei <strong>der</strong> Delegation kann <strong>der</strong> Adm<strong>in</strong>istrator entscheiden, welche Bereiche<br />

se<strong>in</strong>er Doma<strong>in</strong> auf an<strong>der</strong>e Nameserver übertragen werden sollen. In solchen Fällen spricht<br />

man von Zonen. <strong>E<strong>in</strong></strong>e Zone ist alle<strong>in</strong> durch Delegation def<strong>in</strong>iert. Dieser Begriff bezeichnet<br />

deshalb meist die physikalischen Realisierung. An <strong>der</strong> Universität Freiburg ist beispielsweise<br />

die Subdoma<strong>in</strong> <strong>in</strong>formatik.uni-freiburg.de an e<strong>in</strong>en eigenen Nameserver delegiert. Alles<br />

<strong>in</strong>nerhalb dieser Subdoma<strong>in</strong> bildet e<strong>in</strong>e eigene Zone. Die Subdoma<strong>in</strong> ks.uni-freiburg.de wird<br />

auf dem zentralen Nameserver <strong>der</strong> Doma<strong>in</strong> uni-freiburg.de verwaltet. ”ks” ist also Bestandteil<br />

<strong>der</strong> Zone uni-freiburg.de.<br />

Die Nameserver <strong>der</strong> Doma<strong>in</strong> uni-freiburg.de wissen um ihre Schäfchen o<strong>der</strong> kennen jemanden,<br />

<strong>der</strong> um Teilmengen weiss (delegierte Subdoma<strong>in</strong>s). Was ist aber, wenn ganz allgeme<strong>in</strong><br />

irgende<strong>in</strong>e Doma<strong>in</strong> aufgelöst werden soll? Die oberste Ebene bei den Nameservern<br />

bilden die sogenannten Root-Nameserver. Sie s<strong>in</strong>d gleichzeitig autoritativ für die Top Level<br />

Doma<strong>in</strong>s. Diese kennen wie<strong>der</strong>um die verantwortlichen Nameserver für die zweite Ebene,<br />

z.B. goe.net o<strong>der</strong> uni-goett<strong>in</strong>gen.de. Soll e<strong>in</strong> beliebiger Hostnamen aufgelöst werden, kommt<br />

e<strong>in</strong>er <strong>der</strong> Root-Nameserver <strong>in</strong>s Spiel. Nur dieser kennt den autoritativen Nameserver <strong>der</strong><br />

Second-Level Ebene. Die Erreichbarkeit <strong>der</strong> Root-Nameserver ist zentrales Element des<br />

DNS. <strong>E<strong>in</strong></strong> Ausfall dieser zentralen Masch<strong>in</strong>en hätte katastrophale Auswirkungen auf die<br />

Funktion des Internets. Diese mag dann zwar immer noch wie vorher funktionieren. Aber<br />

<strong>in</strong> dem Augenblick, wo IP-Adressen nicht mehr von Namen ermittelt werden können, ist<br />

die Kommunikation schnell nicht mehr möglich. Deshalb werden Root-Nameserver durch<br />

Cach<strong>in</strong>g entlastet und arbeiten ausschliesslich iterativ.<br />

Bisher g<strong>in</strong>g es immer um die Auflösung von Namen zu IP-Adressen. Im Beispiel oben<br />

wurde auch schon kurz <strong>der</strong> umgekehrte Fall angesprochen. Was macht man aber, wenn man<br />

die IP-Adresse kennt und den zugehörigen Hostnamen o<strong>der</strong> die Doma<strong>in</strong> wissen möchte?<br />

IP-Adressen <strong>in</strong> <strong>der</strong> ”dotted-quad-notation”, also sowas wie 134.76.60.86 ähneln sich vom<br />

Aufbau her den Doma<strong>in</strong>names. Das gilt ebenfalls für e<strong>in</strong>e gewisse Hierarchie (solange die<br />

Subnetzaufteilung entlang <strong>der</strong> Punkte erfolgt) <strong>der</strong> IP-Adressen: 134.76.0.0 ist als IP-Netz<br />

an die Universität Gött<strong>in</strong>gen zugewiesen. Innerhalb dieses Netzes lassen sich beispielsweise<br />

Subnetze <strong>der</strong> Form 134.76.0.0 - 134.76.255.0 festlegen.<br />

Das wird e<strong>in</strong>fach dazu benutzt auch für die umgekehrte Auflösung das Konzept <strong>der</strong> hier-


8.3. DNS-SERVER MIT LINUX 113<br />

archischen Datenbank und Delegation zu nutzen. Es stößt aber schneller an se<strong>in</strong>e Grenzen<br />

<strong>in</strong> dem Augenblick, wo e<strong>in</strong> Netz <strong>der</strong> Form 134.76.60.0/255.255.255.0 <strong>in</strong> mehrere Teilnetze<br />

aufgeteilt werden soll, die unterschiedlichen Subdoma<strong>in</strong>s zugeordnet s<strong>in</strong>d.<br />

8.2.2 Cach<strong>in</strong>g<br />

Nameserver können selbstständig Anfragen weiterleiten, falls sie nicht selbst für die nachgefragte<br />

Zone autoritativ s<strong>in</strong>d. Trotzdem ist es <strong>in</strong> den meisten Fällen <strong>in</strong>effektiv, wenn bei<br />

gleichen Anfragen jedes Mal e<strong>in</strong>e Weiterleitung erfolgt. Deshalb speichert <strong>der</strong> Server Namensauflösungen<br />

für e<strong>in</strong>e gewisse Zeit zwischen (Cach<strong>in</strong>g). Die Aufbewahrungsdauer für<br />

e<strong>in</strong>en <strong>E<strong>in</strong></strong>trag ist jedoch nicht trivial zu bestimmen. Es gibt Server <strong>der</strong>en IP-Adressen sich<br />

jahrelang nicht än<strong>der</strong>n. Es gibt aber auch Masch<strong>in</strong>en, die beispielsweise per DHCP e<strong>in</strong>e<br />

dynamische Adresse beziehen und nur für e<strong>in</strong>e gewisse (kurze) Zeit aktiv s<strong>in</strong>d. O<strong>der</strong><br />

Site-Betreiber nutzen DNS zur Lastverteilung verschiedene Server und reichen deshalb verschiedene<br />

IPs für dieselbe Adresse heraus 4 .<br />

Wie lange dieser <strong>E<strong>in</strong></strong>trag beibehalten werden soll, legt <strong>der</strong> verantwortliche Serverbetreiber<br />

<strong>der</strong> Zone mit <strong>der</strong> Time-To-Live (TTL) fest. Welche Möglichkeiten e<strong>in</strong>em hier zur<br />

Verfügung stehen, klärt <strong>der</strong> Abschnitt zur <strong>E<strong>in</strong></strong>richtung e<strong>in</strong>es BIND DNS-Servers. Darüber<br />

h<strong>in</strong>aus merkt sich <strong>der</strong> anfragende Server den autoritativen Nameserver für die jeweiligen<br />

Zonen. So vermeidet er, dass bei <strong>der</strong> Auflösung nicht alle Instanzen <strong>der</strong> Hierarchie durchlaufen<br />

werden müssen. Das hat den Vorteil bei unterschiedlichen Hosts <strong>der</strong> gleichen Zone<br />

sofort <strong>der</strong> verantwortlichen Server zu kennen. DNS kennt auch negatives Cach<strong>in</strong>g: In diesem<br />

Fall werden nicht existierende FQDN für e<strong>in</strong>en bestimmten Zeitraum gemerkt, damit<br />

nicht jedes Mal auf e<strong>in</strong> Timeout gewartet werden muss - diese Zeit wird allerd<strong>in</strong>gs vom<br />

ursprünglich befragten Nameserver selbst vorgegeben.<br />

8.2.3 Primärer und sekundäre Nameserver<br />

Beim Entwurf von DNS wurde sehr viel Wert auf Ausfallsicherheit gelegt. Aus diesem<br />

Grund ist es üblich, statt e<strong>in</strong>es e<strong>in</strong>zigen gleich mehrere Nameserver für e<strong>in</strong>e Zone zu betreiben.<br />

Sekundäre Nameserver werden bei Än<strong>der</strong>ungen <strong>der</strong> Zonendaten durch den primären<br />

benachrichtigt. Sie holen sich dann die aktuellen Zonen<strong>in</strong>formationen (Zonentransfer). Generell<br />

gilt: Es gibt immer nur e<strong>in</strong> primärer aber bis zu vier sekundäre Nameserver.<br />

Heute haben sich allerd<strong>in</strong>gs für den primären Master-Nameserver die Bezeichnung Master<br />

und für die sekundären Master-Nameserver die Bezeichnung Slaves durchgesetzt. ”Slave”<br />

kl<strong>in</strong>gt etwas nachgeordnet. Trotzdem verbirgt sich h<strong>in</strong>ter dieser Bezeichnung e<strong>in</strong> vollwertiger<br />

Nameserver. Da e<strong>in</strong> e<strong>in</strong>zelner physikalischer Nameserver sowohl Master als auch Slave<br />

für unterschiedliche Zonen se<strong>in</strong> kann, ist diese Unterscheidung nicht immer e<strong>in</strong>deutig.<br />

8.3 DNS-Server mit L<strong>in</strong>ux<br />

Nameserver gehören zu den wichtigsten Diensten des Internets. An<strong>der</strong>s als Webserver agieren<br />

sie jedoch im H<strong>in</strong>tergrund. Wer irgendwelche Dienste im Netz anbietet, ist nicht nur<br />

darauf angewiesen, dass <strong>der</strong> Webauftritt attraktiv gestaltet ist und die Wartezeiten kurz<br />

s<strong>in</strong>d, son<strong>der</strong>n auch, dass <strong>der</strong> Server überhaupt gefunden wird. Damit ist nicht <strong>der</strong> <strong>E<strong>in</strong></strong>trag<br />

<strong>in</strong> Suchmasch<strong>in</strong>en geme<strong>in</strong>t, son<strong>der</strong>n die Auflösung des Doma<strong>in</strong>-Namens <strong>in</strong> e<strong>in</strong>e IP-Adresse.<br />

Für e<strong>in</strong>e ganze Reihe von Anwendungen, wie Mail ist auch die umgekehrte Auflögung von<br />

e<strong>in</strong>er IP zu e<strong>in</strong>em FQDN erwünscht.<br />

4 siehe das <strong>E<strong>in</strong></strong>gangsbeispiel für google.de


114 KAPITEL 8. DNS<br />

<strong>E<strong>in</strong></strong> Großteil <strong>der</strong> weltweiten DNS-Server laufen <strong>in</strong>zwischen auf e<strong>in</strong>er Komb<strong>in</strong>ation von<br />

L<strong>in</strong>ux und BIND. B<strong>in</strong>d9 besteht aus mehreren Paketen und ist für alle aktuellen L<strong>in</strong>ux-<br />

Distributionen verfügbar.<br />

8.3.1 Der Dämon<br />

Üblicherweise wird für den DNS <strong>der</strong> B<strong>in</strong>d verwendet. Der Dienst, <strong>der</strong> später als Daemon<br />

im H<strong>in</strong>tergrund läuft heisst named. Das dazugehörige Startskript /etc/<strong>in</strong>it.d/b<strong>in</strong>d9 unter<br />

Debian und /etc/<strong>in</strong>it.d/named für an<strong>der</strong>en Distributionen. Oft f<strong>in</strong>det man noch weitere<br />

Dateien im Sysconfig- o<strong>der</strong> Defaultsverzeichnis, die das Verhalten des Daemons steuern,<br />

ihn beispielsweise mit e<strong>in</strong>er an<strong>der</strong>en UserID als ”root” starten. Konfiguriert wird <strong>der</strong> named<br />

durch die /etc/named.conf bzw. /etc/b<strong>in</strong>d/named.conf. Im folgenden bezieht sich die<br />

Beschreibung auf e<strong>in</strong>e Debian-Installation. 5<br />

named.conf ist die zentrale Konfiguration zum Verhalten des Servers und <strong>der</strong> Def<strong>in</strong>ition<br />

<strong>der</strong> verschiedenen Master- und Slave-Zonen. Die Server-Optionen s<strong>in</strong>d für die bessere Übersichtlichkeit<br />

<strong>in</strong> e<strong>in</strong>e weitere Datei named.conf.options o<strong>der</strong> ähnliche ausgelagert. In dieser<br />

Datei kann man beispielsweise die Forwar<strong>der</strong> def<strong>in</strong>ieren und ACLs für den Zugriff auf den<br />

Server festlegen.<br />

Auf diese Weise legt beispielsweise das Keyword ”listen-on” für das üblicherweise benutzte<br />

IPv4 fest, auf welchem Port und auf welchen IP-Adressen <strong>der</strong> Server auf Anfragen<br />

lauscht. So läßt verh<strong>in</strong><strong>der</strong>n, dass e<strong>in</strong> lediglich <strong>in</strong>terner Server, <strong>der</strong> auf e<strong>in</strong>em Gateway läuft<br />

auch für externe Anfragen offen ist. So können Angreifer nicht per DNS erfahren, wie das <strong>in</strong>terne<br />

Netz strukturiert se<strong>in</strong> könnte. Statt <strong>der</strong> Angaben von IP-Adressen o<strong>der</strong> Netzen lassen<br />

sich vor dem ”options”-Block auch Access Control Lists (ACLs) def<strong>in</strong>ieren: acl localnet<br />

10.8.4.0/24; 10.8.10.0/24; ; Diese trägt man dann direkt e<strong>in</strong>: listen-on port 53 localnet;<br />

; Das Keyword ”listen-on-v6” regelt das Ganze für IPv6.<br />

”forwar<strong>der</strong>s” def<strong>in</strong>iert e<strong>in</strong>e Liste von Servern, an die Anfragen weitergeleitet werden,<br />

wenn <strong>der</strong> Server diese nicht selbst beantworten kann. So kann man vom Cache Ihres Internetprovi<strong>der</strong>s<br />

profitieren. Normalerweise sucht e<strong>in</strong> Nameserver das Internet rekursiv ab,<br />

bis er die gesuchte Antwort f<strong>in</strong>det. Durch diese Option wird stets <strong>der</strong> Nameserver Ihres<br />

Internetprovi<strong>der</strong>s zuerst befragt. Wenn es sich dabei um e<strong>in</strong>en schnellen, viel benutzten<br />

Nameserver handelt, kann dies zu e<strong>in</strong>er Geschw<strong>in</strong>digkeitssteigerung führen.<br />

; /etc/b<strong>in</strong>d/named.conf<br />

<strong>in</strong>clude "/etc/b<strong>in</strong>d/named.conf.options";<br />

zone "." {<br />

type h<strong>in</strong>t;<br />

file "/etc/b<strong>in</strong>d/db.root";<br />

};<br />

zone "localhost" {<br />

type master;<br />

file "/etc/b<strong>in</strong>d/db.local";<br />

};<br />

zone "127.<strong>in</strong>-addr.arpa" {<br />

type master;<br />

file "/etc/b<strong>in</strong>d/db.127";<br />

};<br />

zone "0.<strong>in</strong>-addr.arpa" {<br />

type master;<br />

file "/etc/b<strong>in</strong>d/db.0";<br />

5 An<strong>der</strong>e Distributionen legen die Konfigurationsdateien und Daten oft woan<strong>der</strong>s ab, beispielsweise unterhalb<br />

von /var/lib/named. Wenn man sich an <strong>der</strong> named.conf orientiert, f<strong>in</strong>det man alle weiteren Dateien<br />

schnell, weshalb <strong>in</strong> <strong>der</strong> Darstellung nicht weiter auf Spezialitäten e<strong>in</strong>zelner Distributionen e<strong>in</strong>gegangen wird.


8.3. DNS-SERVER MIT LINUX 115<br />

};<br />

zone "255.<strong>in</strong>-addr.arpa" {<br />

type master;<br />

file "/etc/b<strong>in</strong>d/db.255";<br />

};<br />

<strong>in</strong>clude "/etc/b<strong>in</strong>d/named.conf.local";<br />

In <strong>der</strong> named.conf s<strong>in</strong>d e<strong>in</strong>e Reihe spezieller Zonen bereits def<strong>in</strong>iert. So enthält die Datei<br />

db.root die Liste aller 16 Root-Nameserver. <strong>E<strong>in</strong></strong> Großteil dieser Masch<strong>in</strong>en steht <strong>in</strong> den USA,<br />

e<strong>in</strong>ige <strong>in</strong> Europa und e<strong>in</strong>e Masch<strong>in</strong>e <strong>in</strong> Japan. Ihre IP-Adressen s<strong>in</strong>d fix. Diese Server werden<br />

iterativ befragt, wenn <strong>der</strong> eigene DNS e<strong>in</strong>e Adresse nicht auflösen kann. Die Zone ”.” ist<br />

deshalb vom Typ ”h<strong>in</strong>t” - <strong>der</strong> Nameserver ist für diese Zone nicht authoritativ, erfährt hier<br />

aber, wo er weiterfragen kann.<br />

Weiterh<strong>in</strong> gibt es e<strong>in</strong>ige spezielle Zonen, wie localhost o<strong>der</strong> ”127.<strong>in</strong>-addr.arpa”. Für diese<br />

Zonen ist e<strong>in</strong> Server immer authoritativ. Das verh<strong>in</strong><strong>der</strong>t, dass von schlecht konfigurierten<br />

Masch<strong>in</strong>en Anfragen auf e<strong>in</strong>en Namen wie localhost o<strong>der</strong> e<strong>in</strong>e IP aus 127.0.0.0/255.0.0.0<br />

überhaupt <strong>in</strong>s Netz gelangen. Je<strong>der</strong> Rechner mit <strong>in</strong>stalliertem IP-Stack hat auf dem Loopback-Interface<br />

üblicherweise die IP-Adresse 127.0.0.1 def<strong>in</strong>iert. Auch mit solchen Anfragen<br />

sollten ke<strong>in</strong>e entfernten Nameserver behelligt werden. Das gilt ebenfalls für IP-Adressen, die<br />

mit e<strong>in</strong>er 06 und mit 255 beg<strong>in</strong>nen. So fangen die lokale Broadcast-Adresse o<strong>der</strong> die meisten<br />

Netzmasken an. Alle diese speziellen Zonenfiles werden bei <strong>der</strong> Installation automatisch<br />

angelegt.<br />

Die eigenen Zonen def<strong>in</strong>ieren Sie <strong>der</strong> Übersichtlichkeit halber am besten <strong>in</strong> <strong>der</strong> Datei<br />

/etc/b<strong>in</strong>d/named.conf.local o<strong>der</strong> dem Konzept <strong>der</strong> gewählten Distribution entsprechend.<br />

8.3.2 Die DNS-Datenbank<br />

Es gibt zwei Arten von Zonen: Für die Master-Zonen ist <strong>der</strong> Server authoritativ, die Slave-<br />

Zonen kopiert er def<strong>in</strong>iert durch die Update-Festsetzungen vom für die Zone authoritativen<br />

Server.<br />

zone "wg.site" <strong>in</strong> {<br />

type master;<br />

file "/etc/b<strong>in</strong>d/db.wg.site";<br />

allow-update { 127.0.0.1; 10.8.4.254; };<br />

};<br />

zone "4.8.10.<strong>in</strong>-addr.arpa" <strong>in</strong> {<br />

type master;<br />

file "/etc/b<strong>in</strong>d/db.10.8.4";<br />

allow-update { 127.0.0.1; 10.8.4.254; };<br />

};<br />

Die DNS-Datenbanken enthalten recht unterschiedliche <strong>E<strong>in</strong></strong>träge: Zum e<strong>in</strong>en muss e<strong>in</strong>e<br />

Auflösung von FQDN <strong>in</strong> Richtung IP-Adressen und umgekehrt möglich se<strong>in</strong>, weiterh<strong>in</strong><br />

sollten Informationen zu Nameservern vermerkt se<strong>in</strong>. Unter Umständen legt man ebenfalls<br />

Zonenfiles für die Rückwärtsauflösung von IPv6-Adressen und Telefonnummern nach<br />

ENUM an.<br />

Die Informationse<strong>in</strong>heit <strong>in</strong> e<strong>in</strong>er DNS-Datenbank wird Resource Record (RR) genannt.<br />

Zu jedem <strong>E<strong>in</strong></strong>trag korrespondiert e<strong>in</strong> Typ, <strong>der</strong> die Art <strong>der</strong> enthaltenen Daten beschreibt, und<br />

e<strong>in</strong>e Klasse, die den <strong>Netzwerk</strong>typ beschreibt, für den <strong>der</strong> Record gilt. Der Prototyp e<strong>in</strong>es<br />

RR ist <strong>der</strong> A-Record, bei dem e<strong>in</strong> voll qualifizierter Doma<strong>in</strong>name mit e<strong>in</strong>er IP-Adresse<br />

assoziiert ist.<br />

6 0.0.0.0 ist e<strong>in</strong>e spezielle Adresse zur DHCP-Anfrage


116 KAPITEL 8. DNS<br />

Wie bereits erwähnt wurde, ist es möglich e<strong>in</strong>em Host mehr als e<strong>in</strong>en Namen zuzuordnen<br />

(Alias<strong>in</strong>g). <strong>E<strong>in</strong></strong>er dieser Namen ist <strong>der</strong> offizielle Hostname, während alle weiteren nur Aliase<br />

s<strong>in</strong>d, die mit dem offiziellen Namen verknüpft werden. Der Unterschied <strong>in</strong> <strong>der</strong> <strong>E<strong>in</strong></strong>tragung<br />

liegt <strong>in</strong> <strong>der</strong> Bezeichnung: Der kanonische Hostname besitzt e<strong>in</strong>en A-Record, während die<br />

an<strong>der</strong>en nur e<strong>in</strong>en Record vom Typ CNAME verwenden.<br />

<strong>E<strong>in</strong></strong> Beispiele<strong>in</strong>trag für die Auflösung von Hostnamen nach IP-Nummern:<br />

; /etc/b<strong>in</strong>d/wg.site<br />

$TTL 360 ; 6 m<strong>in</strong>utes<br />

@ IN SOA ns.wg.site. dirk.wg.site. (<br />

2005011002 ; serial<br />

28800 ; refresh (8 hours)<br />

1800 ; retry (30 m<strong>in</strong>utes)<br />

3600000 ; expire (5 weeks 6 days \<br />

16 hours)<br />

86400 ; m<strong>in</strong>imum (1 day)<br />

)<br />

IN NS ns.wg.site.<br />

IN MX 10 mail.wg.site.<br />

IN MX 20 mail-backup.wg.site.<br />

ns IN A 10.8.4.25<br />

nameserver IN CNAME ns<br />

$TTL 86400 ; 1 day<br />

mail IN A 10.8.4.21<br />

mail-backup IN A 10.8.4.22<br />

anphrodite IN A 10.8.4.203<br />

dionysos IN A 10.8.4.204<br />

$TTL 360 ; 6 m<strong>in</strong>utes<br />

demeter IN A 10.8.4.251<br />

hermes IN A 10.8.4.252<br />

IN HINFO "AMD Opteron" "L<strong>in</strong>ux"<br />

IN TXT "WG-DNS for PE28"<br />

In den Zonendateien ist je<strong>der</strong> mit e<strong>in</strong>em Punkt ”.” endende Rechnername e<strong>in</strong> exakter Rechnername.<br />

Alles, was ohne den abschließenden Punkt geschrieben wird, bezieht sich auf den<br />

Ursprung (hier wg.site). Damit würde aus dem Namen ns.wg.site für BIND ns.wg.site.wg.site<br />

werden, sicherlich nicht die Intention des Zonenadm<strong>in</strong>s.<br />

hermes steht daher für ”hermes.Ursprung”. In <strong>der</strong> Beispielzonendatei ist wg.site. <strong>der</strong> Ursprung,<br />

damit wird aus hermes hermes.wg.site.<br />

<strong>E<strong>in</strong></strong> Beispiele<strong>in</strong>trag für die umgekehrte Auflösung:<br />

$TTL 360 ; 6 m<strong>in</strong>utes<br />

@ IN SOA ns.wg.site. dirk.goe.net. (<br />

2005011002 ; serial<br />

28800 ; refresh (8 hours)<br />

1800 ; retry (30 m<strong>in</strong>utes)<br />

3600000 ; expire (5 weeks 6 days 16 hours)<br />

86400 ; m<strong>in</strong>imum (1 day)<br />

)<br />

IN NS ns.wg.site.<br />

254 IN PTR ns.wg.site.<br />

$TTL 86400 ; 1 day<br />

21 IN PTR mail.wg.site.<br />

22 IN PTR mail-backup.wg.site.<br />

203 IN PTR aphrodite.wg.site.


8.3. DNS-SERVER MIT LINUX 117<br />

204 IN PTR dionysos.wg.site.<br />

$TTL 360 ; 6 m<strong>in</strong>utes<br />

251 IN PTR demeter.wg.site.<br />

252 IN PTR hermes.wg.site.<br />

TTL gibt die Lebensdauer aller <strong>E<strong>in</strong></strong>träge <strong>in</strong> <strong>der</strong> Zone an, die ke<strong>in</strong> ausdrückliches TTL<br />

besitzen, welches vor dem IN als Integer-Sekunden-Wert e<strong>in</strong>getragen werden würde.<br />

8.3.3 Starten und Anhalten des Nameservers<br />

Nachdem Sie Ihre Zonendateien für die Vorwärts- und Rückwärtsauflösung angelegt und<br />

diese <strong>in</strong> <strong>der</strong> named.conf(.local) e<strong>in</strong>getragen haben, steht nun <strong>der</strong> Start des Servers an:<br />

l<strong>in</strong>ux04:/etc/b<strong>in</strong>d# /etc/<strong>in</strong>it.d/b<strong>in</strong>d9 start<br />

Das Stoppen des Dienstes o<strong>der</strong> den Neustart regeln Sie entsprechend über ”stop” o<strong>der</strong><br />

”restart”. Eventuell auftretende Fehlermeldungen liefert named <strong>in</strong> <strong>der</strong> Datei /var/log/syslog<br />

ab. Hier überprüft man, ob alle Ihre Zonenfiles ohne Beschwerden akzeptiert wurden. Im<br />

Logfile liefert named Informationen auf welchen Interfaces er lauscht, wieviele Prozessoren er<br />

<strong>in</strong> Anspruch nimmt und welche Zonenfiles er erfolgreich e<strong>in</strong>gelesen hat. Wenn Sie den Dienst<br />

automatisch beim Hochfahren <strong>der</strong> Masch<strong>in</strong>e starten wollen, sollten Sie e<strong>in</strong>en entsprechenden<br />

L<strong>in</strong>k <strong>in</strong> den Runlevelverzeichnissen auf das Startskript /etc/<strong>in</strong>it.d/b<strong>in</strong>d9 anlegen.<br />

Feb 11 21:17:57 l<strong>in</strong>ux04 named[13692]: start<strong>in</strong>g BIND 9.2.4 -u b<strong>in</strong>d<br />

Feb 11 21:17:57 l<strong>in</strong>ux04 named[13692]: us<strong>in</strong>g 1 CPU<br />

Feb 11 21:17:57 l<strong>in</strong>ux04 named[13694]: load<strong>in</strong>g configuration from<br />

’/etc/b<strong>in</strong>d/named.conf’<br />

Feb 11 21:17:57 l<strong>in</strong>ux04 named[13694]: no IPv6 <strong>in</strong>terfaces found<br />

Feb 11 21:17:57 l<strong>in</strong>ux04 named[13694]: listen<strong>in</strong>g on IPv4 <strong>in</strong>terface lo,<br />

127.0.0.1#53<br />

Feb 11 21:17:57 l<strong>in</strong>ux04 named[13694]: listen<strong>in</strong>g on IPv4 <strong>in</strong>terface eth0,<br />

10.8.4.254#53<br />

Feb 11 21:17:57 l<strong>in</strong>ux04 named[13694]: listen<strong>in</strong>g on IPv4 <strong>in</strong>terface eth0:1,<br />

192.168.1.2#53<br />

Feb 11 21:17:57 l<strong>in</strong>ux04 named[13694]: zone ’wg.site’ allows updates by<br />

IP address, which is <strong>in</strong>secure<br />

Feb 11 21:17:57 l<strong>in</strong>ux04 named[13694]: zone ’4.8.10.<strong>in</strong>-addr.arpa’ allows<br />

updates by IP address, which is <strong>in</strong>secure<br />

Feb 11 21:17:57 l<strong>in</strong>ux04 named[13694]: command channel listen<strong>in</strong>g on<br />

127.0.0.1#953<br />

Feb 11 21:17:57 l<strong>in</strong>ux04 named[13694]: zone 0.<strong>in</strong>-addr.arpa/IN: loaded<br />

serial 1<br />

Feb 11 21:17:57 l<strong>in</strong>ux04 named[13694]: zone 4.8.10.<strong>in</strong>-addr.arpa/IN: loaded<br />

serial 2002100405<br />

Feb 11 21:17:57 l<strong>in</strong>ux04 named[13694]: zone 127.<strong>in</strong>-addr.arpa/IN: loaded<br />

serial 1<br />

Feb 11 21:17:57 l<strong>in</strong>ux04 named[13694]: zone 255.<strong>in</strong>-addr.arpa/IN: loaded<br />

serial 1<br />

Feb 11 21:17:57 l<strong>in</strong>ux04 named[13694]: zone localhost/IN: loaded serial 1<br />

Feb 11 21:17:57 l<strong>in</strong>ux04 named[13694]: zone wg.site/IN: loaded serial<br />

2002100405<br />

Feb 11 21:17:57 l<strong>in</strong>ux04 named[13694]: runn<strong>in</strong>g<br />

8.3.4 Slave-Server<br />

Bisher beschäftigte sich die Darstellung mit dem Aufsetzen e<strong>in</strong>es primären DNS und dem<br />

Anlegen <strong>der</strong> Zonen-Dateien. Wenn nicht lediglich e<strong>in</strong> privater DNS betrieben wird, sollte


118 KAPITEL 8. DNS<br />

man unbed<strong>in</strong>gt aus Gründen <strong>der</strong> Redundanz Slaves vorsehen. Hier fällt <strong>der</strong> Aufwand jedoch<br />

bedeutend ger<strong>in</strong>ger aus, da man lediglich die namd.conf.local anpassen muss. Trägt man hier<br />

alle Zonen e<strong>in</strong>, für die diese Masch<strong>in</strong>e als Slave zuständig se<strong>in</strong> soll.<br />

zone "wg.site" IN {<br />

type slave;<br />

masters { 10.8.4.254; };<br />

file /etc/named/secondary/db.wg.site;<br />

}<br />

Man starte den Slave neu, nachdem <strong>der</strong> Master bereits läuft. Damit alles klappt muss named<br />

im Verzeichnis /etc/named/secondary über Schreibrechte verfügen. Hier landen die Daten<br />

e<strong>in</strong>es erfolgreichen Doma<strong>in</strong>-Transfers. Im Logfile des Masters f<strong>in</strong>det sich e<strong>in</strong> H<strong>in</strong>weis auf<br />

diesen Vorgang:<br />

Feb 11 22:18:02 l<strong>in</strong>ux04 named[13722]: client 132.230.4.44#36606: transfer of<br />

’wg.site/IN’: AXFR started<br />

Anhand <strong>der</strong> Seriennummer <strong>der</strong> Datei stellt <strong>der</strong> Slave fest, ob sich Daten auf dem Server<br />

geän<strong>der</strong>t haben (sollten). Sie muss daher stets <strong>in</strong>krementiert werden, wenn e<strong>in</strong>e Än<strong>der</strong>ung<br />

vorgenommen wurde. Quasistandard ist e<strong>in</strong> JJJJMMTTRR-Format, um die Seriennummer<br />

festzulegen. 2005011002 steht also für den 10.01.2005, die beiden letzten Stellen für die<br />

zweite Modifikation <strong>der</strong> Zonendatei an diesem Tag. Nun ist diese Zahl oft nicht so übersichtlich,<br />

als dass man nicht versehentlich e<strong>in</strong>en Fehler macht und e<strong>in</strong>e Stelle zuviel dr<strong>in</strong> hat.<br />

Wenn die Slaves e<strong>in</strong>e solche Seriennummer übernommen haben und anschliessend auf dem<br />

Master wie<strong>der</strong> e<strong>in</strong>e korrigierte Nummer e<strong>in</strong>getragen ist, bekommen sie ke<strong>in</strong> Update mehr<br />

mit. Ihre Nummer ist immer größer als die des Masters. Um dieses Dilemma <strong>in</strong> den Griff<br />

zu bekommen, kann man den folgenden Trick anwenden: Man trage 2 31 −1 (=2147483647)<br />

e<strong>in</strong>. BIND arbeitet mit vorzeichenbehafteten 32 bit Zahlen. So ist diese <strong>der</strong> größtmögliche<br />

Wert und <strong>in</strong> <strong>der</strong> nächsten Runde wird wie<strong>der</strong> jede beliebige Seriennummer von den Slaves<br />

als Grund für e<strong>in</strong> Update akzeptiert.<br />

In den Beispielen wurde e<strong>in</strong>e strenge Trennung von Master- und Slave-Servern angenommen.<br />

Das muss natürlich <strong>in</strong> <strong>der</strong> Realität nicht so se<strong>in</strong>. Hier s<strong>in</strong>d viele Server authoritativ<br />

für e<strong>in</strong>e Reihe von Zonen und sekundär für e<strong>in</strong>e Anzahl an<strong>der</strong>er Zonen.<br />

8.3.5 Delegation e<strong>in</strong>er Subdoma<strong>in</strong><br />

In den bisherigen Beispielen stimmte e<strong>in</strong>e Zone immer mit e<strong>in</strong>er Doma<strong>in</strong> übere<strong>in</strong>. <strong>E<strong>in</strong></strong> Nameserver<br />

war für den gesamten Namensraum zuständig. Dieser war e<strong>in</strong>fach strukturiert:<br />

masch<strong>in</strong>enname.doma<strong>in</strong>.topleveldoma<strong>in</strong>, z.B. hermes.wg.site. Nun erlaubt DNS aber Teile<br />

se<strong>in</strong>es Namensraumes an an<strong>der</strong>e Nameserver zu delegieren. So können Adm<strong>in</strong>s bestimmter<br />

organisatorischer <strong>E<strong>in</strong></strong>heiten ”ihre” Zone verwalten. Mit folgendem <strong>E<strong>in</strong></strong>trag <strong>in</strong> <strong>der</strong> Zonendatei<br />

des Beispiels (/etc/b<strong>in</strong>d/db.wg.site) delegiert <strong>der</strong> Nameserver die Zone, <strong>in</strong> diesem Fall<br />

die Subdoma<strong>in</strong> sub.wg.site an die Server ns1.sub.wg.site und ns2.sub.wg.site.<br />

[ ... ]<br />

sub IN NS ns1.sub.wg.site.<br />

IN NS ns2.sub.wg.site.<br />

ns1.sub IN A 10.8.5.1<br />

ns2.sub IN A 10.8.5.2<br />

[ ... ]<br />

Der Resource-Record NS regelt die Delegation. Damit weiss <strong>der</strong> Nameserver, dass Anfragen<br />

auf *.sub.wg.site an die dafür zuständigen Server ns1 und ns2.sub.wg.site weitergereicht<br />

werden. Deren Namen müssen natürlich ebenfalls zu IP-Adressen aufgelöst werden können.<br />

Deshalb s<strong>in</strong>d die beiden Nameserver ebenfalls mit e<strong>in</strong>em A-Record vertreten.


8.4. DYNAMISCHE UPDATES DER ZONENDATEIEN 119<br />

8.4 Dynamische Updates <strong>der</strong> Zonendateien<br />

Mit steigen<strong>der</strong> Anzahl verwalteter Zonen und Hosts wird das Verfahren <strong>der</strong> händischen<br />

Manipulation <strong>der</strong> Zonendateien für Adm<strong>in</strong>s schnell aufwändig. Nebenher hat sich die Zahl<br />

mobiler Endgeräte deutlich ausgeweitet. Das s<strong>in</strong>d Hosts, die oft <strong>in</strong> verschiedenen Netzen<br />

betrieben. Zudem s<strong>in</strong>d sie oft nicht sehr lange angemeldet. Hier wünscht man sich e<strong>in</strong><br />

Verahren, was ähnlich zu WINS dynamisch arbeitet.<br />

Mit BIND seit Version 8 kann man dynamische Än<strong>der</strong>ungen an den Resource Records<br />

vornehmen (lassen), ohne dafür Dateien editieren und diese neu laden zu müssen. Solche<br />

Än<strong>der</strong>ungen können auch durch externe Dienste, wie DHCP angestoßen werden. Um dieses<br />

zu erlauben, muss <strong>der</strong> Adm<strong>in</strong> e<strong>in</strong>e zusätzliche Zeile <strong>in</strong> die Zonendef<strong>in</strong>ition e<strong>in</strong>fügen:<br />

zone "wg.site." IN {<br />

...<br />

allow update { 172.0.0.1; };<br />

}<br />

Im Beispiel ist nur das Update von <strong>der</strong> Loopbackadresse erlaubt. Man kann natürlich auch<br />

Listen von IP-Adressen o<strong>der</strong> ACLs angeben. Dabei ist jedoch zu beachten, dass bei <strong>der</strong><br />

Datenübertragung über das Netz DNS nicht automatisch verschlüsselt. Wie man dieses<br />

e<strong>in</strong>schaltet, wird im folgenden Abschnitt erklärt.<br />

Um das neue Feature gleich mal auszuprobieren, kann nsupdate verwendet werden.<br />

Dieses Programm ist im BIND-Paket enthalten. Es arbeitet <strong>in</strong>teraktiv ähnlich wie nslookup.<br />

Man gebe zuerst den DNS-Server an und dann e<strong>in</strong>en <strong>E<strong>in</strong></strong>trag <strong>der</strong> h<strong>in</strong>zugefügt o<strong>der</strong><br />

gelöscht werden soll. Nach dem <strong>E<strong>in</strong></strong>trag ist e<strong>in</strong> zweimaliges ”Enter” erfor<strong>der</strong>lich.<br />

l<strong>in</strong>ux:~ > nsupdate<br />

> server 127.0.0.1<br />

> update add newhost.wg.site 300 A 10.8.4.51<br />

><br />

> update delete newhost.sg.site 300 A 10.8.4.51<br />

Damit die ganze Geschichte auch funktioniert, muss <strong>der</strong> Nameserver das Recht haben das<br />

Verzeichnis <strong>der</strong> Zonendateien und diese selbst zu schreiben. Im Beispiel wurde e<strong>in</strong>e Datei<br />

/etc/b<strong>in</strong>d/db.wg.site.jnl beim H<strong>in</strong>zufügen e<strong>in</strong>es <strong>E<strong>in</strong></strong>trages angelegt. Alle 15 M<strong>in</strong>uten macht<br />

BIND e<strong>in</strong>en Dump <strong>der</strong> Zonendatei mit den neuen o<strong>der</strong> ohne die zwischendurch entfernten<br />

<strong>E<strong>in</strong></strong>träge und erhöht dabei die Seriennummer automatisch.<br />

8.4.1 Sicherheit<br />

Wie man im Beispiel sehen konnte, benötigte nsupdate ke<strong>in</strong>e beson<strong>der</strong>e Authentifizierung,<br />

um Än<strong>der</strong>ungen an den DNS-Daten vorzunehmen. <strong>E<strong>in</strong></strong>e Absendeadresse ist leicht<br />

zu fälschen, weshalb man sich schnell e<strong>in</strong>en besseren Schutz wünscht. Ebenfalls will ke<strong>in</strong><br />

Adm<strong>in</strong>istrator ernsthaft, dass je<strong>der</strong> beliebige Host im Internet vom eigenen DNS e<strong>in</strong> Zonentransfer<br />

anfor<strong>der</strong>n kann. Dieser ist normalerweise den Slaves vorbehalten, um ihre Daten<br />

zu aktualisieren.<br />

Ebenfalls seit Version 8 implementiert BIND zur Erhöhung <strong>der</strong> Sicherheit sogenannte<br />

Transaction Signatures (TSIGs). Dieses s<strong>in</strong>d digitale Signaturen, die HMAC-MD5 als<br />

<strong>E<strong>in</strong></strong>wege-Hashfunktionen benutzt. Die Signatur ist dabei nicht nur von <strong>der</strong> Nachricht, son<strong>der</strong>n<br />

auch von e<strong>in</strong>em Schlüssel abhängig. Der Hashwert wird über die komplette b<strong>in</strong>äre<br />

Nachricht berechnet und als Resource Record (Typ TSIG) angehängt. Zur Verh<strong>in</strong><strong>der</strong>ung<br />

von Replay-Attacken ist das Datum Bestandteil <strong>der</strong> Signatur.


120 KAPITEL 8. DNS<br />

Das Bastelset zum Erzeugen <strong>der</strong> Schlüssel liefert BIND mit dnssec-keygen. Der Aufruf<br />

dnssec-keygen -b 128 -a HMAC-MD5 -n HOST hermes.wg.site generiert e<strong>in</strong>en 128bit-<br />

Schlüssel, <strong>der</strong> genau e<strong>in</strong>er Masch<strong>in</strong>e zugeordnet ist.<br />

l<strong>in</strong>ux04:~# dnssec-keygen -b 128 -a HMAC-MD5 -n HOST hermes.wg.site<br />

Khermes.wg.site.+157+23873<br />

l<strong>in</strong>ux04:~# ls Khermes.wg.site.+157+23873.*<br />

Khermes.wg.site.+157+23873.key Khermes.wg.site.+157+23873.private<br />

l<strong>in</strong>ux04:~# cat Khermes.wg.site.+157+23873.key<br />

hermes.wg.site. IN KEY 512 3 157 ynhDhu8MM0vNsdWivlTFow==<br />

l<strong>in</strong>ux04:~# cat Khermes.wg.site.+157+23873.private<br />

Private-key-format: v1.2<br />

Algorithm: 157 (HMAC_MD5)<br />

Key: ynhDhu8MM0vNsdWivlTFow==<br />

Das Kommando legt zwei Dateien im Arbeitsverzeichnis an. In <strong>der</strong> Datei mit <strong>der</strong> Endung<br />

*.key f<strong>in</strong>det man den öffentlichen Schlüssel <strong>in</strong> <strong>der</strong> an<strong>der</strong>en *.private den privaten. Den<br />

öffentlichen Schlüssel läßt sich nun <strong>in</strong> die entsprechende Zonendatei <strong>in</strong>tegrieren. So kann er<br />

beispielsweise mit host -t KEY hermes.wg.site abgefragt und zur Verifikation des privaten<br />

Schlüssels herangezogen werden. Den privaten Schlüssel h<strong>in</strong>terlegt man <strong>in</strong> <strong>der</strong> Datei<br />

mit den Zonendef<strong>in</strong>itionen /etc/b<strong>in</strong>d/named.conf.local:<br />

key hermes.wg.site. {<br />

algorithm hmac-md5;<br />

secret "Geq/RRYhuAIrlUzJKj49MQ==";<br />

};<br />

und sorgen dafür, dass nur noch e<strong>in</strong> Update unter Angabe des Schlüssels erfolgen darf:<br />

zone "wg.site" <strong>in</strong> {<br />

type master;<br />

file "/etc/b<strong>in</strong>d/db.wg.site";<br />

allow-update { key hermes.wg.site.; };<br />

};<br />

Nach den Än<strong>der</strong>ungen muss <strong>der</strong> Server neu gestartet werden. Ausprobieren kann man das<br />

Ganze nun mit dem Aufruf von nsupdate mit <strong>der</strong> Angabe <strong>der</strong> Datei mit dem privaten<br />

Schlüssel: nsupdate -k Khermes.wg.site.+157+23873.private Die Transaktionen werden<br />

nun mit dem<br />

Schlüssel signiert. Ohne Angabe des Schlüssels würde die Aktion mit e<strong>in</strong>em ”REFUSED”<br />

fehlschlagen.<br />

nsupdate ist sicherlich nicht die alltägliche Anwendung. Bei den Fragen <strong>der</strong> Sicherheit<br />

geht es eher um Zonentransfers. Hierzu muss <strong>der</strong> private Schlüssel sowohl auf dem Masterals<br />

auch auf dem Slave-DNS-Server e<strong>in</strong>getragen se<strong>in</strong>. Für Zonentransfers heisst die Option<br />

statt ”allow-update” ”allow-transfer” unter Beibehaltung <strong>der</strong> restlichen Syntax. Auf dem<br />

Slave sehen die <strong>E<strong>in</strong></strong>tragungen nun wie folgt aus:<br />

key hermes.wg.site. {<br />

algorithm hmac-md5;<br />

secret "Geq/RRYhuAIrlUzJKj49MQ==";<br />

};<br />

server 10.8.4.254 {<br />

keys { hermes.wg.site.; };<br />

};<br />

zone "wg.site" IN {<br />

type slave;<br />

masters { 10.8.4.254; };<br />

file /etc/named/secondary/db.wg.site;<br />

}


8.5. DNS BEKOMMT NEUE AUFGABEN 121<br />

8.5 DNS bekommt neue Aufgaben<br />

8.5.1 ENUM<br />

Voice-over-IP hat im zweiten Anlauf nach den ersten Startversuchen Ende <strong>der</strong> 90er Jahre<br />

richtig Schwung bekommen. Spätestens seit <strong>der</strong> letzten Cebit 2004 hat <strong>der</strong> Hype um die Telefonie<br />

über das Internet die breite Öffentlichkeit erreicht. Nun waren Telefonie und IP-Netze<br />

lange Zeit zwei völlig getrennte Dienste, e<strong>in</strong> Zustand mit dem große Telefonie-Anbieter, wie<br />

die Telekom gut leben konnten. Wärend im H<strong>in</strong>tergrund beide Dienste konvergieren, steht<br />

nach aussen noch e<strong>in</strong> entscheiden<strong>der</strong> Unterschied: International erreicht man jeden Teilnehmer<br />

am öffentlichen Telefonnetz über die 1-3 stellige Län<strong>der</strong>vorwahl gefolgt von e<strong>in</strong>er<br />

maximal 15-stelligen nationale Telefonnummer. Letztere besteht aus e<strong>in</strong>er Vorwahl und<br />

Anschlußnummer, wobei das Vorwahlkonzept <strong>in</strong> unterschiedlichen Län<strong>der</strong>n verschieden gehandhabt<br />

wird. Rechner im Internet werden h<strong>in</strong>gegen durch ihre weltweit e<strong>in</strong>deutige IP<br />

angesprochen.<br />

ENUM schlägt hier nun die Brücke und führt beide Systeme unter Zurhilfenahme von<br />

DNS zusammen. Def<strong>in</strong>iert ist die Abbildung von Telefonnummern im Doma<strong>in</strong> Name System<br />

<strong>in</strong> RFC2916 zu ENUM E.164. ENUM kann noch mehr, nämlich beliebige Kommunikationsformen<br />

(Mail, Webseite, ...) auf e<strong>in</strong>e Telefonnummer abbilden und diese hierarchisch<br />

anordnen. DNS ist deshalb für ENUM <strong>in</strong>teressant, da es seit Jahren etabliert ist und damit<br />

e<strong>in</strong>e schnelle Umsetzung erlaubt.<br />

Die Vergabe von Telefonnummern ist <strong>in</strong> jedem Land e<strong>in</strong> hoheitlicher Akt, <strong>in</strong> Deutschland<br />

übernimmt das die Regulierungsbehörde für Telekommunikation. Sie hatte beispielsweise<br />

Ende letzten Jahres mit <strong>der</strong> Entscheidung über die ortsunhabhängige Vorwahl 032 für SIP-<br />

Telefonanschlüsse von sich hören lassen.<br />

Damit Telefonnummern im DNS-System darstellbar s<strong>in</strong>d, werden sie <strong>in</strong> e<strong>in</strong>e e<strong>in</strong>deutige<br />

Doma<strong>in</strong> verwandelt. Hierzu wurde die Doma<strong>in</strong> ”e164.arpa” e<strong>in</strong>geführt analog zu ihrem IP-<br />

Pendant ”<strong>in</strong>-addr.arpa” <strong>der</strong> Reverse-Auflösung. Unterhalb dieser Doma<strong>in</strong> trägt man nun<br />

e<strong>in</strong>fach Subdoma<strong>in</strong>s für jede Ziffer e<strong>in</strong>er Telefonnummer e<strong>in</strong>. An<strong>der</strong>s als bei IP-Adressen<br />

und Telefonnummern steht bei DNS die spezifischte Information ganz l<strong>in</strong>ks: Die Toplevel-<br />

Doma<strong>in</strong> ist immer die ganz rechte, die Secondlevel-Doma<strong>in</strong> die zweite von Rechts und<br />

Subdoma<strong>in</strong>s s<strong>in</strong>d dann weitere bis <strong>der</strong> Rechnername ganz l<strong>in</strong>ks kommt.<br />

Deshalb dreht man die die Telefonnummer um. So wird aus +49-551-654321 e<strong>in</strong> <strong>E<strong>in</strong></strong>trag<br />

<strong>der</strong> Form 1.2.3.4.5.6.1.5.5.9.4.e164.arpa.<br />

1. Zunächst entferne man alle optischen Strkturierungen, wie ”+”, ”-”, Leerzeichen:<br />

49551654321<br />

2. Man ordne die Ziffernfolge um: Aus 49551654321 erhält man 12345615594<br />

3. Man setze Punkte zwischen die Ziffern: 1.2.3.4.5.6.1.5.5.9.4<br />

4. Am Ende fügt man noch die ENUM-Doma<strong>in</strong> ”e164.arpa” an: 1.2.3.4.5.6.1.5.5.9.4.<br />

e164.arpa<br />

Den nun generierten vollständigen Doma<strong>in</strong>namen kann DNS nun ganz normal wie e<strong>in</strong>e<br />

IP auch im Nameservicebetrieb verwenden. RFC2915 def<strong>in</strong>iert für das ENUM-Protokoll<br />

spezielle Nameserver-<strong>E<strong>in</strong></strong>träge, um auf die e<strong>in</strong>zelnen Kommunikationsadressen (Telefon,<br />

Mail...) zu verweisen. Zum <strong>E<strong>in</strong></strong>satz kommen sogenannte ”Nam<strong>in</strong>g Authority Po<strong>in</strong>ter Records”<br />

(NAPTR). Für jede Doma<strong>in</strong> lassen sich mehrere dieser NAPTR-<strong>E<strong>in</strong></strong>träge angeben.<br />

Sie erlauben ebenfalls Prioritäten (Preferenzen) festzulegen.


122 KAPITEL 8. DNS<br />

Mit ENUM än<strong>der</strong>t sich <strong>der</strong> Charakter e<strong>in</strong>es Anrufes grundsätzlich: Zunächst wird über<br />

das DNS-System die Telefonnummer bis zum NAPTR-<strong>E<strong>in</strong></strong>trag ermittelt. Diese weist dann<br />

auf e<strong>in</strong>e Nummer e<strong>in</strong>es Telefons o<strong>der</strong> Faxes, e<strong>in</strong>es Handys o<strong>der</strong> weiterer Geräte. ENUM gestattet<br />

so dem Inhaber e<strong>in</strong>er Telefonnummer, quasi beliebig viele Dienste auf se<strong>in</strong>e Nummer<br />

abzubilden. Das vere<strong>in</strong>facht <strong>in</strong> Zukunft das Verfahren alternative Dienste durch Telekommunikationsendgeräte<br />

und ¿Applikationen anzusprechen.<br />

8.5.2 IPv6<br />

Die nächste Generation <strong>der</strong> IP-Adressen steht schon länger vor <strong>der</strong> Tür. Für den Endbenutzer<br />

sicherlich noch nicht relevant, so tut sich jedoch schon h<strong>in</strong>ter den Kulissen e<strong>in</strong>iges.<br />

Entsprechend schreitet auch die Auf- und Umrüstung <strong>der</strong> IP-Dienste auf IPv6 voran. So ist<br />

BIND seit e<strong>in</strong>iger Zeit <strong>in</strong> <strong>der</strong> Lage IPv6-Adressen genauso wie Ihre IPv4-Pendants vorwärts<br />

und rückwärts aufzulösen. Für IPv6 wurde e<strong>in</strong> neuer Ressourcentyp e<strong>in</strong>geführt: AAAA repräsentiert<br />

e<strong>in</strong>e IPv6 Adresse (A entsprach 32bit, 4*A entsprechend 128bit).<br />

<strong>E<strong>in</strong></strong>träge <strong>in</strong> <strong>der</strong> Zonen-Datei zur Vorwärtsauflösung könnten also so aussehen:<br />

[ ... ]<br />

aphrodite IN A 10.8.4.203<br />

aphrodite-ipv6 IN AAAA 3ffe:701:10:200:22:feb5:3456<br />

dionysos IN A 10.8.4.204<br />

dionysos-ipv6 IN AAAA 3ffe:701:10:200:22:feb5:3457<br />

Die Rückwärtsauflösung landet <strong>in</strong> e<strong>in</strong>er eigenen Zonendatei (beispielsweise 5.b.e.f.2.2.0.0.<br />

0.0.2.0.0.1.0.0.4.e.f.f.3.ip6.arpa):<br />

[ ... ]<br />

3456 IN PTR aphrodite-ipv6.wg.site.<br />

3457 IN PTR dionysos-ipv6.wg.site.<br />

<strong>E<strong>in</strong></strong> Problem entsteht nun natürlich bei <strong>der</strong> Auflösung von Namen zu IP: Welche Informationen<br />

sollen zurückgeliefert werden: Beide IP-Adressen o<strong>der</strong> jeweils die e<strong>in</strong>e o<strong>der</strong> an<strong>der</strong>e?<br />

Darüberh<strong>in</strong>aus gibt es noch e<strong>in</strong>ige weitere Stolperfallen: Angenommen, man betreibt e<strong>in</strong>e<br />

Masch<strong>in</strong>e ausschliesslich mit e<strong>in</strong>er IPv6 Adresse. Dann lässt sich nicht e<strong>in</strong>fach im Resolver<br />

e<strong>in</strong>e IPv4 Adresse für den Nameserver angeben. Die Masch<strong>in</strong>e wäre <strong>in</strong> den meisten<br />

Fällen nicht <strong>in</strong> <strong>der</strong> Lage ihre Anfragepakete dorth<strong>in</strong> zu routen. Der IPv4 DNS Ihres Netzes<br />

kann aber Proxy-Funktionen übernehmen. Er lauscht nicht nur wie gewohnt auf den<br />

IPv4-Interfaces son<strong>der</strong>n bekommt auch e<strong>in</strong>e IPv6-Adresse zugeteilt, die von den Clients im<br />

eigenen Netz erreicht werden kann. Der Server empfängt dann die Anfragen vom Client<br />

über das IPv6-Interface und holt se<strong>in</strong>erseits Erkundigungen über das klassische IPv4 Netz<br />

e<strong>in</strong>.<br />

8.5.3 DNS als Bannerfilter<br />

Wie sehr es auf e<strong>in</strong>en funktionierenden Nameservice ankommt, sieht man, wenn man e<strong>in</strong>fach<br />

mal e<strong>in</strong>e häufig benutzte Doma<strong>in</strong> falsch auflöst. Wenn man im eigenen LAN e<strong>in</strong>en DNS<br />

betreibt, den alle Masch<strong>in</strong>en benutzen (müssen), kann man diesen für alle möglichen Zonen<br />

als authoritativ deklarieren. Hierzu trägt man e<strong>in</strong>fach e<strong>in</strong>e Zone für die entsprechende<br />

Doma<strong>in</strong> nach und verweisen auf e<strong>in</strong> dafür speziell def<strong>in</strong>iertes Master-File.<br />

zone "google.de" <strong>in</strong> {<br />

type master;<br />

file "master/empty.zone";<br />

};


8.6. AUFGABEN 123<br />

zone "falkag.de" <strong>in</strong> {<br />

type master;<br />

file "master/empty.zone";<br />

};<br />

zone "doubleclick.net" <strong>in</strong> {<br />

type master;<br />

file "master/empty.zone";<br />

};<br />

Dabei spielt es überhaupt ke<strong>in</strong>e Rolle, wenn alle diese Zonen die identische Datei benutzen.<br />

In dieser wird lediglich dafür gesorgt, dass auf jede Anfrage e<strong>in</strong>e 127.0.0.1 zurückgeliefert<br />

wird.<br />

; NULL Zone File for Ad Servers and other unwanted services ;<br />

@ IN SOA mydoma<strong>in</strong>.site. me.mydoma<strong>in</strong>.site. (<br />

131 ; serial number<br />

28800 ; refresh<br />

1800 ; retry<br />

432000 ; expire<br />

18000 ) ; m<strong>in</strong>imum TTL<br />

; Zone NS records<br />

@ NS mydoma<strong>in</strong>.site.<br />

A 127.0.0.1<br />

* IN A 127.0.0.1<br />

Das Beispiel zeigt die Nutzung e<strong>in</strong>es Wildcards ”*”. Es muss nicht für jeden Namen e<strong>in</strong><br />

<strong>E<strong>in</strong></strong>trag existieren, diese können so e<strong>in</strong>fach zusammengefaßt werden.<br />

Wenn man den Nameserver beispielsweise für doubleclick.net authoritativ macht, dann<br />

schlägt das Laden aller Banner und Webbugs fehl, die als Quelle e<strong>in</strong>e Masch<strong>in</strong>e dieser<br />

Doma<strong>in</strong> angeben. Je nach Browser können dann e<strong>in</strong>ige Seiten etwas verän<strong>der</strong>t aussehen, da<br />

plötzlich Seitenelemente von denen man nie vermutet hätte, dass sie von extern kommen,<br />

fehlen. Dies ist ke<strong>in</strong> Allheilmittel. Je<strong>der</strong> Anbieter kann natürlich statt e<strong>in</strong>es FQDN auch<br />

e<strong>in</strong>e IP <strong>in</strong> se<strong>in</strong>e Webadressen schreiben. Trotzdem ist es e<strong>in</strong> recht e<strong>in</strong>faches probates Mittel,<br />

um se<strong>in</strong>e Datenspur bei sehr großen Diensteanbietern e<strong>in</strong>fach zu reduzieren. Es zeigt aber<br />

auch, dass wenn die wenigen zentralen Root-Server nicht erreichbar s<strong>in</strong>d, nicht mehr viel<br />

funktionieren würde.<br />

8.6 Aufgaben<br />

8.6.1 Rechnernamen im Internet<br />

1. Welche Aufgabe hat <strong>der</strong> DNS?<br />

2. Warum kann man nicht e<strong>in</strong>fach bei <strong>der</strong> alten /etc/hosts als e<strong>in</strong>fache Zuordnung zwischen<br />

IP und Hostnamen bleiben?<br />

3. Warum kann man zwar auf <strong>der</strong> lokalen Masch<strong>in</strong>e den Hostnamen än<strong>der</strong>n; es hat aber<br />

ke<strong>in</strong>e Auswirkungen für alle an<strong>der</strong>en Rechner?<br />

4. Man än<strong>der</strong> den Hostnamen! Wo müsste die dauerhafte Än<strong>der</strong>ung e<strong>in</strong>getragen se<strong>in</strong>?<br />

Man än<strong>der</strong>e nun e<strong>in</strong>en <strong>E<strong>in</strong></strong>trag für e<strong>in</strong>en Rechner <strong>in</strong> <strong>der</strong> /etc/hosts, warum kann man


124 KAPITEL 8. DNS<br />

diesen Rechner nun unter dem neuen Namen anp<strong>in</strong>gen, obwohl <strong>der</strong> “Besitzer” dieses<br />

Rechners den Namen nicht geän<strong>der</strong>t hat?<br />

5. Wo trägt man auf e<strong>in</strong>em L<strong>in</strong>uxrechner die IP-Nummern von Nameservern e<strong>in</strong>? Warum<br />

kann man da nicht e<strong>in</strong>fach den Namen des (Nameserver-)Rechners e<strong>in</strong>tragen?<br />

6. Warum macht es S<strong>in</strong>n, mehrere DNS-Server e<strong>in</strong>zutragen? Wo trägt man diese e<strong>in</strong>?<br />

8.6.2 Doma<strong>in</strong> Name Service (DNS)<br />

1. Was ist e<strong>in</strong>e sogenannte Toplevel-Doma<strong>in</strong>? Welche gibt es traditionell, welche s<strong>in</strong>d<br />

erst <strong>in</strong> jüngerer Zeit h<strong>in</strong>zugekommen?<br />

2. Wor<strong>in</strong> besteht <strong>der</strong> Unterschied zwischen DNS Resolver und DNS Nameserver?<br />

3. Welche Resource Records (RR) gibt es? Welche Bedeutung haben diese jeweils?<br />

8.6.3 DNS Server<br />

1. Wor<strong>in</strong> unterscheiden sich rekursive und iterative Namensauflösung? Warum antworten<br />

die Root-Nameserver immer nur iterativ? Mit welchem Kommando kann man das<br />

geschil<strong>der</strong>te Phänomen am besten nachvollziehen?<br />

2. Wieviele Root-Nameserver gibt es? Wo stehen diese? Wodurch ist <strong>der</strong>en Zahl begrenzt?


Kapitel 9<br />

Webserver<br />

Viele Internet-Benutzer sehen dieses nur als WWW. Jedoch ist es nur e<strong>in</strong>e Teilmenge <strong>der</strong><br />

TCP/IP-Suite. Das Protokoll des World Wide Web heisst HTTP. Es ist die Standardsprache<br />

des mo<strong>der</strong>nen WWW.<br />

Der für den Anwen<strong>der</strong> sichtbare Vorgang des Abrufs e<strong>in</strong>es Dokuments besteht <strong>in</strong> <strong>der</strong><br />

Regel aus <strong>der</strong> <strong>E<strong>in</strong></strong>gabe e<strong>in</strong>er URI o<strong>der</strong> dem Anklicken e<strong>in</strong>es L<strong>in</strong>ks, gefolgt von <strong>der</strong> Darstellung<br />

<strong>der</strong> Daten o<strong>der</strong> e<strong>in</strong>er Fehlermeldung. Diese e<strong>in</strong>fache Art und Weise <strong>der</strong> Benutzung hat<br />

viel zur breiten Akzeptanz des Internets beigetragen.<br />

9.1 Überblick<br />

Im Zusammenhang mit WWW und dem dafür hauptsächlich zuständigen Protokoll <strong>der</strong><br />

Applikationsschicht HTTP spielen e<strong>in</strong>ige Bezeichnungen e<strong>in</strong>e Rolle:<br />

• Ressource - ist die Quelle e<strong>in</strong>es Web<strong>in</strong>halts, <strong>der</strong> durch e<strong>in</strong>e URI identifiziert werden<br />

kann. Der e<strong>in</strong>fachste Typ <strong>der</strong> Ressource ist e<strong>in</strong>e statische Datei im Filesystem des<br />

Web-Servers. Typ und Inhalt <strong>der</strong> Datei s<strong>in</strong>d beliebig. Außerdem kann die Ressource<br />

auch e<strong>in</strong> Programm se<strong>in</strong>, welches bei Aufruf e<strong>in</strong>en bestimmten Inhalt generiert und<br />

ausliefert.<br />

• URI - Uniform Resource Identifier bezeichnet den weltweit e<strong>in</strong>deutigen Name für e<strong>in</strong>e<br />

Ressource. z.B http://www.goe.net/<strong>in</strong>dex.php)<br />

• URL - Uniform Resource Locator ist e<strong>in</strong>e Unterart von URI, lokaler Name für die<br />

Ressource, sie bleiben anhand ihres Pfades vone<strong>in</strong>an<strong>der</strong> unterscheidbar.<br />

• URN - Uniform Ressource Name, e<strong>in</strong> spezialer Typ von URI, auch weltweiter e<strong>in</strong>deutig.<br />

z.B. urn:isbn:0-596-00962-3<br />

Die Enwicklung des WWW begann mit HTTP/0.9, e<strong>in</strong>er Prototyp-Version, die von Tim<br />

Berners-Lee am CERN <strong>in</strong> den Jahren 1990/1991 entwickelt wurde. HTTP /0.9 kennt lediglich<br />

die GET-Methode. HTTP/1.0 war die erste Version, die weit entwickelt zum Standard<br />

wurde. Es kamen Versionsnummern, HTTP-Hea<strong>der</strong>, zusätzliche Methoden (Head, Post, DE-<br />

LETE, LINK, UNLINK) und die Behandlung von Multimedia-Inhalten h<strong>in</strong>zu. Das Nachrichtenformat<br />

von Antworten und Anfragen wird genauer spezifiziert.<br />

HTTP/1.0 ermöglicht die Beschränkung des Zugriffes auf Ressourcen. Es handelt sich<br />

jedoch nur um e<strong>in</strong>e rudimentäre Authentifizierung, da das Passwort unverschlüsselt übertragen<br />

wird und <strong>der</strong> Server sich dem Client gegenüber nicht authentifizieren kann.<br />

125


126 KAPITEL 9. WEBSERVER<br />

Die Weiterentwicklung endete 1997 mit HTTP/1.1. Diese Version konzentrierte sich<br />

auf die Korrektur <strong>der</strong> Designfehler, das Spezifizieren von Semantik, e<strong>in</strong>igen Performace-<br />

Optimierungen. So können jetzt im Gegensatz zur Version 1.0 mehrere Anfragen und Antworten<br />

pro TCP-Verb<strong>in</strong>dung gesendet werden. Für e<strong>in</strong> HTML-Dokument mit e<strong>in</strong>gebetteten<br />

Bil<strong>der</strong>n wird so nur e<strong>in</strong>e TCP-Verb<strong>in</strong>dung benötigt, wo vorher für jede Resource<br />

e<strong>in</strong>e separate aufgebaut wurde. Zudem können bei HTTP/1.1 abgebrochene Downloads<br />

fortgesetzt werden. Über Cookies <strong>in</strong> den Hea<strong>der</strong>-Informationen können Anwendungen realisiert<br />

werden, die Status<strong>in</strong>formationen (Benutzere<strong>in</strong>träge, ...) zuordnen können. Dadurch<br />

können Webanwendungen, die Status- bzw. Sitzungseigenschaften erfor<strong>der</strong>n, realisiert werden.<br />

Auch e<strong>in</strong>e Benutzerauthentifizierung ist möglich. Die Methoden s<strong>in</strong>d auch weiter entwickelt.<br />

HTTP/1.1 bietet e<strong>in</strong>e TRACE-Methode, mit <strong>der</strong> man den Weg zum Webserver<br />

überwachen kann. Mithilfe dieser Methode gibt es die Möglichkeit, den Weg zum Webserver<br />

über die verschiedenen Proxies h<strong>in</strong>weg zu ermitteln, e<strong>in</strong> Traceroute auf Anwendungsebene.<br />

HTTP/1.1 umfasste auch die Unterstützung für die höher entwickelten Netzanwendungen<br />

und Entwicklungen, die <strong>in</strong> den späten neunziger Jahren waren.<br />

9.2 HTTP-Kommunikation<br />

user@l<strong>in</strong>ux02:~> telnet 10.30.4.100 81<br />

Try<strong>in</strong>g 10.30.4.100...<br />

Connected to 10.30.4.100<br />

Escape character is ’^]’.<br />

GET /hallo.html HTTP/1.1<br />

Host 0.30.4.100:81<br />

!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"<br />

"http://www.w3.org/TR/html4/loose.dtd"><br />

<br />

<br />

Test-Seite<br />

<br />

<br />

Haupt&uuml;berschrift <br />

<br />

Connection closed by foreign host.<br />

Zwischen GET- und POST-Anfragen bestehen folgende wesentliche Unterschiede: Bei<br />

<strong>der</strong> GET-Methode werden die übergebenen Daten <strong>in</strong> die URL e<strong>in</strong>kodiert und s<strong>in</strong>d somit<br />

für jeden sofort lesbar, e<strong>in</strong> Beispiel s<strong>in</strong>d Suchanfragen bei Google:<br />

http://www.google.de/search?q=http+get+post&start=0&start=0&ie=\<br />

utf-8&oe=utf-8&client=firefox-a&rls=org.mozilla:de-DE:official<br />

Bei POST werden die Daten im Hea<strong>der</strong> übergeben. Dabei lassen sich wesentlich mehr Daten<br />

übergeben als <strong>in</strong> e<strong>in</strong>er GET-Anfrage. Das Versenden <strong>der</strong> Daten an den Server geschieht<br />

für den Nutzer auf den ersten Blick sche<strong>in</strong>bar unsichtbar. <strong>E<strong>in</strong></strong> wesentlich größerer Unterschied<br />

ist allerd<strong>in</strong>gs, dass GET-Anfragen idempotent s<strong>in</strong>d, was bedeutet, das sich die Seite<br />

aufgrund e<strong>in</strong>er GET-Anfrage nicht än<strong>der</strong>t. Daraus ergibt sich auch, dass solche Seiten im<br />

Cache angelegt werden können. Mit POST-Seiten ist es jedoch genau an<strong>der</strong>sherum, diese<br />

s<strong>in</strong>d nicht idempotent und werden deshalb nicht im Cache abgelegt.


9.3. WAS IST EIN WEBSERVER? 127<br />

9.3 Was ist e<strong>in</strong> Webserver?<br />

<strong>E<strong>in</strong></strong> Server ist e<strong>in</strong> Programm, das bestimmte Anfragen auf e<strong>in</strong>em bestimmten Port annimmt<br />

und verarbeitet.<br />

<strong>E<strong>in</strong></strong> Webserver liefert Dateien aus bestimmten Verzeichnissen (mit <strong>der</strong> Angabe von welchem<br />

Type 1 diese Dateien s<strong>in</strong>d) über <strong>Netzwerk</strong> aus. Unter Umständen wird bei <strong>der</strong> Entscheidung,<br />

welche Dateien ausgeliefert werden, nach <strong>der</strong> angefragten Adresse unterschieden.<br />

Grundsätzlich wird auf die Anfrage http://host.doma<strong>in</strong>/directory/example.html<br />

mit <strong>der</strong> Auslieferung von “Content-Type Text-html” und dem Inhalt <strong>der</strong> Datei:<br />

/usr/local/httpd/htdocs/directory/example.html 2<br />

von dem Webserver auf host.doma<strong>in</strong> reagiert.<br />

9.4 Apache 2<br />

Der Apache 2 ist <strong>der</strong> weltweit meist-verbreitete Webserver. <strong>E<strong>in</strong></strong> Kernbestandteil des Erfolges<br />

ist die Tatsache, dass Apache e<strong>in</strong> Open-Source-Projekt ist. Der Aufbau ist modular, d.h. <strong>der</strong><br />

Webserver hat e<strong>in</strong>en schlanken Kern, welcher die Grundfunktionalität enthält und Erweiterungen<br />

können zusätzlich e<strong>in</strong>gebunden werden (teilweise mit und teilweise ohne Neustart<br />

des Apache).<br />

Vielfach s<strong>in</strong>d noch e<strong>in</strong>e ältere Version des Servers 1.3.X im <strong>E<strong>in</strong></strong>satz. Neu <strong>in</strong> <strong>der</strong> Version<br />

2.0 ist z.B. dass plattformspezifischer Code (z.B. Schreib- Lesezugriffe auf die Festplatte)<br />

<strong>in</strong> e<strong>in</strong>e APR (Apache Portable Runtime) ausgelagert wurde. Dies ermöglicht es, dass für<br />

jedes Betriebssystem e<strong>in</strong>e eigene Version <strong>der</strong> APR geschrieben und optimiert werden kann,<br />

was <strong>der</strong> Geschw<strong>in</strong>digkeit und Stabilität zu Gute kommt.<br />

<strong>E<strong>in</strong></strong>heiten zur Abbildung von HTTP-Anfragen auf reale Ausführungse<strong>in</strong>heiten wurden<br />

ebenso ausgelagert. (Diese nennen sich MPMs [Multi Process<strong>in</strong>g Modules].) Dies macht<br />

S<strong>in</strong>n, da dieser Vorgang ebenso vom Betriebssystem abhängt (genauso wie von <strong>der</strong> konkret<br />

betrachteten Anwendung natürlich auch).<br />

Ebenso neu e<strong>in</strong>geführt <strong>in</strong> <strong>der</strong> Version 2.0 wurden Multi-Protokoll-Unterstützung auf<br />

Transportebene und IPv6-Unterstützung.<br />

9.4.1 Erweiterte Funktionalität<br />

Virtual Hosts (IP- o<strong>der</strong> Name-basiert)<br />

SSL, sichere Verb<strong>in</strong>dungen<br />

Authentifizierung<br />

CGI (Common Gateway Interface)<br />

Ausführen von Scripten und Programmen<br />

PHP<br />

SSI (Server Side Includes)<br />

9.5 Konfiguration<br />

In den aktuellen Versionen hat Apache nur noch die Konfigurationsdatei httpd.conf. Allerd<strong>in</strong>gs<br />

machen viele Distributionen von <strong>der</strong> Möglichkeit gebrauch, an<strong>der</strong>e Dateien mit<br />

Include e<strong>in</strong>zub<strong>in</strong>den.<br />

1 zB.: Content-Type Text-html<br />

2 Wenn DocumentRoot auf ’/usr/local/httpd/htdocs’ gesetzt ist. Dazu später mehr.


128 KAPITEL 9. WEBSERVER<br />

Die Konfiguration besteht aus drei Abschnitten.<br />

• Section 1: Global Environment<br />

• Section 2: ’Ma<strong>in</strong>’ server configuration<br />

• Section 3: Virtual Hosts<br />

Das Verhalten des Servers wird <strong>in</strong>nerhalb dieser Sektionen mit sogenannten Direktiven<br />

gesteuert. Diese Direktiven stehen <strong>in</strong>nerhalb von Konfigurationskontexten.<br />

globaler Kontext In <strong>der</strong> Konfigurationsdatei ausserhalb von Conta<strong>in</strong>ern<br />

Conta<strong>in</strong>er-Kontext Innerhalb von Conta<strong>in</strong>er-Tags (zB.: ¡Directory¿...¡/Directory¿). Der<br />

Gültigkeitsbereich ist auf die Conta<strong>in</strong>er beschränkt.<br />

Verzeichniskontext In zusätzlichen Konfigurationsdateien <strong>in</strong>nerhalb <strong>der</strong> Verzeichnisstruktur.<br />

Der Name dieser Dateien kann mit AccessFileName festgelegt werden 3 .<br />

Direktiven können <strong>in</strong> unterschiedlichem Kontext stehen, aber nicht jede Direktive kann<br />

<strong>in</strong> jedem Kontext verwendet werden. Die Apache-Dokumentation gibt für jede Direktive<br />

an, <strong>in</strong> welchem Kontext sie verwendet werden kann.<br />

<strong>E<strong>in</strong></strong>ige <strong>der</strong> wichtigsten Direktiven <strong>der</strong> Ma<strong>in</strong> Server Konfiguration s<strong>in</strong>d:<br />

ServerType standalone — <strong>in</strong>etd<br />

ServerRoot Das Verzeichnis, das für den Webserver die unterste Verzeichnisebene darstellt.<br />

ServerName Der Name des Webservers ist die URL unter <strong>der</strong> er erreichbar ist.<br />

DocumentRoot Das Verzeichnis <strong>in</strong> dem sich die Webseiten bef<strong>in</strong>den, bzw. aus dem <strong>der</strong><br />

Webserver Dateien ausliefern darf.<br />

User / Group Benutzer- bzw. Gruppenrechte, mit denen <strong>der</strong> Webserver läuft.<br />

ServerAdm<strong>in</strong> E-Mail-Adresse des Adm<strong>in</strong>istrators. An diese Adresse werden Servermeldungen<br />

geschickt und sie wird unter Umständen Benutzern mitgeteilt.<br />

9.5.1 Optionen<br />

<strong>E<strong>in</strong></strong>e wichtige Direktive ist die Options-Direktive mit <strong>der</strong> man festlegen kann, welche Server-<br />

Features verfügbar s<strong>in</strong>d. Optionen können im Konfiguration-, Conta<strong>in</strong>er- und Verzeichnis-<br />

Kontext gesetzt werden.<br />

ExecCGI :<br />

Ausführbarkeit von CGI-Programmen<br />

Includes :<br />

Ausführung von ServerSideInclude-Befehlen (SSI)<br />

Indexes :<br />

Verzeichnislist<strong>in</strong>g anzeigen


9.5. KONFIGURATION 129<br />

<br />

Options +Indexes -Includes<br />

<br />

Abbildung 9.1: Options h<strong>in</strong>zugügen/entfernen<br />

Optionen können gesetzt, h<strong>in</strong>zugefügt(+) o<strong>der</strong> entfernt(-) werden. Im Beispiel 9.1 wird<br />

für das Verzeichnis /home/www/ die Option Indexes zu den allgeme<strong>in</strong> gültigen Optionen<br />

h<strong>in</strong>zugefügt und die Option Includes von den allgeme<strong>in</strong> gültigen Optionen entfernt (abgezogen).<br />

Im Beispiel 9.2 werden für das Verzeichnis /home/www2/ nur die Optionen Indexes und<br />

Includes gesetzt. Unabhängig von den allgeme<strong>in</strong> gültigen Optionen.<br />

<br />

Options Indexes Includes<br />

<br />

9.5.2 Module<br />

Abbildung 9.2: Options setzen<br />

Zusätzliche Funktionalitäten können <strong>in</strong> Form von Modulen h<strong>in</strong>zugefügt werden. Module<br />

können mit<br />

LoadModule cgi_module /usr/lib/apache/mod_cgi.so<br />

AddModule mod_cgi.c<br />

im Global-Kontext geladen werden. Module br<strong>in</strong>gen ihre eigenen Direktiven mit, die nach<br />

dem Laden verfügbar s<strong>in</strong>d. Mit <strong>der</strong> DirektiveIfModule kann man Conta<strong>in</strong>er erzeugen, <strong>der</strong>en<br />

Direktiven nur ausgeführt werden, wenn das entsprechende Modul geladen ist (siehe 9.3, S.<br />

130). Module können auch direkt <strong>in</strong> den Apache e<strong>in</strong>kompiliert werden und s<strong>in</strong>d dann ohne<br />

geladen werden zu müssen verfügbar.<br />

Für Apache gibt es e<strong>in</strong>e Vielzahl Module, die nicht zur Standard-Distribution gehören.<br />

Wünscht man sich e<strong>in</strong>e zusätzliche Funktion für se<strong>in</strong>en Webserver, lohnt es sich im Internet<br />

nach e<strong>in</strong>em Modul zu suchen, das diese Funktionalität bereitstellt. Sollte man nicht fündig<br />

werden, kann man sich dank <strong>der</strong> offenen Quelltexte daran machen, selber e<strong>in</strong> solches Modul<br />

zu schreiben.<br />

9.5.3 User-WWW<br />

Das Userdir-Modul ermöglicht es für jeden Benutzer e<strong>in</strong> Verzeichnis e<strong>in</strong>zurichten, das bei<br />

e<strong>in</strong>er Anfrage <strong>der</strong> Form http://server/~username vom Webserver ausgeliefert wird.<br />

Die Direktive UserDir legt den Namen des Verzeichnisses <strong>in</strong>nerhalb <strong>der</strong> Home-Verzeichnisse<br />

fest, dessen Inhalt <strong>der</strong> Webserver ausliefern darf. Innerhalb e<strong>in</strong>es Directory-<br />

Conta<strong>in</strong>ers bezüglich /home/*/public html kann man das Verhalten des Webservers <strong>in</strong>nerhalb<br />

dieses Verzeichnisses steuern. Beide Anweisungen s<strong>in</strong>d unabhängig vone<strong>in</strong>an<strong>der</strong>,<br />

man muss selber darauf achten, dass man das Verzeichnis konfiguriert, dass mit UserDir<br />

gesetzt ist.<br />

3 Standard ist AccessFileName .htaccess


130 KAPITEL 9. WEBSERVER<br />

<br />

UserDir public_html<br />

<br />

<br />

AllowOverride FileInfo AuthConfig Limit<br />

Options MultiViews Indexes SymL<strong>in</strong>ksIfOwnerMatch IncludesNoExec<br />

<br />

Abbildung 9.3: User-Webdirectory<br />

Bei SuSE-L<strong>in</strong>ux s<strong>in</strong>d die Direktiven bezüglich mod userdir <strong>in</strong> die Datei<br />

/etc/httpd/suse public html.conf ausgelagert.<br />

9.6 Webserver Erweiterungen<br />

Die Anfor<strong>der</strong>ungen an den Apache Webserver s<strong>in</strong>d <strong>in</strong> den letzten Jahren gestiegen, so<br />

dass das eigentliche ausführbare Programm permanent erweitert werden muss. Die Apache-<br />

Foundation 4 hat sich hier e<strong>in</strong>er mo<strong>der</strong>nen Methode des Softwaredesigns bedient, bei <strong>der</strong><br />

nicht das eigentliche Kernprogramm aufgebläht wird, son<strong>der</strong>n zusätzliche Funktionalität <strong>in</strong><br />

externe Module ausgelagert wird.<br />

Der Kern-Server (core-server) bietet nur die notwendige Basisfunktionalität, wie die<br />

Implementierung e<strong>in</strong>es TCP/IP-Servers. Alle zusätzlichen Features werden durch Module<br />

h<strong>in</strong>zugefügt. Durch diese Möglichkeit bleibt <strong>der</strong> Webserver ”schlank” und verwendet je nach<br />

Konfiguration nur die Module, welche wirklich gebraucht werden. Dieses vermeidet unnötige<br />

Sicherheitslücken. In <strong>der</strong> Apache Modul Datenbank s<strong>in</strong>d momentan (November 2005) über<br />

400 Module gelistet bei steigen<strong>der</strong> Anzahl. Zur Integration von Zusatzfunktionen kann man<br />

zwischen zwei Modularten unterscheiden:<br />

• <strong>E<strong>in</strong></strong> statisches Modul wird zusammen mit dem Kern zu e<strong>in</strong>em e<strong>in</strong>heitlichen Paket<br />

kompiliert und damit fester Bestandteil des Webserver-Programms. Beim H<strong>in</strong>zufügen<br />

o<strong>der</strong> Entfernen e<strong>in</strong>es solchen Moduls kommt <strong>der</strong> Adm<strong>in</strong> um e<strong>in</strong>e Neukompilierung<br />

des Webservers nicht herum. Durch die feste Integration kann sich die Ausführungsgeschw<strong>in</strong>digkeit<br />

beim Starten des Apache und wärend <strong>der</strong> Laufzeit erhöhen, da ke<strong>in</strong>e<br />

zusätzlichen Initialisierungen für jedes Modul notwendig s<strong>in</strong>d und <strong>der</strong> <strong>in</strong>terne Code-<br />

Overhead s<strong>in</strong>kt.<br />

• <strong>E<strong>in</strong></strong> Shared-Module kann dynamisch durch e<strong>in</strong>e entsprechende Direktive <strong>in</strong> <strong>der</strong> Konfigurationsdatei<br />

httpd.conf h<strong>in</strong>zugefügt o<strong>der</strong> entfernt werden. Da die Konfigurationsdateien<br />

nur bei e<strong>in</strong>em Start des Apache Webserver e<strong>in</strong>gelesen werden, ist hier also<br />

lediglich e<strong>in</strong> Neustart des Webservers erfor<strong>der</strong>lich. Diese Methode br<strong>in</strong>gt zwar <strong>E<strong>in</strong></strong>bußen<br />

<strong>der</strong> Performance des Webservers mit sich, jedoch ist es so sehr e<strong>in</strong>fach möglich<br />

e<strong>in</strong> Modul schnell und ohne zeitaufwendige Neukompilierung des Webservers h<strong>in</strong>zuzufügen.<br />

4 Der erste Apache-Webserver entstand aus dem damals aktuellen NCSA httpd 1.3 und zusätzlichen<br />

Erweiterungen und Patches (a patchy-webserver). Im Sommer 1999 begann die Entwicklung des Apache 2,<br />

welcher komplett neu geschrieben wurde. Die Apache Gruppe entwickelt heute sehr erfolgreich Erneuerungen<br />

am Apache Webserver.


9.6. WEBSERVER ERWEITERUNGEN 131<br />

9.6.1 Die Benutzer-Homepage - mod userdir<br />

In klassischen Multi-User-Umgebungen wie Universitäten und Schulen haben Benutzer mit<br />

L<strong>in</strong>ux-Account üblicherweise auch die Möglichkeit e<strong>in</strong>e eigene Homepage <strong>in</strong> ihrem Home-<br />

Verzeichnis anzulegen. Das Modul kümmert sich darum, dass <strong>der</strong> Webserver mit geeigneten<br />

Rechten auf e<strong>in</strong> Unterverzeichnis im User-Home, welches sonst ja vor unauthorisiertem<br />

Zugriff geschützt se<strong>in</strong> sollte, h<strong>in</strong>e<strong>in</strong>schauen darf.<br />

Das Modul muss lediglich e<strong>in</strong>mal konfiguriert werden. Anschliessend s<strong>in</strong>d sämtliche<br />

Homepage-Verzeichnisse über den Webserver von außen erreichbar. Klassischer Weise erreicht<br />

man die Seiten <strong>der</strong> e<strong>in</strong>zelnen Benutzer unter <strong>der</strong> URL http://www.mywebserver.site/<br />

username. Das hierfür bestimmte Verzeichnis im jeweiligen Home-Verzeichnis des Benutzers<br />

lässt sich <strong>in</strong> <strong>der</strong> Konfigurationsdatei mit <strong>der</strong> Direktive UserDir Unterverzeichnisname<br />

def<strong>in</strong>ieren. In den meisten Fällen heisst dieses Verzeichnis public html<br />

9.6.2 URL-Umschreiber mod rewrite<br />

Dieses Modul erlaubt Manipulationen <strong>der</strong> URL, durch sogenannte Regular Expressions, wie<br />

man sie auch von an<strong>der</strong>en L<strong>in</strong>ux-Tools, wie sed o<strong>der</strong> grep kennt. Hierdurch kann <strong>der</strong> Webadm<strong>in</strong><br />

”unschöne” URLs verän<strong>der</strong>n, um sie zum Beispiel für Suchmasch<strong>in</strong>en freundlicher<br />

zu gestalten. Viele <strong>der</strong> Suchmasch<strong>in</strong>en können zwar dynamische Web<strong>in</strong>halte <strong>in</strong>dizieren, jedoch<br />

wird e<strong>in</strong>e Internetseite sichtlich besser <strong>in</strong>diziert, wenn diese statisch ist. Deshalb wird<br />

recht häufig mod rewrite e<strong>in</strong>gesetzt, um den Suchmasch<strong>in</strong>en Spi<strong>der</strong>n e<strong>in</strong>e dynamische Seite<br />

als statisch unterzuschieben.<br />

Dynamische Seiten s<strong>in</strong>d oft durch URLs mit Parametern charakterisiert: http://www.ks.<br />

uni-freiburg.de/php veranstaltungsdetail.php?id=7. Mittels mod rewrite kann man die URL<br />

so umschreiben, so dass die Seite auch Intern wandelt das Modul die URL wie<strong>der</strong> um, so<br />

dass die dynamische Seite mit sämtlichen Parametern aufgerufen wird.<br />

Dieses lässt sich durch e<strong>in</strong>e e<strong>in</strong>fache Direktive <strong>in</strong> <strong>der</strong> Apache Konfigurationsdatei<br />

httpd.conf umsetzen, wie die Abbildung von ”praxis-sem<strong>in</strong>ar.html” auf ”php veranstaltungsdetail.php?id=7”.<br />

RewriteEng<strong>in</strong>e On<br />

RewriteRule ^(praxis-sem<strong>in</strong>ar7[0-9]+).html$ php_veranstaltungsdetail.php?id=$1<br />

Die erste Zeile schaltet das Modul durch die Direktive ”RewriteEng<strong>in</strong>e On” e<strong>in</strong>. In <strong>der</strong><br />

zweiten Zeile folgt dann die Regel für die Umschreibung. Der erste Parameter bildet das<br />

Suchmuster und <strong>der</strong> zweite Parameter das Ersetzungsmuster. Das Suchmuster lässt soch<br />

mittels regulärer Ausdrücke formulieren. Beim Ersetzungsmuster kann es sich um e<strong>in</strong>fachen<br />

Text, aber auch Variablen des regulären Ausdrucks enthalten. Im gezeigten Beispiel steht<br />

$1 für das erste Klammerpaar im Suchmuster.<br />

9.6.3 Zugriffskontrollen<br />

Die Module mod auth basic und mod auth digest erlauben die <strong>E<strong>in</strong></strong>richtung e<strong>in</strong>er e<strong>in</strong>fache<br />

Zugriffskontrolle über das HTTP Protokoll. Erfolgt e<strong>in</strong> Zugriff auf e<strong>in</strong>e zugriffsbeschränkte<br />

Resource, dann schickt <strong>der</strong> Server den Status 401 und verlangt e<strong>in</strong>e Authentifizierung des<br />

Benutzers durch <strong>E<strong>in</strong></strong>gabe e<strong>in</strong>es Benutzernamens und Passworts. Die <strong>E<strong>in</strong></strong>gabe gleicht <strong>der</strong><br />

Server mit den <strong>E<strong>in</strong></strong>trägen <strong>der</strong> Passwort- und Gruppendatei ab. Besitzt <strong>der</strong> Benutzer die<br />

nötigen Rechte, gewährt <strong>der</strong> Webserver dem Benutzer den Zugriff.<br />

Um e<strong>in</strong> Verzeichnis auf dem Webserver vor unauthorisiertem Zugriff zu schützen, gibt<br />

es zwei Möglichkeiten: Zentral <strong>in</strong> <strong>der</strong> httpd.conf o<strong>der</strong> mit Hilfe von .htaccess-Dateien <strong>in</strong><br />

den zu schützenden Verzeichnissen. Für den zentralen Ansatz muss <strong>der</strong> Webadm<strong>in</strong> <strong>in</strong> <strong>der</strong><br />

httpd.conf die nachfolgenden Zeilen h<strong>in</strong>zufügen.


132 KAPITEL 9. WEBSERVER<br />

<br />

AuthType Digest<br />

AuthName "privat"<br />

AuthDigestFile /srv/www/.htpasswd<br />

Require valid-user<br />

<br />

Dabei handelt es sich bei /srv/www/htdocs/secure das zu schützende Verzeichnis, das mit<br />

<strong>der</strong> Digest-Methode abgesichert wird. Für e<strong>in</strong>en Passwortschutz mittels .htaccess-Datei(en)<br />

s<strong>in</strong>d die folgenden Schritte zu unternehmen. Man erstellt die Datei im Verzeichnis mit dem<br />

entsprechenden Inhalt.<br />

<br />

AuthType Digest<br />

AuthName "Mit MD5/Digest gesicherter Bereich"<br />

AuthDigestFile /srv/www/.htpasswd<br />

Require valid-user<br />

Require Group webadm<strong>in</strong>s<br />

<br />

Mit <strong>der</strong> Direktive AuthType wird die Authentifizierungsmethode festgelegt, wobei <strong>der</strong> Webadm<strong>in</strong><br />

zwischen Basic und Digest wählen kann. Der Unterschied zwischen beiden Module<br />

liegt <strong>in</strong> <strong>der</strong> Art <strong>der</strong> Datenübertragung. Während die Basic Authentifizierung (mod auth basic)<br />

die Daten im Klartext überträgt und damit e<strong>in</strong> recht hohes Risiko e<strong>in</strong>geht, verschlüsselt<br />

das Modul mod auth digest die Daten vor <strong>der</strong><br />

Übertragung mittels MD5. Da jedoch das<br />

Chiffrat abgefangen und mittels Bruteforce-Attacke <strong>in</strong>terpretiert werden kann, empfiehlt<br />

sich bei sensiblen Bereichen die Übertragung zusätzlich mit Hilfe von SSL zu sichern.<br />

<br />

AuthType Basic<br />

AuthName "Mit BasicAuth nicht wirklich gesicherter Bereich"<br />

AuthUserFile /srv/www/.htpasswd<br />

Require valid-user<br />

<br />

AuthName def<strong>in</strong>iert den Namen des geschützten Bereichs. Der hier def<strong>in</strong>ierte Str<strong>in</strong>g wird<br />

dem Benutzer bei <strong>der</strong> Passwort-Abfrage präsentiert. Mit den Direktiven AuthUserFile<br />

undAuthGroupFile, beziehungsweise im Fall <strong>der</strong> Digest AuthentifizierungAuthDigestFile<br />

und AuthDigestGroupFile wird <strong>der</strong> Pfad zu <strong>der</strong> Passwort- und Gruppendatei def<strong>in</strong>iert.<br />

Die letzte Zeile des Beispiels legt zusätzlich fest, welche Benutzer berechtigt s<strong>in</strong>d <strong>in</strong> das<br />

Verzeichnis zu wechseln. Hierzu verwendet man die Direktive Require, welche wie bei <strong>der</strong><br />

Basic Authentifizierung e<strong>in</strong>en gültigen Benutzer verlangt.<br />

# .htpasswd<br />

user01:secure_section01:fnxpraouunko3Ocasde1cdf0l1ases1a<br />

user02:secure_section01:basd2w49eq0eab5wehz1sdf2r44f24cd<br />

user03:secure_section02:lse35aa81ca43dc8dsecdbe83382121f<br />

Die <strong>in</strong> den Beispielen genannten Passwort- und Gruppendateien s<strong>in</strong>d Textformate, die<br />

sich mit e<strong>in</strong>em ganz normalen Editor bearbeiten lassen. Die Passworte muss man dabei<br />

nicht selbst erstellen, dieses regelt das Programm mit dem Namen htpasswd2 für<br />

die Basic Authentifizierung und htdigest2 für die Digest Authetifizierung. Durch den<br />

Aufruf htpasswd2 -c datei username o<strong>der</strong> entsprechend htdigest2 -c datei bereich<br />

username wird man zur <strong>E<strong>in</strong></strong>gabe des Passwortes aufgefor<strong>der</strong>t und anschliessend die Datei<br />

erzeugt. Das H<strong>in</strong>zufügen von Benutzern <strong>in</strong> bestehende Dateien geschieht durch das Weglassen<br />

des Parameters ”-c”.<br />

# .htgroup<br />

webadm<strong>in</strong>s:user01 user02<br />

normal_user:user03


9.6. WEBSERVER ERWEITERUNGEN 133<br />

Bei sehr vielen Benutzern wird es wie bei <strong>der</strong> normalen L<strong>in</strong>ux-User-Adm<strong>in</strong>istration auch,<br />

irgendwann aufwändig die Informationen <strong>in</strong> e<strong>in</strong>zelnen Dateien zu verwalten. Als Alternative<br />

bietet sich LDAP an. 5 <strong>E<strong>in</strong></strong>e Basic Authentication kann auch gegen e<strong>in</strong>e LDAP-Quelle laufen,<br />

die .htaccess zeigt die entsprechenden <strong>E<strong>in</strong></strong>träge:<br />

AuthType Basic<br />

AuthName "Gegen LDAP authentifizierter Bereich"<br />

LDAP_Server localhost<br />

LDAP_Port 389<br />

Base_DN "ou=user,dc=mydoma<strong>in</strong>,dc=site"<br />

Require valid-user<br />

9.6.4 Kompression<br />

Das Modul mod deflate wurde mit <strong>der</strong> Apache Version 2 e<strong>in</strong>geführt und erlaubt die Kompression<br />

von Web<strong>in</strong>halten durch Angabe e<strong>in</strong>es Filters. Das Modul kann ausgehende, sowie<br />

auch e<strong>in</strong>gehende Daten komprimieren. Der Datenverkehr wird hierzu über diesen Filter<br />

umgeleitet. Um dieses Modul zu aktivieren, trägt e<strong>in</strong> Adm<strong>in</strong> die folgende Direktiven <strong>in</strong> <strong>der</strong><br />

Apache-Konfigurationsdatei e<strong>in</strong>:<br />

SetOutputFilter DEFLATE<br />


134 KAPITEL 9. WEBSERVER<br />

• PROPPATCH - kann diese Metadaten än<strong>der</strong>n und löschen.<br />

• UNLOCK - entfernt diesen Überschreibschutz wie<strong>der</strong><br />

Nachfolgend sei e<strong>in</strong> e<strong>in</strong>faches Beispiel für WebDAV Freigabe demonstriert:<br />

DAVLockDB /usr/local/apache2/webdav<br />

<br />

Dav On<br />

ForceType text/pla<strong>in</strong><br />

<br />

Mit <strong>der</strong> ersten Direktive legt man den Pfad zu <strong>der</strong> Lock-Datenbank fest. In dieser Datei<br />

wird abgespeichert, welche <strong>der</strong> vorhandenen Ressourcen gerade gesperrt s<strong>in</strong>d. Dann folgt e<strong>in</strong><br />

Location-Conta<strong>in</strong>er mit dem wir das Verzeichnis def<strong>in</strong>ieren, für welches man <strong>in</strong>dividuelle<br />

<strong>E<strong>in</strong></strong>stellungen vornehmen möchte. Mit <strong>der</strong> Direktive Dav On, wird die WebDAV Funktionalität<br />

für das Verzeichnis e<strong>in</strong>geschaltet. Beim <strong>E<strong>in</strong></strong>satz von WebDAV sollte <strong>der</strong> Adm<strong>in</strong><br />

unbed<strong>in</strong>gt auf die notwendigen Sicherheitsvorkehrungen achten. Hierzu gehört m<strong>in</strong>destens<br />

e<strong>in</strong> Verzeichnisschutz. Am besten eignet sich jedoch die Verwendung e<strong>in</strong>es virtuellen Host<br />

<strong>in</strong> Verb<strong>in</strong>dung mit SSL-Absicherung und e<strong>in</strong>er mod auth digest Authentifizierung.<br />

9.6.6 Vrituelle Webserver<br />

Wenn man sich überlegt, wieviele Doma<strong>in</strong>s Webseiten bereitstellen, wird schnell klar, dass<br />

nicht für jede dieser Doma<strong>in</strong> e<strong>in</strong> Webserver läuft. O<strong>der</strong> womöglich für jede e<strong>in</strong> Rechner. Auch<br />

würde es für die wenigsten Privatpersonen S<strong>in</strong>n machen, auf ihrem Computer zu hause e<strong>in</strong>en<br />

öffentlichen Webserver zu betreiben, denn <strong>der</strong> sollte rund um die Uhr verfügbar se<strong>in</strong>. Da<br />

ersche<strong>in</strong>t es auf Anhieb s<strong>in</strong>nvoll mehrere Doma<strong>in</strong>s über e<strong>in</strong>en Webserver zu betreiben.<br />

Für Betreiber e<strong>in</strong>es Webservers, also beispielsweise diverse große Webhoster, wäre es<br />

ziemlich aufwändig für jede Doma<strong>in</strong> e<strong>in</strong>e eigene Instanz des Webservers auf unterschiedlichen<br />

Ports e<strong>in</strong>er Masch<strong>in</strong>e o<strong>der</strong> auf verschiedenen IP’s laufen zu lassen. Deshalb unterstützt<br />

Apache schon seit <strong>der</strong> Vorgängerversion virtuelle Server.<br />

Bei namensbasierten virtuellen Servern verwaltet <strong>der</strong> Apache mehrere Doma<strong>in</strong>s, welche<br />

alle die gleiche IP-Adresse besitzen. <strong>E<strong>in</strong></strong>gehende Anfragen können nur deshalb an die richtige<br />

Doma<strong>in</strong> weitergeleitet werden, weil <strong>der</strong> Doma<strong>in</strong>name <strong>in</strong> <strong>der</strong> GET-Anfrage enthalten ist. Um<br />

den Apache für virtuelle Server zu konfigurieren, muss die httpd.conf o<strong>der</strong> die entsprechende<br />

Include-Datei 8 geän<strong>der</strong>t werden.<br />

NameVirtualHost Schaltet Name Virtual Host e<strong>in</strong> und gibt an, auf welcher IP-Adresse<br />

auf entsprechende Anfragen reagiert werden soll. Gibt man anstatt e<strong>in</strong>er IP e<strong>in</strong> ’*’<br />

an, wird auf je<strong>der</strong> an den Rechner gebundenen IP-Adresse Name Virtual Host e<strong>in</strong>geschaltet.<br />

ServerName Legt die URL fest, auf die sich <strong>der</strong> VirtualHost-Conta<strong>in</strong>er bezieht.<br />

ServerAlias Alternative URL’s, auf die sich <strong>der</strong> VirtualHost-Conta<strong>in</strong>er bezieht.<br />

DocumentRoot Das Verzeichnis <strong>in</strong> dem sich die Dokumente bef<strong>in</strong>den, die von diesem<br />

VirtualHost ausgeliefert werden dürfen.<br />

8 Das hängt von <strong>der</strong> Konfiguration ab, die die jeweilige Distribution für den Apachen vorsieht. Anstatt<br />

diese Konfigurationen fest <strong>in</strong> die httpd.conf zu schreiben, ist es häufig so angelegt, dass virtuelle Server<br />

dynamisch generiert werden können, ohne den Apache jedes Mal neu starten zu müssen. SuSE verwendet<br />

beispielsweise e<strong>in</strong> eigenes Unterverzeichnis /etc/apache2/vhosts.d


9.7. SSL (SECURE SOCKET LAYER) 135<br />

NameVirtualHost *:80<br />

<br />

ServerName www.my-doma<strong>in</strong>.site<br />

ServerAlias my-doma<strong>in</strong>.site *.my-doma<strong>in</strong>.site<br />

DocumentRoot /srv/www/my-content<br />

<br />

<br />

ServerName www.otherdoma<strong>in</strong>.site<br />

DocumentRoot /srv/www/othercontent<br />

<br />

Diese Konfiguration besagt, dass die virtuellen Server auf Port 80, egal auf welche IP,<br />

angesprochen werden. Es werden jeweils gültige Doma<strong>in</strong>namen def<strong>in</strong>iert, sowie Stammverzeichnisse<br />

festgelegt.<br />

Alternativ wird bei e<strong>in</strong>em IP-basierten virtuellen Webserver je<strong>der</strong> Doma<strong>in</strong>, die <strong>der</strong> Server<br />

bedienen soll e<strong>in</strong>e eigene IP zugeordnet. Da IP-Adressen jedoch meistens knapp s<strong>in</strong>d,<br />

wird dieses oft nur für SSL-gesichterte Sites e<strong>in</strong>gesetzt.<br />

Möchte e<strong>in</strong> Client auf e<strong>in</strong>e Doma<strong>in</strong> zugreifen, dann muss er beim zuständigen DNS-<br />

Server nach <strong>der</strong> IP Adresse des Doma<strong>in</strong>namens fragen und kann den Webserver dann über<br />

diese IP Adresse ansprechen.<br />

Um diese Art virtuelle Webserver e<strong>in</strong>zurichten, muss e<strong>in</strong> Webserver-Adm<strong>in</strong> <strong>in</strong> <strong>der</strong> Konfigurationsdatei<br />

httpd.conf, o<strong>der</strong> je nach Distribution <strong>in</strong> <strong>der</strong> passenden Include-Datei, e<strong>in</strong>en<br />

VirtualHost Conta<strong>in</strong>er anlegen:<br />

<br />

ServerName www.my-first-doma<strong>in</strong>.site<br />

DocumentRoot /srv/www/my-first-doma<strong>in</strong>/htdocs<br />

<br />

<br />

ServerName www.my-second-doma<strong>in</strong>.site<br />

DocumentRoot /srv/www/my-second-doma<strong>in</strong>/htdocs<br />

<br />

Im obigen Beispiel wurden zwei VirtualHost Conta<strong>in</strong>er angelegt, welche als Attribut die<br />

IP-Adresse mit führen. Bei e<strong>in</strong>em IP basierten virtuellen Webserver müssen diese natürlich<br />

verschieden se<strong>in</strong>. Mit <strong>der</strong> Direktive ServerName wird Doma<strong>in</strong>Namen konfiguriert, also unter<br />

welchem DNS-Namen <strong>der</strong> Server erreichbar se<strong>in</strong> soll. Die Direktive DocumentRoot legt die<br />

Dokumentenwurzel des virtuellen Webservers fest. Sie ist <strong>der</strong> Pfad zu dem Verzeichnis <strong>in</strong><br />

dem die entsprechenden Webseiten lagern.<br />

9.7 SSL (Secure Socket Layer)<br />

Daten werden über das HTTP Protokoll standardmäßig im Klartext übertragen und stellen<br />

gerade <strong>in</strong> Bezug mit vertraulichen Daten e<strong>in</strong> Sicherheitsrisiko dar. Gerade <strong>in</strong> Bereichen mit<br />

persönlichen o<strong>der</strong> wirtschaftlich relevanten Daten sollten gesicherte Verb<strong>in</strong>dung zum <strong>E<strong>in</strong></strong>satz<br />

kommen. SSL ist e<strong>in</strong>e Technik um Verb<strong>in</strong>dungen zu verschlüsseln. Diese Verschlüsselung<br />

setzt oberhalb von TCP an und kann deshalb auch für an<strong>der</strong>e TCP-basierte Dienste<br />

e<strong>in</strong>gesetzt werden.<br />

Für die verschlüsselte<br />

Übertragung sensibler Daten von o<strong>der</strong> zu e<strong>in</strong>er Webseite ist<br />

das HTTPS (HyperText Transfer Protokol Secure) def<strong>in</strong>iert. Bei e<strong>in</strong>er Anfrage, die mit<br />

https:// beg<strong>in</strong>nt, wird e<strong>in</strong>e sichere, d.h. verschlüsselte, Verb<strong>in</strong>dung vom Client zum Webserver<br />

aufgebaut. Die HTTPS-Anfragen nimmt <strong>der</strong> Webserver, wenn nichts an<strong>der</strong>es e<strong>in</strong>gestellt<br />

ist, auf Port 443 entgegen.


136 KAPITEL 9. WEBSERVER<br />

9.7.1 Funktionsweise<br />

Für e<strong>in</strong>e verschlüsselte Verb<strong>in</strong>dung muss zum<strong>in</strong>dest e<strong>in</strong> Kommunikationsschlüssel ausgetauscht<br />

werden, mit dem beide Seiten dann arbeiten. Zur Kommunikation wird aus Performanzgründen<br />

e<strong>in</strong> symetrisches Verschlüsselungsverfahren e<strong>in</strong>gesetzt. Der Kommunikationsschlüssel<br />

wird über e<strong>in</strong> Public-Key-Verfahren ausgetauscht. Dazu benötigt m<strong>in</strong>destens <strong>der</strong><br />

Webserver e<strong>in</strong>en öffentlichen und e<strong>in</strong>en privaten Schlüssel. Bei e<strong>in</strong>em Verb<strong>in</strong>dungsaufbau,<br />

schickt <strong>der</strong> Webserver e<strong>in</strong> x509-Certificate, das se<strong>in</strong>en öffentlichen Schlüssel und se<strong>in</strong>en Namen<br />

be<strong>in</strong>haltet, an den Client. Anhand dieses Certificates kann <strong>der</strong> Client e<strong>in</strong>en Webserver,<br />

dem er e<strong>in</strong>mal vertraut hat, wie<strong>der</strong>erkennen und mit Hilfe des öffentlichen Schlüssels e<strong>in</strong>en<br />

Vorschlag für e<strong>in</strong>en Kommunikationsschlüssel machen. Ist das Certificate von e<strong>in</strong>er Instanz<br />

signiert, <strong>der</strong> <strong>der</strong> Client vertraut, kann er auch e<strong>in</strong>em Webserver vertrauen, den er noch<br />

nicht kennt. 9 Abbildung ?? zeigt, wie dem Webserver se<strong>in</strong> Certificate übergeben wird. Dabei<br />

müssen das zu verschickende Certificate mit dem öffentlichen Schlüssel und (! <strong>in</strong> e<strong>in</strong>er<br />

an<strong>der</strong>en Datei) <strong>der</strong> private Schlüssel angegeben werden.<br />

SSLCertificateFile /etc/httpd/ssl.crt/server.crt<br />

SSLCertificateKeyFile /etc/httpd/ssl.key/server.key<br />

9.7.2 Zertifikate<br />

Zertifikate 10 s<strong>in</strong>d signierte Informationen über e<strong>in</strong>e Instanz. <strong>E<strong>in</strong></strong> Certificate enhält m<strong>in</strong>destens<br />

e<strong>in</strong>en e<strong>in</strong>deutigen Namen und den öffentlichen Schlüssel <strong>der</strong> Instanz.<br />

Damit e<strong>in</strong>e an<strong>der</strong>e Instanz das Certificate anerkennen kann, muss es von e<strong>in</strong>er dritten<br />

Instanz, <strong>der</strong> beide Vertrauen, unterzeichnet se<strong>in</strong>. Das gilt als Beglaubigung, dass das Certificate<br />

“echt” ist. <strong>E<strong>in</strong></strong>e solche vertrauensvolle Instanz nennt man Certificate Authorisation<br />

(CA).<br />

Der Name <strong>der</strong> Instanz wird <strong>in</strong> dem Certificate <strong>in</strong> <strong>der</strong> von LDAP bekannten Objektorientierten<br />

schreibweise angegeben (zB.: ”C=de, O=uni-math, CN=www.uni-math.gwdg.de”).<br />

Dabei ist es für das Certificate e<strong>in</strong>es Webservers wichtig, dass <strong>der</strong> <strong>E<strong>in</strong></strong>trag CN (Common-<br />

Name) die URL des Webservers be<strong>in</strong>haltet.<br />

Mit dem Paket openssl kommt das Perl-Skript CA.pl, das bei <strong>der</strong> Erzeugung und<br />

Verwaltung von Certificaten hilft.<br />

/usr/share/ssl/misc/CA.pl -newcert|-newreq|-newca|-sign|-verify<br />

CA.pl benutzt openssl zur Bearbeitung von Certificaten. <strong>E<strong>in</strong></strong>e ausgiebige Lektüre <strong>der</strong><br />

Manpage von openssl kann dieses Skript überflüssig machen und versetzt <strong>in</strong> die Lage, Certificate<br />

fe<strong>in</strong>er zu bee<strong>in</strong>flussen.<br />

<strong>E<strong>in</strong></strong>e umfangreiche und gute Beschreibung des Umganges mit Certificaten f<strong>in</strong>det man<br />

unter http://www.tldp.org/HOWTO/SSL-Certificates-HOWTO/.<br />

9.7.3 Zertifikate erzeugen<br />

Folgende Schritte führen zu e<strong>in</strong>em Server-Certificate <strong>in</strong> <strong>der</strong> Datei newreq.pem und dem<br />

entschprechenden privaten Schlüssel <strong>in</strong> wwwkeyunsecure.pem.<br />

CA.pl -newcert Certification Authority und ca-Certificat erstellen<br />

9 So ist das Pr<strong>in</strong>zip, <strong>in</strong> Wirklichkeit ist das Ganze e<strong>in</strong> bischen komplizierter.<br />

10 engl. certificates


9.8. CGI (-MODUL) 137<br />

CA.pl -newreq Certificate-Request. Erzeugt e<strong>in</strong> neues Certificate. Für e<strong>in</strong> Webserver-<br />

Certificate ist darauf zu achten, als CN den Namen <strong>der</strong> Webseite anzugeben.<br />

CA.pl -sign das neue Certificat mit dem ca-Certificat signieren<br />

openssl rsa -<strong>in</strong> newreq.pem -out wwwkeyunsecure.pem Passphrase aus dem Certificat<br />

entfernen und den Privat-Key <strong>in</strong> e<strong>in</strong>e eigene Datei auslagern<br />

Es ist zu empfehlen, für die ersten Versuche e<strong>in</strong> Verzeichnis anzulegen, <strong>in</strong> das manCA.pl<br />

kopiert und dort die entsprechenden Befehle aufruft.<br />

9.7.4 Integration<br />

Hat man den Schlüssel erfolgreich erstellt, kann man <strong>in</strong> <strong>der</strong> Konfigurationsdatei httpd.conf<br />

o<strong>der</strong> je nach Distribution <strong>der</strong> passenden Include-Daten das Modul für e<strong>in</strong> Verzeichnis aktivieren.<br />

Dieses geschieht <strong>in</strong> <strong>der</strong> Regel mit e<strong>in</strong>em IP-basierten 11 virtuellen Host:<br />

Listen 443<br />

<br />

DocumentRoot /srv/www/htdocs/ssl-gesichert<br />

ServerName 192.168.2.1:443<br />

SSLEng<strong>in</strong>e on<br />

SSLCertificateFile /etc/apache2/ssl/server.crt<br />

SSLCertificateKeyFile /etc/apache2/ssl/server.key<br />

<br />

Durch die Listen-Direktive <strong>in</strong> <strong>der</strong> ersten Zeile sagt e<strong>in</strong> Adm<strong>in</strong> dem Apache Webservern,<br />

dass er auf dem Port 443 antworten soll. Dann wird <strong>in</strong> e<strong>in</strong>em VirtualHost-Conta<strong>in</strong>er e<strong>in</strong>gerichtet.<br />

In diesem schaltet die Direktive ”SSLEng<strong>in</strong>e on” die SSLUnterstützung für diesen<br />

virtuellen Server an. Mit den beiden Direktiven SSLCertificateFile und SSLCertificateKey-<br />

File gibt man den Pfad zu dem SSL-Zertifikat und SSL-Schlüssel an.<br />

Die Pfade <strong>in</strong> denen sich diese beiden Dateien bef<strong>in</strong>den sollten natürlich ausreichend<br />

geschützt se<strong>in</strong>, damit e<strong>in</strong> potenzieller Angreifer ke<strong>in</strong>e Möglichkeit hat an den SSL-Schlüssel<br />

zu gelangen - ansonsten wäre diese Verschlüsselung wertlos.<br />

9.8 CGI (-Modul)<br />

CGI (Common Gateway Interface) def<strong>in</strong>iert e<strong>in</strong>e Schnittstelle, die die Kommunikation zwischen<br />

Webservern und Programmen erleichtert. HTML-Dokumente können Variablen mittels<br />

Form-Tags über CGI an Programme übergeben. Diese sogenannten CGI-Progamme<br />

generieren oft wie<strong>der</strong> ganze Webseiten. So kann man ganze Internetauftritte über CGI-<br />

Programme steuern.<br />

Für die Variablenübergabe gibt es zwei Methoden.<br />

GET-Methode Die Variablen werden als Teil <strong>der</strong> URL übergeben. Man hat die Möglichkeit,<br />

e<strong>in</strong>en Aufruf mit den Variablendef<strong>in</strong>itionen selbst zu formulieren, zB. direkt <strong>in</strong><br />

die Adresszeile des Browsers e<strong>in</strong>zugeben. Dabei werden die Variablen mit Wertzuweisung<br />

nach e<strong>in</strong>em ’?’ an die URL angehängt. Mehrere Variablen-Wert-Paare werden<br />

dabei durch e<strong>in</strong> ’&’ getrennt.<br />

11 Mit <strong>der</strong> namensbasierten Variante stößt man hier an die Grenzen, denn bevor <strong>der</strong> Browser <strong>in</strong> dem<br />

HTTP-Hea<strong>der</strong> den Doma<strong>in</strong>namen sendet, erfolgt das SSL Handshake. Zu diesem Zeitpunkt ist jedoch nur<br />

die IP Adresse und die Portnummer bekannt, welche bei den namensbasierten virtuellen Webservern zu<br />

mehreren Doma<strong>in</strong>s führen kann.


138 KAPITEL 9. WEBSERVER<br />

POST-Methode Die Variablen werden im Request-Hea<strong>der</strong> übergeben, s<strong>in</strong>d also für den<br />

Benutzer nicht sichtbar. Das macht es für dritte zum<strong>in</strong>dest schwerer, etwas über das<br />

Programm o<strong>der</strong> die Übertragenen Variablen heraus zu f<strong>in</strong>den.<br />

http://www.example.com/cgi-b<strong>in</strong>/script.cgi?var1=value1&var2=value2<br />

Abbildung 9.4: Variablenübergabe per GET-Methode<br />

Grundsätzlich kann jede Art von Programm o<strong>der</strong> Skript vom Webserver Apache ausgeführt<br />

werden. Es ist dem Webserver aber nicht erlaubt, beliebige Programme auszuführen.<br />

Man muss für Verzeichnisse <strong>in</strong> denen CGI-Programme ausgeführt werden sollen, die Option<br />

ExecCGI setzen 12 und e<strong>in</strong>e (o<strong>der</strong> mehrere) Dateiendungen def<strong>in</strong>ieren. Nur Dateien, die die<br />

e<strong>in</strong>getragene Endung haben und sich <strong>in</strong> e<strong>in</strong>em Verzeichnis bef<strong>in</strong>den, für dasExecCGI gesetzt<br />

ist, werden vom Webserver als CGI-Script aufgerufen.<br />

Aus Sicherheitsgründen sollte man die Ausführung von Programmen nur ausserhalb<br />

von DocumentRoot erlauben. Oft wird die Ausführung nur für e<strong>in</strong> cgi-b<strong>in</strong> genanntes<br />

Verzeichnis erlaubt, das sich ausserhalb von DocumentRoot bef<strong>in</strong>det.<br />

In Abbildung 9.5 wird erst e<strong>in</strong> Alias auf das cgi-b<strong>in</strong> Verzeichnis gesetzt. MitAddHandler<br />

wird def<strong>in</strong>iert, dass Dateien mit <strong>der</strong> Endung .cgi als cgi-script <strong>in</strong>terpretiert werden.<br />

Innerhalb e<strong>in</strong>es Directory-Conta<strong>in</strong>ers bezüglich /usr/local/httpd/cgi-b<strong>in</strong>/ wird die Option<br />

ExecCGI zu den geltenden Optionen h<strong>in</strong>zugefügt.<br />

ScriptAlias /cgi-b<strong>in</strong>/ /usr/local/httpd/cgi-b<strong>in</strong>/<br />

AddHandler cgi-script .cgi<br />

<br />

Options +ExecCGI<br />

<br />

9.9 PHP<br />

Abbildung 9.5: mod cgi<br />

Bei den statischen Web<strong>in</strong>halten s<strong>in</strong>d die HTML-Seiten, welche <strong>der</strong> Webserver ausliefern<br />

soll, üblicherweise als Datei abgelegt. Der Webserver liefert e<strong>in</strong>fach die komplette Datei<br />

aus, wenn e<strong>in</strong> Client die entsprechende Resource anfragt.<br />

Bei den dynamischen Web<strong>in</strong>halten dagegen wird die HTML-Ausgabe erst mit Hilfe e<strong>in</strong>er<br />

Skriptsprache zur Laufzeit erzeugt. Hier gibt es wie<strong>der</strong> zwei unterschiedliche Techniken, die<br />

Clientseitigen und die Serverseitigen.<br />

Die clientseitigen Skriptsprachen werden auf dem Clients selbst ausgeführt. Hierzu zählt<br />

zum Beispiel die <strong>E<strong>in</strong></strong>gabe von Formularfel<strong>der</strong>n. Die HTML Seite, welche vom Webserver<br />

ausgeliefert wird, enthält den Quelltext <strong>der</strong> jeweiligen Skriptsprache, <strong>der</strong> dann vom Client<br />

geparst und ausgeführt wird. Das bekannteste und e<strong>in</strong>es <strong>der</strong> ältesten Beispiele e<strong>in</strong>er clientseitigen<br />

Skriptsprache ist Javascript. Die Auswahl wuchs im Laufe <strong>der</strong> Zeit, so dass Flash,<br />

Java o<strong>der</strong> ActiveX <strong>in</strong>zwischen von vielen Browsern o<strong>der</strong> ihren Erweiterungen unterstützt<br />

werden. Damit <strong>der</strong> Client den Quelltext ausführen kann, ist natürlich die Unterstützung<br />

12 siehe Kapitel 9.5.1


9.9. PHP 139<br />

<strong>der</strong> Skriptsprache erfor<strong>der</strong>lich. Dies geschieht mit Hilfe von Plug<strong>in</strong>s, die <strong>der</strong> Benutzer im<br />

Client <strong>in</strong>stallieren muss. Hier fangen dann oft die Probleme an:<br />

• Die Performance ist da e<strong>in</strong> entscheiden<strong>der</strong> Faktor. Bei den clientseitigen Skriptsprachen<br />

muss <strong>der</strong> Client selbst die Rechenleistung, welche für die Ausführung des Codes<br />

notwendig ist, bereitstellen.<br />

• Unter Sicherheitsaspekten schneiden clientseitige Implementierungen oft schlecht ab,<br />

da e<strong>in</strong> Skript auf dem Client-Rechner oft beliebigen Code ausführen kann und damit<br />

auch Manipulationen am System selbst vornehmen könnte.<br />

• Die Browserunterstützung zählt zu den weiteren Problemen, mit welchem sich die<br />

clientseitigen Skriptsprachen befassen müssen. Denn nicht für jeden Web-Browser<br />

existiert e<strong>in</strong> passendes Plug<strong>in</strong>.<br />

• Der <strong>Netzwerk</strong>traffic schafft oft e<strong>in</strong> weiteres Problem. Man stelle sich vor, dass man e<strong>in</strong><br />

clientseitiges Flash-Skript, welches mehrere Megabyte groß ist, hat. Auch wenn man<br />

nur e<strong>in</strong>en kle<strong>in</strong>en Teil des Flashskriptes benötigt, muss man das komplette Skript<br />

vor <strong>der</strong> Ausführung herunterladen, was e<strong>in</strong>en u.U. unverhältnismässig hohen <strong>Netzwerk</strong>traffic<br />

mit sich br<strong>in</strong>gt, <strong>der</strong> gerade für kle<strong>in</strong>e mobile Endgeräte problematisch se<strong>in</strong><br />

kann.<br />

Diese Art <strong>der</strong> Probleme tritt nicht auf, wenn man auf serverseitige Skriptsprachen setzt.<br />

Diese verän<strong>der</strong>n o<strong>der</strong> generieren die HTML-Seite noch vor <strong>der</strong> Auslieferung an den Client.<br />

Wird also e<strong>in</strong>e Anfrage an e<strong>in</strong>en Webserver gestellt, dann wird <strong>der</strong> Quelltext des Skripts<br />

noch auf dem Webserver geparst und ausgeführt. Die serverseitigen Skriptsprachen können<br />

wie<strong>der</strong>um ihre Daten aus Datenbanken beziehen, wie das oft bei den Content Management<br />

Systemen (CMS) <strong>der</strong> Fall ist.<br />

Ist das komplette Skript abgearbeitet, dann wird die erzeugte HTML-Seite an den Client<br />

ausgeliefert. Hier wird natürlich die Unterstützung <strong>der</strong> Skriptsprache durch den Webserver<br />

vorausgesetzt. Das bedeutet, dass nur Netztraffic <strong>in</strong> Höhe <strong>der</strong> generierten Seite anfällt<br />

und sich die Sicherheitsrisikten für die Endanwen<strong>der</strong> <strong>in</strong> Grenzen halten. Sie bekommen ja<br />

statisches HTML zu sehen.<br />

Diese Erweiterungen werden üblicherweise durch Module <strong>in</strong>tegriert. Bekanntestes Beispiel<br />

dürfte bei den serverseitigen Skriptsprachen PHP mit de<strong>in</strong>em Apache Modul mod php4<br />

se<strong>in</strong>. Weitere gängige serverseitige Programmiersprachen stehen mit ASP und JSP zur<br />

Verfügung.<br />

Auch bei serverseitigen Skriptsprachen sollten e<strong>in</strong>ige Aspekte beim <strong>E<strong>in</strong></strong>satz beachtet<br />

werden. Das permanente Generieren von Seiten ”on-demand” kann die komplette Rechenleistung<br />

auf dem Webserver beanspruchen, was je nach Zugriffscharakteristik zu <strong>E<strong>in</strong></strong>bußen<br />

<strong>in</strong> <strong>der</strong> Performance führen kann.<br />

9.9.1 Das Apache-PHP-Modul<br />

Das Modul mod php bietet die Möglichkeit, PHP-Code <strong>in</strong>nerhalb von HTML-Seiten auszuführen.<br />

Für Dateien, die vom PHP-Interpreter geparst werden sollen, muss e<strong>in</strong>e Endung<br />

def<strong>in</strong>iert werden (Abbildung 9.6).<br />

Der PHP-Interpreter gibt den e<strong>in</strong>gelesen HTML-Code unverän<strong>der</strong>t an den Client weiter.<br />

PHP-Code wird <strong>in</strong>terpretiert und das Ergebnis direkt an den Client weiter gegeben. Für<br />

den Client sieht das so aus, als würde er e<strong>in</strong>e re<strong>in</strong>e HTML-Seite erhalten.


140 KAPITEL 9. WEBSERVER<br />

<br />

AddType application/x-httpd-php .php<br />

AddType application/x-httpd-php .php4<br />

AddType application/x-httpd-php-source .phps<br />

<br />

<br />

<br />

<br />

.<br />

Abbildung 9.6: mod php<br />

pr<strong>in</strong>t ’’’’.$titel.’’ ’’.$number.’’’’;<br />

Abbildung 9.7: PHP-Code<br />

9.10 SSI (Server Side Includes)<br />

Apache stellt mit SSI e<strong>in</strong>e Möglichkeit zur Verfügung, Internetseiten mit dynamischen Inhalten<br />

zu versehen. Um SSI verfügbar zu machen, muss zum<strong>in</strong>dest für e<strong>in</strong>en Teil <strong>der</strong> Dateihierachie<br />

<strong>in</strong>nerhalb von DocumentRoot die Option Include (siehe Kapitel 9.5.1) gesetzt<br />

se<strong>in</strong>. Ausserdem muss e<strong>in</strong> Dateityp an die Funktionalität gebunden werden (Abbildung 9.8).<br />

<br />

AddHandler server-parsed .shtml<br />

AddType text/shtml .shtml<br />

Options +Include<br />

<br />

Abbildung 9.8: mod ssi<br />

SSI-Befehle werden <strong>in</strong>nerhalb des HTML-Codes mit abgeschlossen.<br />

SSI-Dateien werden vom Server geparst und die SSI-Befehle entsprechend <strong>in</strong>terpretiert.<br />

Das Ergebniss <strong>der</strong> Interpretation wird an <strong>der</strong> Stelle des Befehls <strong>in</strong> die HTML-Seite<br />

e<strong>in</strong>gesetzt. SSI def<strong>in</strong>iert e<strong>in</strong>e Vielzahl von Umgebungsvariablen, bietet die Möglichkeit Systemprogramme<br />

auszuführen und be<strong>in</strong>haltet Befehle zur Flusskontrolle (Abbildung 9.9).<br />

Viele Internet-Benutzer sehen dieses nur als WWW. Jedoch ist es nur e<strong>in</strong>e Teilmenge <strong>der</strong><br />

TCP/IP-Suite. Das Protokoll des World Wide Web heisst HTTP. Es ist die Standardsprache<br />

des mo<strong>der</strong>nen WWW.<br />

Der für den Anwen<strong>der</strong> sichtbare Vorgang des Abrufs e<strong>in</strong>es Dokuments besteht <strong>in</strong> <strong>der</strong><br />

Regel aus <strong>der</strong> <strong>E<strong>in</strong></strong>gabe e<strong>in</strong>er URI o<strong>der</strong> dem Anklicken e<strong>in</strong>es L<strong>in</strong>ks, gefolgt von <strong>der</strong> Darstellung<br />

<strong>der</strong> Daten o<strong>der</strong> e<strong>in</strong>er Fehlermeldung. Diese e<strong>in</strong>fache Art und Weise <strong>der</strong> Benutzung hat<br />

viel zur breiten Akzeptanz des Internets beigetragen.


9.11.<br />

ÜBERBLICK 141<br />

<br />

<br />

...<br />

<br />

...<br />

<br />

9.11 Überblick<br />

Abbildung 9.9: SSI-Code<br />

Im Zusammenhang mit WWW und dem dafür hauptsächlich zuständigen Protokoll <strong>der</strong><br />

Applikationsschicht HTTP spielen e<strong>in</strong>ige Bezeichnungen e<strong>in</strong>e Rolle:<br />

• Ressource - ist die Quelle e<strong>in</strong>es Web<strong>in</strong>halts, <strong>der</strong> durch e<strong>in</strong>e URI identifiziert werden<br />

kann. Der e<strong>in</strong>fachste Typ <strong>der</strong> Ressource ist e<strong>in</strong>e statische Datei im Filesystem des<br />

Web-Servers. Typ und Inhalt <strong>der</strong> Datei s<strong>in</strong>d beliebig. Außerdem kann die Ressource<br />

auch e<strong>in</strong> Programm se<strong>in</strong>, welches bei Aufruf e<strong>in</strong>en bestimmten Inhalt generiert und<br />

ausliefert.<br />

• URI - Uniform Resource Identifier bezeichnet den weltweit e<strong>in</strong>deutigen Name für e<strong>in</strong>e<br />

Ressource. z.B http://www.goe.net/<strong>in</strong>dex.php)<br />

• URL - Uniform Resource Locator ist e<strong>in</strong>e Unterart von URI, lokaler Name für die<br />

Ressource, sie bleiben anhand ihres Pfades vone<strong>in</strong>an<strong>der</strong> unterscheidbar.<br />

• URN - Uniform Ressource Name, e<strong>in</strong> spezialer Typ von URI, auch weltweiter e<strong>in</strong>deutig.<br />

z.B. urn:isbn:0-596-00962-3<br />

Die Enwicklung des WWW begann mit HTTP/0.9, e<strong>in</strong>er Prototyp-Version, die von Tim<br />

Berners-Lee am CERN <strong>in</strong> den Jahren 1990/1991 entwickelt wurde. HTTP /0.9 kennt lediglich<br />

die GET-Methode. HTTP/1.0 war die erste Version, die weit entwickelt zum Standard<br />

wurde. Es kamen Versionsnummern, HTTP-Hea<strong>der</strong>, zusätzliche Methoden (Head, Post, DE-<br />

LETE, LINK, UNLINK) und die Behandlung von Multimedia-Inhalten h<strong>in</strong>zu. Das Nachrichtenformat<br />

von Antworten und Anfragen wird genauer spezifiziert.<br />

HTTP/1.0 ermöglicht die Beschränkung des Zugriffes auf Ressourcen. Es handelt sich<br />

jedoch nur um e<strong>in</strong>e rudimentäre Authentifizierung, da das Passwort unverschlüsselt übertragen<br />

wird und <strong>der</strong> Server sich dem Client gegenüber nicht authentifizieren kann.<br />

Die Weiterentwicklung endete 1997 mit HTTP/1.1. Diese Version konzentrierte sich<br />

auf die Korrektur <strong>der</strong> Designfehler, das Spezifizieren von Semantik, e<strong>in</strong>igen Performace-<br />

Optimierungen. So können jetzt im Gegensatz zur Version 1.0 mehrere Anfragen und Antworten<br />

pro TCP-Verb<strong>in</strong>dung gesendet werden. Für e<strong>in</strong> HTML-Dokument mit e<strong>in</strong>gebetteten<br />

Bil<strong>der</strong>n wird so nur e<strong>in</strong>e TCP-Verb<strong>in</strong>dung benötigt, wo vorher für jede Resource<br />

e<strong>in</strong>e separate aufgebaut wurde. Zudem können bei HTTP/1.1 abgebrochene Downloads<br />

fortgesetzt werden. Über Cookies <strong>in</strong> den Hea<strong>der</strong>-Informationen können Anwendungen realisiert<br />

werden, die Status<strong>in</strong>formationen (Benutzere<strong>in</strong>träge, ...) zuordnen können. Dadurch<br />

können Webanwendungen, die Status- bzw. Sitzungseigenschaften erfor<strong>der</strong>n, realisiert werden.<br />

Auch e<strong>in</strong>e Benutzerauthentifizierung ist möglich. Die Methoden s<strong>in</strong>d auch weiter entwickelt.<br />

HTTP/1.1 bietet e<strong>in</strong>e TRACE-Methode, mit <strong>der</strong> man den Weg zum Webserver<br />

überwachen kann. Mithilfe dieser Methode gibt es die Möglichkeit, den Weg zum Webserver


142 KAPITEL 9. WEBSERVER<br />

über die verschiedenen Proxies h<strong>in</strong>weg zu ermitteln, e<strong>in</strong> Traceroute auf Anwendungsebene.<br />

HTTP/1.1 umfasste auch die Unterstützung für die höher entwickelten Netzanwendungen<br />

und Entwicklungen, die <strong>in</strong> den späten neunziger Jahren waren.<br />

9.12 HTTP-Kommunikation<br />

Viele Internet-Benutzer sehen dieses nur als WWW. Jedoch ist es nur e<strong>in</strong>e Teilmenge <strong>der</strong><br />

TCP/IP-Suite. Das Protokoll des World Wide Web heisst HTTP. Es ist die Standardsprache<br />

des mo<strong>der</strong>nen WWW.<br />

Der für den Anwen<strong>der</strong> sichtbare Vorgang des Abrufs e<strong>in</strong>es Dokuments besteht <strong>in</strong> <strong>der</strong><br />

Regel aus <strong>der</strong> <strong>E<strong>in</strong></strong>gabe e<strong>in</strong>er URI o<strong>der</strong> dem Anklicken e<strong>in</strong>es L<strong>in</strong>ks, gefolgt von <strong>der</strong> Darstellung<br />

<strong>der</strong> Daten o<strong>der</strong> e<strong>in</strong>er Fehlermeldung. Diese e<strong>in</strong>fache Art und Weise <strong>der</strong> Benutzung hat<br />

viel zur breiten Akzeptanz des Internets beigetragen.<br />

9.13 Überblick<br />

Im Zusammenhang mit WWW und dem dafür hauptsächlich zuständigen Protokoll <strong>der</strong><br />

Applikationsschicht HTTP spielen e<strong>in</strong>ige Bezeichnungen e<strong>in</strong>e Rolle:<br />

• Ressource - ist die Quelle e<strong>in</strong>es Web<strong>in</strong>halts, <strong>der</strong> durch e<strong>in</strong>e URI identifiziert werden<br />

kann. Der e<strong>in</strong>fachste Typ <strong>der</strong> Ressource ist e<strong>in</strong>e statische Datei im Filesystem des<br />

Web-Servers. Typ und Inhalt <strong>der</strong> Datei s<strong>in</strong>d beliebig. Außerdem kann die Ressource<br />

auch e<strong>in</strong> Programm se<strong>in</strong>, welches bei Aufruf e<strong>in</strong>en bestimmten Inhalt generiert und<br />

ausliefert.<br />

• URI - Uniform Resource Identifier bezeichnet den weltweit e<strong>in</strong>deutigen Name für e<strong>in</strong>e<br />

Ressource. z.B http://www.goe.net/<strong>in</strong>dex.php)<br />

• URL - Uniform Resource Locator ist e<strong>in</strong>e Unterart von URI, lokaler Name für die<br />

Ressource, sie bleiben anhand ihres Pfades vone<strong>in</strong>an<strong>der</strong> unterscheidbar.<br />

• URN - Uniform Ressource Name, e<strong>in</strong> spezialer Typ von URI, auch weltweiter e<strong>in</strong>deutig.<br />

z.B. urn:isbn:0-596-00962-3<br />

Die Enwicklung des WWW begann mit HTTP/0.9, e<strong>in</strong>er Prototyp-Version, die von Tim<br />

Berners-Lee am CERN <strong>in</strong> den Jahren 1990/1991 entwickelt wurde. HTTP /0.9 kennt lediglich<br />

die GET-Methode. HTTP/1.0 war die erste Version, die weit entwickelt zum Standard<br />

wurde. Es kamen Versionsnummern, HTTP-Hea<strong>der</strong>, zusätzliche Methoden (Head, Post, DE-<br />

LETE, LINK, UNLINK) und die Behandlung von Multimedia-Inhalten h<strong>in</strong>zu. Das Nachrichtenformat<br />

von Antworten und Anfragen wird genauer spezifiziert.<br />

HTTP/1.0 ermöglicht die Beschränkung des Zugriffes auf Ressourcen. Es handelt sich<br />

jedoch nur um e<strong>in</strong>e rudimentäre Authentifizierung, da das Passwort unverschlüsselt übertragen<br />

wird und <strong>der</strong> Server sich dem Client gegenüber nicht authentifizieren kann.<br />

Die Weiterentwicklung endete 1997 mit HTTP/1.1. Diese Version konzentrierte sich<br />

auf die Korrektur <strong>der</strong> Designfehler, das Spezifizieren von Semantik, e<strong>in</strong>igen Performace-<br />

Optimierungen. So können jetzt im Gegensatz zur Version 1.0 mehrere Anfragen und Antworten<br />

pro TCP-Verb<strong>in</strong>dung gesendet werden. Für e<strong>in</strong> HTML-Dokument mit e<strong>in</strong>gebetteten<br />

Bil<strong>der</strong>n wird so nur e<strong>in</strong>e TCP-Verb<strong>in</strong>dung benötigt, wo vorher für jede Resource<br />

e<strong>in</strong>e separate aufgebaut wurde. Zudem können bei HTTP/1.1 abgebrochene Downloads<br />

fortgesetzt werden. Über Cookies <strong>in</strong> den Hea<strong>der</strong>-Informationen können Anwendungen realisiert<br />

werden, die Status<strong>in</strong>formationen (Benutzere<strong>in</strong>träge, ...) zuordnen können. Dadurch


9.14. HTTP-KOMMUNIKATION 143<br />

können Webanwendungen, die Status- bzw. Sitzungseigenschaften erfor<strong>der</strong>n, realisiert werden.<br />

Auch e<strong>in</strong>e Benutzerauthentifizierung ist möglich. Die Methoden s<strong>in</strong>d auch weiter entwickelt.<br />

HTTP/1.1 bietet e<strong>in</strong>e TRACE-Methode, mit <strong>der</strong> man den Weg zum Webserver<br />

überwachen kann. Mithilfe dieser Methode gibt es die Möglichkeit, den Weg zum Webserver<br />

über die verschiedenen Proxies h<strong>in</strong>weg zu ermitteln, e<strong>in</strong> Traceroute auf Anwendungsebene.<br />

HTTP/1.1 umfasste auch die Unterstützung für die höher entwickelten Netzanwendungen<br />

und Entwicklungen, die <strong>in</strong> den späten neunziger Jahren waren.<br />

9.14 HTTP-Kommunikation<br />

Viele Internet-Benutzer sehen dieses nur als WWW. Jedoch ist es nur e<strong>in</strong>e Teilmenge <strong>der</strong><br />

TCP/IP-Suite. Das Protokoll des World Wide Web heisst HTTP. Es ist die Standardsprache<br />

des mo<strong>der</strong>nen WWW.<br />

Der für den Anwen<strong>der</strong> sichtbare Vorgang des Abrufs e<strong>in</strong>es Dokuments besteht <strong>in</strong> <strong>der</strong><br />

Regel aus <strong>der</strong> <strong>E<strong>in</strong></strong>gabe e<strong>in</strong>er URI o<strong>der</strong> dem Anklicken e<strong>in</strong>es L<strong>in</strong>ks, gefolgt von <strong>der</strong> Darstellung<br />

<strong>der</strong> Daten o<strong>der</strong> e<strong>in</strong>er Fehlermeldung. Diese e<strong>in</strong>fache Art und Weise <strong>der</strong> Benutzung hat<br />

viel zur breiten Akzeptanz des Internets beigetragen.<br />

9.15 Überblick<br />

Im Zusammenhang mit WWW und dem dafür hauptsächlich zuständigen Protokoll <strong>der</strong><br />

Applikationsschicht HTTP spielen e<strong>in</strong>ige Bezeichnungen e<strong>in</strong>e Rolle:<br />

• Ressource - ist die Quelle e<strong>in</strong>es Web<strong>in</strong>halts, <strong>der</strong> durch e<strong>in</strong>e URI identifiziert werden<br />

kann. Der e<strong>in</strong>fachste Typ <strong>der</strong> Ressource ist e<strong>in</strong>e statische Datei im Filesystem des<br />

Web-Servers. Typ und Inhalt <strong>der</strong> Datei s<strong>in</strong>d beliebig. Außerdem kann die Ressource<br />

auch e<strong>in</strong> Programm se<strong>in</strong>, welches bei Aufruf e<strong>in</strong>en bestimmten Inhalt generiert und<br />

ausliefert.<br />

• URI - Uniform Resource Identifier bezeichnet den weltweit e<strong>in</strong>deutigen Name für e<strong>in</strong>e<br />

Ressource. z.B http://www.goe.net/<strong>in</strong>dex.php)<br />

• URL - Uniform Resource Locator ist e<strong>in</strong>e Unterart von URI, lokaler Name für die<br />

Ressource, sie bleiben anhand ihres Pfades vone<strong>in</strong>an<strong>der</strong> unterscheidbar.<br />

• URN - Uniform Ressource Name, e<strong>in</strong> spezialer Typ von URI, auch weltweiter e<strong>in</strong>deutig.<br />

z.B. urn:isbn:0-596-00962-3<br />

Die Enwicklung des WWW begann mit HTTP/0.9, e<strong>in</strong>er Prototyp-Version, die von Tim<br />

Berners-Lee am CERN <strong>in</strong> den Jahren 1990/1991 entwickelt wurde. HTTP /0.9 kennt lediglich<br />

die GET-Methode. HTTP/1.0 war die erste Version, die weit entwickelt zum Standard<br />

wurde. Es kamen Versionsnummern, HTTP-Hea<strong>der</strong>, zusätzliche Methoden (Head, Post, DE-<br />

LETE, LINK, UNLINK) und die Behandlung von Multimedia-Inhalten h<strong>in</strong>zu. Das Nachrichtenformat<br />

von Antworten und Anfragen wird genauer spezifiziert.<br />

HTTP/1.0 ermöglicht die Beschränkung des Zugriffes auf Ressourcen. Es handelt sich<br />

jedoch nur um e<strong>in</strong>e rudimentäre Authentifizierung, da das Passwort unverschlüsselt übertragen<br />

wird und <strong>der</strong> Server sich dem Client gegenüber nicht authentifizieren kann.<br />

Die Weiterentwicklung endete 1997 mit HTTP/1.1. Diese Version konzentrierte sich<br />

auf die Korrektur <strong>der</strong> Designfehler, das Spezifizieren von Semantik, e<strong>in</strong>igen Performace-<br />

Optimierungen. So können jetzt im Gegensatz zur Version 1.0 mehrere Anfragen und Ant-


144 KAPITEL 9. WEBSERVER<br />

worten pro TCP-Verb<strong>in</strong>dung gesendet werden. Für e<strong>in</strong> HTML-Dokument mit e<strong>in</strong>gebetteten<br />

Bil<strong>der</strong>n wird so nur e<strong>in</strong>e TCP-Verb<strong>in</strong>dung benötigt, wo vorher für jede Resource<br />

e<strong>in</strong>e separate aufgebaut wurde. Zudem können bei HTTP/1.1 abgebrochene Downloads<br />

fortgesetzt werden. Über Cookies <strong>in</strong> den Hea<strong>der</strong>-Informationen können Anwendungen realisiert<br />

werden, die Status<strong>in</strong>formationen (Benutzere<strong>in</strong>träge, ...) zuordnen können. Dadurch<br />

können Webanwendungen, die Status- bzw. Sitzungseigenschaften erfor<strong>der</strong>n, realisiert werden.<br />

Auch e<strong>in</strong>e Benutzerauthentifizierung ist möglich. Die Methoden s<strong>in</strong>d auch weiter entwickelt.<br />

HTTP/1.1 bietet e<strong>in</strong>e TRACE-Methode, mit <strong>der</strong> man den Weg zum Webserver<br />

überwachen kann. Mithilfe dieser Methode gibt es die Möglichkeit, den Weg zum Webserver<br />

über die verschiedenen Proxies h<strong>in</strong>weg zu ermitteln, e<strong>in</strong> Traceroute auf Anwendungsebene.<br />

HTTP/1.1 umfasste auch die Unterstützung für die höher entwickelten Netzanwendungen<br />

und Entwicklungen, die <strong>in</strong> den späten neunziger Jahren waren.<br />

9.16 HTTP-Kommunikation<br />

9.17 Dokumentation<br />

<strong>E<strong>in</strong></strong>e umfangreiche und gut strukturierte Dokumentation f<strong>in</strong>det man unter:<br />

http://www.apache.org.<br />

Der wohl am meisten verbreitete Webserver (nicht nur <strong>in</strong> <strong>der</strong> L<strong>in</strong>ux-/<strong>Unix</strong>welt) ist <strong>der</strong><br />

Apache httpd. Er unterstützt e<strong>in</strong>e ganze Reihe von Skriptsprachen, wie Perl und PHP über<br />

Module, Sicherungsmechanismen, wie SSL und weitere Plug<strong>in</strong>s. Die Konfigurationsdateien<br />

(Hauptdatei: httpd.conf und SSL-Keys s<strong>in</strong>d unterhalb von /etc/httpd zu f<strong>in</strong>den.


Kapitel 10<br />

Mail<br />

Elektronische Post (E-Mail) ist sicher e<strong>in</strong>e <strong>der</strong> wichtigsten und beliebtesten Anwendungen<br />

im Internet. Der Austausch von Nachrichten ist dabei gleichzeitig e<strong>in</strong>er <strong>der</strong> ältesten Dienste<br />

im Netz. Um mit e<strong>in</strong>er L<strong>in</strong>ux-Masch<strong>in</strong>e Mail versenden und empfangen zu können, reicht<br />

es im e<strong>in</strong>fachsten Fall aus, die passenden <strong>E<strong>in</strong></strong>stellungen <strong>in</strong> e<strong>in</strong>em <strong>der</strong> vielen Mail-Clients<br />

vorzunehmen. Inzwischen stehen hierfür e<strong>in</strong>e ganze Reihe von Programmen zur Verfügung;<br />

angefangen mit den ausschliesslich konsolenbasierten Programmen, wie p<strong>in</strong>e o<strong>der</strong> mutt bis<br />

h<strong>in</strong> zu ”ausgewachsenen” grafischen Anwendungen, wie kmail, thun<strong>der</strong>bird bzw. mozilla<br />

o<strong>der</strong> evolution. Diese Programme, die zum <strong>E<strong>in</strong></strong>liefern von Mails an Server und zum Empfang<br />

dienen, werden als MUA (Mail User Agent) bezeichnet. Manchmal f<strong>in</strong>det man noch<br />

die Bezeichnung MRA (Mail Retrieval Agent). Dieses s<strong>in</strong>d Programme die automatisiert<br />

Mails von e<strong>in</strong>em Server holen und für den lokalen Zugriff auf dem System des Benutzers<br />

ablegen. Hierzu zählt beispielsweise fetchmail.<br />

Serverpgrogramme, die Mails weiterverschicken und <strong>in</strong> den lokalen Mailboxen <strong>der</strong> Emfänger<br />

ablegen, nennt man MTA (Mail Transfer Agent). Für letzteres kommen oft externe<br />

Programme zum <strong>E<strong>in</strong></strong>satz, die dann MDA (Mail Delivery Agent) heissen. MTAs lassen<br />

sich selbstverständlich mit L<strong>in</strong>ux als Server aufsetzen. Es stehen dabei mehrere Implementierungen<br />

des SMTP (Simple Mail Transfer Protocol) zur Verfügung. Das älteste und<br />

umfangreichste Paket ist sicherlich ”Sendmail” (sendmail), wobei wegen <strong>der</strong> kryptischen<br />

Bedienbarkeit sich weitere Implementationen, wie ”Exim” (exim) o<strong>der</strong> auch ”ProcMail”<br />

(procmail) durchsetzen konnten.<br />

Dies ist jedoch nur die e<strong>in</strong>e Seite des Postamtes. Der User holt sich se<strong>in</strong>e ”postlagernden”<br />

Sendungen entwe<strong>der</strong> mit POP3 (Post Office Protocol) ab und sieht sie e<strong>in</strong> bzw. verwaltet<br />

sie mit IMAP4.<br />

• SMTP (Simple Message Transfer Protocol) Es ist das Übertragungsprotokoll <strong>der</strong> Server<br />

untere<strong>in</strong>an<strong>der</strong> und wird von den Clients zun <strong>E<strong>in</strong></strong>liefern <strong>der</strong> Post benutzt.<br />

• POP (Post Office Protocol; <strong>der</strong>zeit aktuell <strong>in</strong> <strong>der</strong> Version 3) Die Clients benutzen es,<br />

um ihre Post vom Server abzuholen. Entgegen dem SMTP besteht dabei die Möglichkeit,<br />

die Mail auch teilweise auf dem Server zu verwalten (allerd<strong>in</strong>gs nur <strong>in</strong> beschränktem<br />

Maße).<br />

• IMAP (Internet Mail Access Protocol; <strong>der</strong>zeit aktuell <strong>in</strong> <strong>der</strong> Version 4) IMAP wird<br />

wie POP 3 von den Clients benutzt, um Mails vom Server abzuholen. Es bietet aber<br />

gegenüber POP wesentlich mehr Flexibilität bei <strong>der</strong> Verwaltung <strong>der</strong> Post, so z.B. die<br />

Möglichkeit, <strong>E<strong>in</strong></strong>gangskörbe auf dem Server zu verwalten o<strong>der</strong> auch Roam<strong>in</strong>g Users,<br />

also Anwen<strong>der</strong>, die von verschieden Orten aus auf den Server zugreifen wollen.<br />

145


146 KAPITEL 10. MAIL<br />

• LDAP (Lightweight Directory Access Protocol) <strong>E<strong>in</strong></strong>e “leichte” Variante des DAP (Directory<br />

Access Protocol), welches von X.500 für den Zugriff auf die Datenbasis benutzt<br />

wird. LDAP wird <strong>der</strong>zeit von den neueren Mailclients (Outlook, Netscape) unterstützt,<br />

um auf globale Verzeichnisdienste zuzugreifen (Netcenter, VeriSign, Bigfoot<br />

etc.)<br />

10.1 SMTP<br />

Im Folgenden geht es um das Pr<strong>in</strong>zip h<strong>in</strong>ter Mail Transfer Agents - Programme, die E-Mail<br />

entgegennehmen und weiterleiten. SMTP (Simple Mail Transfer Protokol) ist e<strong>in</strong> Protokoll<br />

zur Übertragung von E-Mail zwischen zwei MTAs. <strong>E<strong>in</strong></strong> MTA kann als Client (SMTP-Client)<br />

o<strong>der</strong> als Server (SMTP-Server) an e<strong>in</strong>er SMTP-Kommunikation beteiligt se<strong>in</strong>1 . Der SMTP-<br />

Client baut über <strong>Netzwerk</strong> e<strong>in</strong>e Verb<strong>in</strong>dung zu dem SMTP-Server auf, um an diesen E-<br />

Mail zu übertragen. Das Übertragen e<strong>in</strong>er E-Mail, <strong>in</strong>klusive <strong>der</strong> relevanten Daten, wird als<br />

Mailtransfer bezeichnet. <strong>E<strong>in</strong></strong>e abgeschlossene Kommunikation per SMTP wird als SMTP-<br />

Sitzung bezeichnet. Während e<strong>in</strong>er SMTP-Sitzung können mehrere E-Mails übertragen<br />

werden.<br />

SMTP def<strong>in</strong>iert Befehle und Antwort-Codes. Befehle werden vom SMTP-Client an den<br />

SMTP-Server gesendet. Mit diesen SMTP-Befehlen kann <strong>der</strong> Client die Kommunikation<br />

steuern. Antwort-Codes werden vom SMTP-Server als Reaktion auf die empfangenen Befehle<br />

an den SMTP-Client gesendet.<br />

SMTP enthält mittlerweile deutlich mehr Funktionalitäten, als zum e<strong>in</strong>fachen Übertragen<br />

von E-Mail nötig s<strong>in</strong>d.<br />

HELO hostname|doma<strong>in</strong> Mit HELO leitet <strong>der</strong> SMTP-Client die Kommunikation e<strong>in</strong>. Als<br />

Parameter soll <strong>der</strong> Hostname des Clients gesendet werden. Der Parameter muss vorhanden<br />

se<strong>in</strong>, wird aber nicht überprüft. 2<br />

EHLO hostname|doma<strong>in</strong> Identisch zu HELO, nur dass <strong>der</strong> Client damit zu verstehen gibt,<br />

dass er e<strong>in</strong>en erweiterten SMTP-Befehlssatz (des ESMTP) unterstützt. Der Server soll<br />

daraufh<strong>in</strong> mitteilen, welche Erweiterungen des Befehlssatzes für die Kommunikation<br />

zur Verfügung stehen.<br />

MAIL Dieser Befehl leitet das Übertragen e<strong>in</strong>er E-Mail e<strong>in</strong>. Als Parameter muss die Absen<strong>der</strong>adresse<br />

übergeben werden.<br />

RCPT Dieser Befehl kann beliebig oft auf MAIL folgen. Mit jedem Aufruf wird e<strong>in</strong>e<br />

Empfängeradresse übergeben. Es muss m<strong>in</strong>destens e<strong>in</strong> Aufruf von RCPT erfolgen.<br />

DATA Mit DATA signalisiert <strong>der</strong> SMTP-Client, dass er den Inhalt (Mail-Body) <strong>der</strong> E-<br />

Mail übertragen möchte. Nach e<strong>in</strong>er positiven Antwort des Servers wird die E-Mail<br />

zeilenweise übertragen. <strong>E<strong>in</strong></strong> Zeile, die ausschliesslich e<strong>in</strong>en Punkt (’.’) enthält, beendet<br />

die Übertragung des Inhalts <strong>der</strong> E-Mail.<br />

QUIT Um die Kommunikation zu beenden, sendet <strong>der</strong> SMTP-Client den Befehl QUIT.<br />

<strong>E<strong>in</strong></strong>e erschöpfende Beschreibung von SMTP liefert RFC 2821. RFCs (Requests for Comments)<br />

s<strong>in</strong>d öffentlich zugängliche Dokumente, die Standartprotokolle (<strong>in</strong> IP-basierten Net-<br />

1 siehe Client-Server-Modell<br />

2 Zu den Begriffen Host und Doma<strong>in</strong> siehe Kapitel DNS.


10.1. SMTP 147<br />

zen) def<strong>in</strong>ieren. Diese Dokumente werden von <strong>der</strong> Internet Eng<strong>in</strong>eer<strong>in</strong>g Task Force (IETF)<br />

veröffentlicht und s<strong>in</strong>d über verschiedene Webseiten verfügbar3 .<br />

Die Übertragung von E-Mail ist e<strong>in</strong>er <strong>der</strong> ältesten und meist genutzten <strong>Netzwerk</strong>-<br />

Dienste. 1971 entwickelte Ray Toml<strong>in</strong>son e<strong>in</strong> Verfahren zur Übertragung von Textnachrichten<br />

über e<strong>in</strong> <strong>Netzwerk</strong>. Mit den Programmen SNDMSG und READMAIL war die erste<br />

Komunikation per E-Mail möglich. Im Laufe <strong>der</strong> Jahre entwickelte sich das Verfahren stark<br />

weiter.<br />

Jonathan B. Postel veröffentlichte 1981 die erste Spezifikation von SMTP als RFC 788.<br />

1982 wurde diese durch RFC 821 (auch von Postel) ersetzt. Anfang <strong>der</strong> 90er Jahre (1993-<br />

1995) wurden mehrere Erweiterungen zu SMTP spezifiziert, die 2001 schliesslich zu RFC<br />

2821 führten, welches die vorherigen ersetzt.<br />

10.1.1 E-Mail-Adresse<br />

<strong>E<strong>in</strong></strong>e E-Mail-Adresse besteht aus e<strong>in</strong>em Local Part und e<strong>in</strong>em Doma<strong>in</strong> Part. Beide werden<br />

durch e<strong>in</strong> ’@’-Zeichen vone<strong>in</strong>an<strong>der</strong> getrennt. Der Local Part besteht aus dem - auf<br />

dem empfangenden System bekannten - Namen des Empfängers. Der Doma<strong>in</strong> Part bezeichnet<br />

die Empfänger-, bzw. die Absen<strong>der</strong>doma<strong>in</strong>. Er besteht aus e<strong>in</strong>er weltweit e<strong>in</strong>deutigen<br />

Doma<strong>in</strong>bezeichnung. Diese Doma<strong>in</strong>bezeichnung identifiziert das empfangende System und<br />

muss über DNS auflösbar se<strong>in</strong> (siehe DNS). (RFC 2142)<br />

10.1.2 Versenden e<strong>in</strong>er E-Mail<br />

Am Versand e<strong>in</strong>er E-Mail s<strong>in</strong>d mehrere sogenannte Agenten beteiligt. <strong>E<strong>in</strong></strong> Programm zum<br />

Lesen und Verfassen von E-Mail wird als Mail User Agent (MUA) bezeichnet. <strong>E<strong>in</strong></strong>e E-<br />

Mail kann während des Transfers mehrere Mail Transfer Agents (MTA, siehe Kapitel<br />

SMTP) durchlaufen. Als Mail Delivery Agent (MDA) bezeichnet man e<strong>in</strong> Programm,<br />

das E-Mail lokal für den Empfänger verfügbar macht. <strong>E<strong>in</strong></strong> MDA bekommt e<strong>in</strong>e E-Mail von<br />

dem lokalen MTA übergeben und speichert diese <strong>in</strong> <strong>der</strong> Inbox 4 des Empfängers.<br />

Als Outgo<strong>in</strong>g-SMTP-Server e<strong>in</strong>er Doma<strong>in</strong> bezeichnet man e<strong>in</strong>en MTA, an den alle zu<br />

versendenden E-Mails e<strong>in</strong>er Doma<strong>in</strong> per SMTP übertragen werden. Dieser übernimmt die<br />

weitere Auslieferung.<br />

<strong>E<strong>in</strong></strong> Mailexchanger ist e<strong>in</strong> MTA, <strong>der</strong> für die Annahme von E-Mail für e<strong>in</strong>e bestimmte<br />

Doma<strong>in</strong> zuständig ist. Der Name und damit die IP-Adresse des Mailexchangers e<strong>in</strong>er<br />

Doma<strong>in</strong> muss über DNS <strong>in</strong> e<strong>in</strong>em MX-Record verfügbar se<strong>in</strong> (siehe Kapitel DNS). Der<br />

Mailexchanger verfügt über Informationen zur weiteren Auslieferung e<strong>in</strong>er E-Mail <strong>in</strong>nerhalb<br />

se<strong>in</strong>er Doma<strong>in</strong>. Diese kann per SMTP an e<strong>in</strong>en weiteren MTA o<strong>der</strong> an e<strong>in</strong>en lokalen<br />

MDA erfolgen.<br />

<strong>E<strong>in</strong></strong>e <strong>in</strong> e<strong>in</strong>em MUA verfasste E-Mail wird an den lokalen MTA übergeben, <strong>der</strong> sie<br />

per SMTP an den Outgo<strong>in</strong>g-SMTP-Server se<strong>in</strong>er Doma<strong>in</strong> übermittelt 5 . Dieser wie<strong>der</strong>um<br />

sendet sie an den Mailexchanger <strong>der</strong> Empfängerdoma<strong>in</strong>, welcher für die lokale Zustellung<br />

<strong>der</strong> E-Mail <strong>in</strong> die Inbox des Empfängers zuständig ist.<br />

Tabelle 10.1 zeigt e<strong>in</strong>e typische e<strong>in</strong>fache SMTP-Sitzung zum Übertragen e<strong>in</strong>er E-Mail.<br />

Der SMTP-Client nimmt Kontakt zum SMTP-Server auf, <strong>der</strong> die Kontaktaufnahme mit<br />

dem Antwort-Code 220 und Informationen über sich selbst bestätigt. Daraufh<strong>in</strong> leitet <strong>der</strong><br />

Client die Kommunikation mit HELO e<strong>in</strong>. Die mit HELO übergebene Zeichenkette soll <strong>der</strong><br />

Identifikation dienen, wird aber an dieser Stelle ungeprüft übernommen. Wie es sich für<br />

3 http://www.ietf.org/rfc, http://www.faqs.org/rfcs u.a.<br />

4 Im Deutschen oft e<strong>in</strong>fach als Poste<strong>in</strong>gang bezeichnet.<br />

5 Viele MUAs s<strong>in</strong>d <strong>in</strong> <strong>der</strong> Lage, die Aufgabe e<strong>in</strong>es SMTP-Clients selbst zu übernehmen.


148 KAPITEL 10. MAIL<br />

Server: 220 golem.ehlers-schwichtenberg.<strong>in</strong>fo ESMTP Postfix<br />

Client: HELO schwichtenberg.net<br />

S: 250 golem.ehlers-schwichtenberg.<strong>in</strong>fo<br />

C: MAIL FROM: <br />

S: 250 Ok<br />

C: RCPT TO: <br />

S: 250 Ok<br />

C: DATA<br />

S: 354 End data with .<br />

C: Der Mail-Body<br />

.<br />

S: 250 Ok: queued as C1AD92BC346<br />

C: QUIT<br />

S: 221 Bye<br />

Tabelle 10.1: <strong>E<strong>in</strong></strong>fache Übertragung e<strong>in</strong>e E-Mail mit SMTP<br />

e<strong>in</strong>en höflichen Server gehört, antwortet dieser mit se<strong>in</strong>er eigenen Identifikation. Mit dem<br />

Befehl MAIL wird die Übertragung <strong>der</strong> eigentlichen E-Mail - <strong>der</strong> Mailtransfer - begonnen.<br />

Als Parameter werden ’FROM:’ und die Absen<strong>der</strong>adresse <strong>in</strong> spitzen Klammern übergeben.<br />

Nun kann <strong>der</strong> Client wie<strong>der</strong>holt Empfängeradressen mit dem Befehl RCPT und ’TO:’ und<br />

<strong>der</strong> Empfängeradresse <strong>in</strong> spitzen Klammern übertragen. Sowohl <strong>der</strong> Befehl MAIL als auch<br />

je<strong>der</strong> Aufruf von RCPT wird bei Erfolg von dem Server mit dem Antwort-Code 250 OK<br />

beantwortet. <strong>E<strong>in</strong></strong>ige SMTP-Server überprüfen die Existenz <strong>der</strong> Absen<strong>der</strong>adresse. In jedem<br />

Fall sollte <strong>der</strong> Server überprüfen, ob er für die Zustellung von E-Mail für die Empfängeradressen<br />

zuständig ist. Bei negativem Ergebnis sendet <strong>der</strong> Server e<strong>in</strong>en Fehler-Code, um<br />

die Annahme <strong>der</strong> E-Mail abzulehnen. 4xy bezeichnet e<strong>in</strong>en temporären Fehler; <strong>der</strong> Client<br />

kann zu e<strong>in</strong>em späteren Zeitpunkt erneut versuchen, die Mail an diesen Server auszuliefern.<br />

5xy bezeichnet e<strong>in</strong>en permanenten Fehler; <strong>der</strong> Client braucht ke<strong>in</strong>e erneute Zustellung<br />

dieser Mail an diesen Server zu versuchen. <strong>E<strong>in</strong></strong>en SMPT-Server, <strong>der</strong> E-Mail für jegliche<br />

Empfängeradresse annimmt, bezeichnet man als Open-Relay (siehe Kapitel 10.1.5).<br />

S<strong>in</strong>d alle Empfängeradresse übermittelt, wird die eigentliche Nachricht, <strong>der</strong> Mail-Body<br />

(siehe Kapitel 10.1.3) übertragen. Der Client teilt dem Server mit dem Befehl DATA mit,<br />

dass er den Mail-Body übertragen möchte. Der Server sendet den Antwort-Code 354, um<br />

zu signalisieren, dass <strong>der</strong> Client mit dem zeilenweisen Übertragen <strong>der</strong> Nachricht fortfahren<br />

kann. Diese Übertragung wird mit e<strong>in</strong>er Zeile, die e<strong>in</strong>en e<strong>in</strong>zelnen Punkt (’.’) enthält,<br />

beendet, woraufh<strong>in</strong> <strong>der</strong> Server den Empfang mit 250 OK und <strong>der</strong> Identifikationsnummer,<br />

unter <strong>der</strong> er die Mail verwaltet, bestätigt. Damit ist <strong>der</strong> Mailtransfer beendet. Nun kann<br />

<strong>der</strong> Client mit MAIL e<strong>in</strong>en weiteren Mailtransfer e<strong>in</strong>leiten o<strong>der</strong> die Verb<strong>in</strong>dung mit QUIT<br />

beenden.<br />

10.1.3 Mail-Body<br />

Der Mail-Body besteht aus Hea<strong>der</strong>zeilen mit Informationen über die E-Mail und - getrennt<br />

durch e<strong>in</strong>e Leerzeile - dem eigentlichen Text <strong>der</strong> Nachricht. Die meisten Hea<strong>der</strong>zeilen werden<br />

von MUAs nicht angezeigt 6 . Die während <strong>der</strong> SMTP-Sitzung übertragen E-Mail-Adressen<br />

dienen <strong>in</strong> erster L<strong>in</strong>ie den MTAs zur Auslieferung bzw. zur Rückführung e<strong>in</strong>er E-Mail.<br />

6 Meistens ist es möglich, die Darstellung des kompletten Hae<strong>der</strong>s e<strong>in</strong>zuschalten.


10.1. SMTP 149<br />

Return-Path: <br />

X-Orig<strong>in</strong>al-To: fschwic@ehlers-schwichtenberg.<strong>in</strong>fo<br />

Delivered-To: fschwic@golem.ehlers-schwichtenberg.<strong>in</strong>fo<br />

Received: from schwichtenberg.net (shani.schwichtenberg.net [10.1.1.1])<br />

by golem.ehlers-schwichtenberg.<strong>in</strong>fo (Postfix) with SMTP id<br />

C1AD92BC346<br />

for ; Tue, 9 Mar 2004<br />

21:05:52 +0100 (CET)<br />

Message-Id: <br />

Date: Tue, 9 Mar 2004 21:05:52 +0100 (CET)<br />

From: fschwic@schwichtenberg.net<br />

To: undisclosed-recipients:;<br />

Der Mail-Body<br />

Tabelle 10.2: Die E-Mail aus Tabelle 10.1<br />

Steht nach e<strong>in</strong>em Mailtransfer <strong>in</strong> dem Mail-Body noch ke<strong>in</strong>e mit ’From:’ beg<strong>in</strong>nende<br />

Zeile, kann <strong>der</strong> MTA diese Zeile mit <strong>der</strong> Absen<strong>der</strong>adresse e<strong>in</strong>fügen. Date, Subject, To,<br />

From o<strong>der</strong> Äquivalente sollten <strong>in</strong> e<strong>in</strong>er E-Mail von vornhere<strong>in</strong> vorhanden se<strong>in</strong> (RFC 822);<br />

sie können schon bei <strong>der</strong> ersten Auslieferung <strong>der</strong> E-Mail per SMTP im Mail-Body stehen.<br />

Die SMTP-Sitzung aus Tabelle 10.1 führt dazu, dass die E-Mail aus Tabelle 10.2 <strong>in</strong> <strong>der</strong><br />

Inbox des Empfängers abgespeichert wird, wobei <strong>der</strong> Empfänger <strong>in</strong> dem MUA, mit dem er<br />

se<strong>in</strong>e E-Mail liest, normalerweise nur die Zeilen “Date: ...”, “From: ...”, “To: ...” und den<br />

Text <strong>der</strong> Nachricht angezeigt bekommt.<br />

<strong>E<strong>in</strong></strong> MTA fügt zu je<strong>der</strong> empfangenen E-Mail Hae<strong>der</strong>zeilen h<strong>in</strong>zu, die bei weiteren Übertragungen<br />

per SMTP Bestandteil des Mail-Body s<strong>in</strong>d.<br />

10.1.4 E-Mail Hea<strong>der</strong><br />

Der Hea<strong>der</strong> e<strong>in</strong>er E-Mail besteht aus mehreren Hea<strong>der</strong>zeilen. <strong>E<strong>in</strong></strong>e Hea<strong>der</strong>zeile ist e<strong>in</strong> <strong>E<strong>in</strong></strong>trag,<br />

<strong>der</strong> mit e<strong>in</strong>em Bezeichner gefolgt von e<strong>in</strong>em Doppelpunkt und e<strong>in</strong>em Leerzeichen<br />

beg<strong>in</strong>nt. Besteht e<strong>in</strong>e Hea<strong>der</strong>zeile aus mehreren Textzeilen, so müssen die folgenden Textzeilen<br />

mit e<strong>in</strong>em Whitespace beg<strong>in</strong>nen.<br />

Bezeichner für Hea<strong>der</strong>zeilen, die <strong>in</strong> ke<strong>in</strong>em Standart def<strong>in</strong>iert s<strong>in</strong>d, müssen mit ’X-’<br />

beg<strong>in</strong>nen (RFC 2821).<br />

Return-Path<br />

<strong>E<strong>in</strong></strong> MTA, <strong>der</strong> e<strong>in</strong>e E-Mail endgültig zustellt 7 , muss die Zeile Return-Path: an<br />

den Anfang <strong>der</strong> E-Mail setzen. Die e<strong>in</strong>zutragende Adresse ist die während des Mailtransfers<br />

mit MAIL übergebene Absen<strong>der</strong>adresse (RFC 2821).<br />

Received<br />

Je<strong>der</strong> MTA, <strong>der</strong> e<strong>in</strong>e E-Mail angenommen hat, muss vor <strong>der</strong> weiteren Auslieferung e<strong>in</strong>e<br />

Received-Zeile an den Anfang des Mail-Body schreiben. <strong>E<strong>in</strong></strong>e solche Zeile ist <strong>in</strong> drei Bereiche<br />

7 “f<strong>in</strong>al delivery”; wenn <strong>der</strong> MTA die E-Mail an e<strong>in</strong>en MDA übergibt o<strong>der</strong> <strong>in</strong> an<strong>der</strong>er Form aus dem<br />

SMTP-System nimmt.


150 KAPITEL 10. MAIL<br />

unterteilt:<br />

1. Informationen über den SMTP-Client e<strong>in</strong>geleitet mit “from”. Dieser Bereich enthält<br />

die Identifikation des Clients. In <strong>der</strong> Regel ist das die mit HELO o<strong>der</strong> EHLO übergebene<br />

Zeichenkette. Zusätzlich sollen <strong>in</strong> runden Klammern TCP-Informationen über den<br />

Client e<strong>in</strong>gefügt werden. Die meisten MTAs fügen die IP-Adresse des SMTP-Client<br />

(<strong>in</strong> eckigen Klammern) und den daraus resultierenden Hostnamen e<strong>in</strong>.<br />

2. Informationen über den SMTP-Server selbst. Beg<strong>in</strong>nend mit “by” werden <strong>der</strong> Hostname<br />

des Servers und Informationen über den Empfang (meistens Art <strong>der</strong> Software,<br />

Empfangsprotokoll und Identifikationsnummer <strong>der</strong> E-Mail im Server) e<strong>in</strong>gefügt.<br />

3. Informationen über den Empfang <strong>der</strong> E-Mail mit “for”, gefolgt von <strong>der</strong> mit RCPT<br />

übergebenen Empfängeradresse und - getrennt durch e<strong>in</strong> Semikolon - <strong>der</strong> Zeitpunkt<br />

des Empfangs.<br />

Weitere Hea<strong>der</strong>zeilen<br />

“Massage-Id:” soll von dem System erzeugt werden, das die E-Mail erstellt. Diese Zeile ist<br />

nicht zw<strong>in</strong>gend erfor<strong>der</strong>lich.<br />

Date, From, To und Subject sollen von vornhere<strong>in</strong> Bestandteil e<strong>in</strong>er E-Mail se<strong>in</strong> (RFC<br />

822). Der MUA <strong>in</strong> dem die E-Mail erstellt wurde sollte diese Hea<strong>der</strong>zeilen e<strong>in</strong>tragen. Wenn<br />

diese nicht vorhanden s<strong>in</strong>d, kann e<strong>in</strong> MTA sie e<strong>in</strong>fügen.<br />

Die <strong>E<strong>in</strong></strong>träge “X-Orig<strong>in</strong>al-To:” und “Deliverd-To:” aus Tabelle 10.2 werden speziell von<br />

dem MTA Postfix e<strong>in</strong>gefügt. Sie wi<strong>der</strong>sprechen dem Standart nicht, s<strong>in</strong>d aber auch nicht<br />

verlangt.<br />

10.1.5 Open-Relay<br />

<strong>E<strong>in</strong></strong> Open-Relay ist e<strong>in</strong> Mailexchanger o<strong>der</strong> e<strong>in</strong> Outgo<strong>in</strong>g-SMTP-Server, <strong>der</strong> E-Mail von<br />

beliebigen MTAs für beliebige Empfängeradressen annimmt und weiterleitet. Da die Angabe<br />

<strong>der</strong> Absen<strong>der</strong>adressen während e<strong>in</strong>er SMTP-Sitzung nur unzureichend o<strong>der</strong> gar nicht<br />

überprüft wird, ermöglicht e<strong>in</strong> Open-Relay je<strong>der</strong>mann das anonyme Versenden von E-Mail<br />

(siehe Kapitel 10.1.6).<br />

<strong>E<strong>in</strong></strong> Mailexchanger sollte nur E-Mail annehmen, <strong>der</strong>en Empfängerdoma<strong>in</strong> <strong>in</strong> se<strong>in</strong>em<br />

Zuständigkeitsbereich liegt.<br />

<strong>E<strong>in</strong></strong> Outgo<strong>in</strong>g-SMTP-Server sollte E-Mail nur von authorisierten MTAs zur Weiterleitung<br />

annehmen.<br />

10.1.6 Sicherheit<br />

Die Tatsache, dass unverschlüsselt übertragene E-Mail quasi öffentlich lesbar ist, wird mittlerweile<br />

häufig diskutiert und soll hier nicht erneut aufgegriffen werden. An dieser Stelle<br />

<strong>in</strong>teressant ist die Betrachtung <strong>der</strong> Zuverlässigkeit <strong>der</strong> Informationen, die <strong>in</strong> e<strong>in</strong>er E-Mail<br />

vorhanden s<strong>in</strong>d, wenn sie beim Empfänger ankommt (siehe Kapitel 10.1.3) und wie SMTP<br />

mißbraucht werden kann.<br />

Das Abholen von E-Mail e<strong>in</strong>es Benutzers von se<strong>in</strong>er Inbox ist nicht Bestandteil <strong>der</strong><br />

SMTP-Übertragung. Der Benutzer kann direkten Zugriff auf se<strong>in</strong>e Mailbox haben o<strong>der</strong><br />

Protokolle wie POP o<strong>der</strong> IMAP benutzen. In diesem Bereich geht es hauptsächlich darum,<br />

dass ke<strong>in</strong> Unbefugter auf die Mailbox zugreifen kann.


10.1. SMTP 151<br />

Hat e<strong>in</strong> Benutzer e<strong>in</strong>e E-Mail verfasst, wird er diese <strong>in</strong> <strong>der</strong> Regel per SMTP an den<br />

Outgo<strong>in</strong>g-SMTP-Server se<strong>in</strong>er Doma<strong>in</strong> o<strong>der</strong> se<strong>in</strong>es Provi<strong>der</strong>s übertragen. Die Übermittlung<br />

an e<strong>in</strong>en Outgo<strong>in</strong>g-SMTP-Server des Provi<strong>der</strong>s ist unproblematisch, da <strong>der</strong> Provi<strong>der</strong><br />

se<strong>in</strong>e Kunden kennt und den Zugriff über die Kenntnis <strong>der</strong> IP-Adresse des Kundenrechners<br />

o<strong>der</strong> über die Vergabe e<strong>in</strong>es Passwortes e<strong>in</strong>schränken kann. Gleiches gilt für den Outgo<strong>in</strong>g-<br />

SMTP-Server e<strong>in</strong>er Doma<strong>in</strong>, wobei hier die SMTP-Kommunikation sogar über e<strong>in</strong> geschlossenes<br />

<strong>in</strong>ternes <strong>Netzwerk</strong> erfolgt.<br />

In Bereichen, wo e<strong>in</strong>gehende E-Mail <strong>in</strong> e<strong>in</strong>em <strong>in</strong>ternen <strong>Netzwerk</strong> verteilt werden muss,<br />

gibt es e<strong>in</strong>en (o<strong>der</strong> auch mehrere) Mailexchanger, <strong>der</strong> E-Mail aus dem Internet annimmt. Die<br />

<strong>in</strong>terne Weiterleitung erfolgt <strong>in</strong> e<strong>in</strong>em abgeschlossenen <strong>Netzwerk</strong>, <strong>in</strong> dem sich alle Rechner<br />

vertrauen können.<br />

In den frühen Zeiten des Internet war es notwendig, E-Mail über e<strong>in</strong>e Kette von SMTP-<br />

Servern zu übertragen, da sich nicht alle Rechner direkt erreichen konnten. Aus dieser Zeit<br />

stammt <strong>der</strong> Begriff des Mailrout<strong>in</strong>g. Heutzutage ist die Entwicklung <strong>der</strong> <strong>Netzwerk</strong>technologie<br />

und des Internet so weit, dass sich alle im Internet bef<strong>in</strong>dlichen Rechner gegenseitig<br />

erreichen können8 .<br />

Man kann also die sicherheitskritische Betrachtung des E-Mail-Verkehrs auf die Kommunikation<br />

zwischen Outgo<strong>in</strong>g-SMTP-Server, <strong>in</strong> <strong>der</strong> Rolle des SMTP-Client, und Mailexchanger<br />

als SMTP-Server reduzieren. Es s<strong>in</strong>d durchaus Systemarchitekturen denkbar, die<br />

von e<strong>in</strong>em so e<strong>in</strong>fachen Modell abweichen. Diese lassen sich aber darauf zurückführen.<br />

Die Angaben, die von e<strong>in</strong>em SMTP-Client während e<strong>in</strong>er SMTP-Sitzung gemacht werden,<br />

s<strong>in</strong>d fast beliebig. Nicht e<strong>in</strong>mal an Stellen, an denen e<strong>in</strong>e E-Mail-Adresse erwartet wird,<br />

muss wirklich e<strong>in</strong>e übertragen werden. Enthält e<strong>in</strong>e Zeichenkette, die als E-Mail-Adresse<br />

<strong>in</strong>terpretiert wird, ke<strong>in</strong> ’@’-Zeichen, geht <strong>der</strong> SMTP-Server normalerweise davon aus, dass<br />

es sich um e<strong>in</strong>en Benutzernamen <strong>in</strong>nerhalb se<strong>in</strong>es Systems handelt und hängt e<strong>in</strong> ’@’ gefolgt<br />

von se<strong>in</strong>em Doma<strong>in</strong>namen an. Die Identifikation des HELO o<strong>der</strong> EHLO-Befehls ist<br />

vollkommen beliebig.<br />

Empfängeradressen zu fälschen macht wenig S<strong>in</strong>n. Je<strong>der</strong> möchte, dass e<strong>in</strong>e von ihm<br />

verschickte E-Mail irgendwo ankommt.<br />

<strong>E<strong>in</strong></strong> ehrlicher Benutzer hat ke<strong>in</strong>en Grund, e<strong>in</strong>e falsche Absen<strong>der</strong>adresse anzugeben. Er<br />

hat Interesse daran, dass <strong>der</strong> Empfänger <strong>der</strong> E-Mail ihm antworten kann und möchte auch<br />

benachrichtigt werden, wenn bei <strong>der</strong> Übertragung <strong>der</strong> Nachricht etwas schief geht.<br />

<strong>E<strong>in</strong></strong> Versen<strong>der</strong> von unerwünschter E-Mail wird se<strong>in</strong>e Identität verschleiern. Er verschickt<br />

<strong>in</strong> <strong>der</strong> Regel sehr viele solche Nachrichten. Er muss damit rechnen, dass die Empfänger auf<br />

se<strong>in</strong>e Nachricht negativ antworten und so aufgrund ihrer Vielzahl se<strong>in</strong> Mailsystem lahmlegen9<br />

. Auch wäre es unter bestimmten Bed<strong>in</strong>gungen möglich, ihn juristisch zur Verantwortung<br />

zu ziehen.<br />

Alle an<strong>der</strong>en Werte e<strong>in</strong>er E-Mail s<strong>in</strong>d schon während <strong>der</strong> Übertragung Bestandteil des<br />

Mail-Body (siehe Kapitel 10.1.3). Der Versen<strong>der</strong> e<strong>in</strong>er E-Mail kann sich Werte für Absen<strong>der</strong><br />

(“From:”), Empfänger (“To:”), Betreff (“Subject:”) usw. und beliebige “Received:”-Zeilen<br />

ausdenken.<br />

Die e<strong>in</strong>zigen verlässlichen Angaben s<strong>in</strong>d die <strong>in</strong> <strong>der</strong> Received-Zeile des letzten MTA. Da<br />

dieser das System ist, von dem man se<strong>in</strong>e E-Mail direkt bezieht, kann man diesen <strong>E<strong>in</strong></strong>trägen<br />

8 Rechner h<strong>in</strong>ter e<strong>in</strong>em maskierenden Gateway muss man durchaus als “nicht im Internet bef<strong>in</strong>dlich”<br />

ansehen. Und solche, die sich h<strong>in</strong>ter e<strong>in</strong>er Firewall bef<strong>in</strong>den, s<strong>in</strong>d unter Umständen nicht erreichbar, obwohl<br />

sie sich im eigentlichen S<strong>in</strong>n im Internet bef<strong>in</strong>den. Nur bedeutet die Tatsache, dass e<strong>in</strong> Rechner e<strong>in</strong>en<br />

Verb<strong>in</strong>dungsaufbau ablehnt, natürlich nicht, dass man ihn nicht erreichen kann.<br />

9 Was für e<strong>in</strong>en Nutzen das Versenden e<strong>in</strong>er solchen Nachricht für den Absen<strong>der</strong> haben kann, soll hier<br />

nicht diskutiert werden. Es reicht aus, dass sowohl die Betreiber von Mailservern als auch die Empfänger<br />

maßgeblich belästigt werden.


152 KAPITEL 10. MAIL<br />

vertrauen.<br />

Kommando Argument Beschreibung<br />

HELO Systemname Beg<strong>in</strong>n, Name des sendenden Systems<br />

MAIL From: Absen<strong>der</strong>adresse Beg<strong>in</strong>n <strong>der</strong> Übermittlung<br />

RCPT To: Empfängeradresse Adressat <strong>der</strong> E-Mail<br />

DATA Daten... Brieftext, Ende durch e<strong>in</strong>e Zeile mit ”.”<br />

HELP Topic Hilfestellung<br />

VRFY Mailadresse Mailadresse verifizieren<br />

EXPN Mailadresse Mailadresse expandieren (z. B. Liste)<br />

RSET Senden abbrechen, Zurücksetzen<br />

NOOP nichts tun<br />

QUIT Verb<strong>in</strong>dung beenden<br />

10.2 sendmail<br />

Tabelle 10.3: Grundsätzliche SMTP-Befehle<br />

Das Paket sendmail ist e<strong>in</strong>es <strong>der</strong> ältesten INTERNET-Programme und wohl auch das mit<br />

dem schlechtesten Ruf. Am Anfang war es aufgrund diverser Sicherheitslücken e<strong>in</strong> beliebtes<br />

<strong>E<strong>in</strong></strong>falltor für Hacker und Co.; bei den Adm<strong>in</strong>istratoren ist es wegen se<strong>in</strong>er schwierigen Konfiguration<br />

gefürchtet. Dennoch hat es sich zum Standard für UNIX/LINUX-MTAs erhoben<br />

und verdient auf jeden Fall e<strong>in</strong>e genauere Betrachtung. Mit den Jahren ist sendmail, was<br />

die Sicherheit anbelangt, wesentlich besser geworden. Da es als OpenSource zur Verfügung<br />

steht, hatten Gott und die Welt Zeit und Muße, den Quellcode auf Fehler abzuklopfen und<br />

diese auszumerzen. Sendmail ist daher bei anständiger Konfiguration nicht unsicherer als<br />

an<strong>der</strong>e Dienste auf e<strong>in</strong>em UNIX-Server. Was die Konfiguration angeht, so haben sich die<br />

Programmierer die Kritik zu Herzen genommen und e<strong>in</strong> Tool entwickelt, welches die Arbeit<br />

erleichtert. Dieses Tool namens IDA ist bei SuSE im sendmail-Paket bereits enthalten und<br />

wird <strong>in</strong>tern von YaST aufgerufen.<br />

10.3 exim<br />

Die Installation e<strong>in</strong>es eigenen Mailservers auf e<strong>in</strong>er L<strong>in</strong>ux-Masch<strong>in</strong>e hat den entscheidenden<br />

Vorteil, dass man die von selbst o<strong>der</strong> von an<strong>der</strong>en erstellten Mails je<strong>der</strong>zeit abschicken<br />

kann. Somit muss nicht je<strong>der</strong> e<strong>in</strong>zelne Client mit e<strong>in</strong>em externen Mailserver die Verb<strong>in</strong>dung<br />

aufbauen, son<strong>der</strong>n es lassen sich firmen-/organisationseigene Maildienste realisieren. Dazu<br />

muss aber zunächst z.B. exim neu konfiguriert werden (z.B. mittels eximconfig. Hierfür<br />

muss man über SuperUser-Rechte verfügen.):<br />

hermes:/# eximconfig<br />

You already have an exim configuration. Cont<strong>in</strong>u<strong>in</strong>g with eximconfig<br />

will overwrite it. It will not keep any local modifications you have made.<br />

If that is not your <strong>in</strong>tention, you should break out now. If you do cont<strong>in</strong>ue,<br />

then your exist<strong>in</strong>g file will be renamed with .O on the end.<br />

[---Press return---]


10.4. POP 153<br />

Kommando Argument Beschreibung<br />

USER Name Das Argument identifiziert e<strong>in</strong>e Mailbox<br />

PASS Str<strong>in</strong>g Der Str<strong>in</strong>g enthält e<strong>in</strong> Mailbox-spezifisches Passwort<br />

QUIT Beendet die Verb<strong>in</strong>dung<br />

Tabelle 10.4: Kommandos im ”Authorization State”<br />

Kommando Argument Beschreibung<br />

STAT Liefert die Anzahl <strong>der</strong> gespeicherten Mails und die Größe<br />

<strong>der</strong> Mailbox zurück (<strong>in</strong> Byte)<br />

LIST Nummer Liefert die Nummer und Größe (<strong>in</strong> Bytes) aller Mails<br />

zurück Wird als Argument e<strong>in</strong>e Mail-Nummer angegeben,<br />

wird nur die Größe dieser Mail ausgegeben<br />

RETR Nummer Gibt die Mail mit <strong>der</strong> als Argument übergebenen Nummer<br />

aus<br />

DELE Nummer Löscht die Mail mit <strong>der</strong> übergebenen Nummer<br />

NOOP Bewirkt die Antwort ”+OK”. Dient zur Aufrechterhaltung<br />

<strong>der</strong> Verb<strong>in</strong>dung, ohne daß e<strong>in</strong> Time-Out auftritt<br />

RSET Setzt die aktive Verb<strong>in</strong>dung zurück. Noch nicht ausgeführte<br />

Än<strong>der</strong>ungen werden verworfen<br />

QUIT Beendet die Verb<strong>in</strong>dung und führt alle gespeicherten<br />

Än<strong>der</strong>ungen aus<br />

10.4 POP<br />

Tabelle 10.5: Kommandos im ”Transaction State”<br />

Für den Transport bis zum Server mit dem E-Mail Postfach f<strong>in</strong>det i.d.R. das SMTP-<br />

Protokoll Anwendung. Da Benutzerrechner, auch <strong>in</strong> Zeiten totaler Vernetzung, nicht permanent<br />

im Netz s<strong>in</strong>d wird die Übertragung zum Client des Empfängers getrennt geregelt.<br />

Häufig f<strong>in</strong>det, se<strong>in</strong>er <strong>E<strong>in</strong></strong>fachheit wegen, das Post Office Protocol <strong>in</strong> Version 3 (POP3) <strong>E<strong>in</strong></strong>satz.<br />

Auf <strong>der</strong> Seite des Servers bearbeitet <strong>der</strong> POP3-Daemon, entwe<strong>der</strong> durch (x)<strong>in</strong>etd o<strong>der</strong><br />

permanenten Daemon realisiert, auf Port 110 e<strong>in</strong>gehende Verb<strong>in</strong>dungen und stellt die E-<br />

Mails e<strong>in</strong>es, durch Postfachname und Kennwort authentifiziertes Postfach, den Clients zur<br />

Verfügung. <strong>E<strong>in</strong></strong>e komfortable Verwaltung <strong>der</strong> E-Mails bereits auf dem Postfach-Server ist<br />

mit POP3 nicht möglich. So muß e<strong>in</strong>e E-Mails vor dem lesen komplett vom Client geladen<br />

werden und wird <strong>in</strong> Regelfall nach <strong>der</strong> Übertragung vom Server gelöscht. Dies führt<br />

zu <strong>in</strong>konsistenzen beim gleichzeitigen <strong>E<strong>in</strong></strong>satz verschiedener Clients für e<strong>in</strong> Postfach. Denn<br />

Mails, welche bereits abgerufen wurden, s<strong>in</strong>d für die an<strong>der</strong>en Clients nicht mehr erreichbar.<br />

Das vollständige Abrufen aller E-Mails vom Server hat Vorteile wenn e<strong>in</strong>e Verb<strong>in</strong>dung per<br />

Modem realisiert ist, da diese nach erfolgter Übermittlung wie<strong>der</strong> getrennt werden kann<br />

und ke<strong>in</strong>e weitere Kosten verursacht.<br />

Da das POP3 Protokoll sehr e<strong>in</strong>fach aufgebaut ist kann man e<strong>in</strong> Postfach ggf. auch per<br />

Telnet bedienen:<br />

user@l<strong>in</strong>ux:/> telnet pop3.postfachserver.de 110<br />

Try<strong>in</strong>g a.b.c.d...


154 KAPITEL 10. MAIL<br />

+OK<br />

PASS password


10.5. IMAP 155<br />

Auf dem Server werden die E-Mails <strong>in</strong> zwei Ablageformaten verwaltet. Entwe<strong>der</strong> im<br />

Mailbox-Format, wo alle Mails <strong>in</strong> e<strong>in</strong>er fortlaufenden Datei je Nutzer im Verzeichnis<br />

/var/spool/mail gehalten werden o<strong>der</strong> im Maildir-Format, wo i.d.R. <strong>in</strong> e<strong>in</strong>em Verzeichnis<br />

im Homevezeichnis des Nutzers je e<strong>in</strong>er Datei pro E-Mail abgelegt wird.<br />

Das Mailbox-Format kann viele kle<strong>in</strong>e E-Mails, wie dies <strong>in</strong> <strong>der</strong> vorkommerziellen Ähra des<br />

Internets noch üblich war, ohne große Belastung <strong>der</strong> Server-Festplatten verarbeiten, verbraucht<br />

aber bei großen E-Mails viel Speicher. Beim Maildir-Format s<strong>in</strong>d die Ansprüche<br />

an die Massenspeicher höher dafür die Speicherbelastung ger<strong>in</strong>ger, da nur e<strong>in</strong>zelne Dateien<br />

verarbeitet werden müssen.<br />

Um mit POP3-Servern e<strong>in</strong>e Filterung <strong>der</strong> Mails zu ermöglichen muß dies beim MTA<br />

implementiert werden. Denn <strong>der</strong> MTA stellt ankommende E-Mails direkt <strong>in</strong> die lokale Mailbox.<br />

10.5 IMAP<br />

Für e<strong>in</strong>e komfortable Verwaltung von E-Mails bereits auf dem Postfach-Server wurde das<br />

Internet Message Access Protocol (IMAP) entwickelt. Im Gegensatz zu POP3 verbleiben<br />

die E-Mails auf dem Server. Damit kommt IMAP vorallem den Bedürfnissen mobiler Benutzern<br />

entgegen, denn auch bei gleichzeitiger Verwendung verschiedener Mail-Client-Software<br />

und/o<strong>der</strong> Webfrontend bleiben die Daten konsistent. Die aktuelle Versionsnummer ist 4 und<br />

hat e<strong>in</strong>en Komplexitätsgrad erreicht, welcher durch kaum e<strong>in</strong>en IMAP-Client vollständig<br />

unterstützt wird.<br />

Um die E-Mails e<strong>in</strong>es Postfaches lesen zu können wird, analog dem zum POP3 Protokoll,<br />

e<strong>in</strong>e Verb<strong>in</strong>dung zum Server aufgebaut. Bei IMAP werden im ersten Schritt nur die<br />

Hea<strong>der</strong><strong>in</strong>formationen <strong>der</strong> Mails im Postfach abgerufen und erst bei Bedarf, wenn <strong>der</strong> Inhalt<br />

<strong>der</strong> Mail beim Nutzer von Interesse ist (angezeigt durch Auswahl), <strong>der</strong> Body nachgeladen<br />

wird. Dies hat den Vorteil, dass e<strong>in</strong>e E-Mail mit großem Anhang nicht unnötig über e<strong>in</strong>e<br />

langsame Modemleitung gesendet wird, denn bei Bedarf kann e<strong>in</strong>e große E-Mail von e<strong>in</strong>em<br />

Term<strong>in</strong>al mit schnellerer Netzanb<strong>in</strong>dung geladen werden ohne auf die Verwaltung und<br />

Beantwortung <strong>der</strong> verbleibenden Mails verzichten zu müssen. <strong>E<strong>in</strong></strong> weiterer Vorteil ist die<br />

Organisation des Postfaches mittels Unterverzeichnisse.<br />

Für IMAP s<strong>in</strong>d Erweiterungen möglich, so z.B. <strong>der</strong> Zugriff auf Ordner durch verschiedene<br />

Nutzer. Damit lassen sich Arbeitsprozesse für Gruppen vere<strong>in</strong>fachen und Datenaufkommen<br />

durch Versenden von Kopien vermeiden. Diese Methode läßt sehr differenzierte adm<strong>in</strong>istrative<br />

<strong>E<strong>in</strong></strong>stellungen zu.<br />

Der Preis des Komforts ensteht durch aufwendige Serverimplementationen mit deutlich<br />

höheren Anfor<strong>der</strong>ungen an CPU und Speicher gegenber POP3-Servern. Desweiteren dauert<br />

e<strong>in</strong>e IMAP-Sitzung bis <strong>der</strong> Nutzer diese beendet (o<strong>der</strong> Time-outs beim Server die Verb<strong>in</strong>dung<br />

trennen). Damit s<strong>in</strong>d die Kosten für <strong>E<strong>in</strong></strong>wahlverb<strong>in</strong>dungen i.d.R. höher. Dies läßt sich<br />

aber durch den Wechseln zwischen POP3 und IMAP, was durch die meisten IMAP-Server<br />

unterstützt wird, kompensieren.<br />

Drei <strong>der</strong> beliebtesten IMAP-Server fr <strong>Unix</strong>/L<strong>in</strong>ux s<strong>in</strong>d Courier-, Cyrus- und UW-IMAP.<br />

Alle bieten sehr umfangreiche Funktionen und Erweiterungsmöglichkeiten und s<strong>in</strong>d für e<strong>in</strong>e<br />

große Anzahl an Postfächern (¿20k) geeignet. So lassen sich z.B. die Postfach-Nutzer<br />

von den Systemnutzern trennen, Mailfilter-Sprachen e<strong>in</strong>b<strong>in</strong>den und Quotas festlegen (was<br />

dr<strong>in</strong>gend empfohlen wird, da die Nutzer die Mailboxen meist als privaten File-Server missbrauchen).<br />

Es gibt daneben auch noch imap-Daemonen welche IMAP, sehr rudimentär und ohne Funktionen<br />

welche über POP3 h<strong>in</strong>aus gehen, bereitstellen.


156 KAPITEL 10. MAIL<br />

Lei<strong>der</strong> unterstützt kaum e<strong>in</strong> Client die Funktionen z.z. vollständig. Mulberry und p<strong>in</strong>e<br />

s<strong>in</strong>d zwei <strong>der</strong> seltenen Ausnahmen mit sehr umfangreichen IMAP-Funktionen.<br />

Die E-Mails werden entwe<strong>der</strong> <strong>in</strong> e<strong>in</strong>em Verzeichnis im Homeverzeichnis des Servers bereitgestellt<br />

o<strong>der</strong> unter /var/spool/imap <strong>in</strong> Nutzerverzeichnissen. Im Gegensatz zu POP3 ist nicht<br />

<strong>der</strong> MTA für die Abspeicherung neuer Mails zuständig, son<strong>der</strong>n <strong>der</strong> IMAP-Server selbst.<br />

Deshalb hat i.d.R. auch nur <strong>der</strong> IMAP-Server zugriff auf die entsprechenden Verzeichnisse,<br />

welche dieser u.a. mit separaten Index- und Quota-Tabellen für schnelleren Zugriff<br />

verwaltet. Die Haltung <strong>der</strong> E-Mails als quasi File-Server stellt erhöhte Ansprüche an die<br />

Festplatten und Speicherausstattung. Zum <strong>E<strong>in</strong></strong>en müssen die Speicherkapazitäten wachsen,<br />

da die durchschnittlich auf dem Server gehaltenen Datenmenge gegenber POP3 drastisch<br />

ansteigt. Zum An<strong>der</strong>en s<strong>in</strong>d die Zugriffzeiten ausschlaggebend für die Gesamtperformance<br />

des Servers, da die Anzahl <strong>der</strong> Dateien steigt. Dies s<strong>in</strong>d ausschlaggebenden Gründe warum<br />

IMAP-Server immer noch selten betrieben werden.<br />

Der Standard-Port für IMAP ist 443 und für IMAPS, die Variante über SSL/TLS, ist<br />

993 reserviert.<br />

10.6 Aufgaben<br />

10.6.1 Dienste<br />

1. Welche IP Adresse hat <strong>der</strong> Server www.stud.uni-goett<strong>in</strong>gen.de? Womit wird diese<br />

ermittelt?<br />

2. Wie heisst <strong>der</strong> Server 134.76.62.220 mit vollständigem Rechner- und Doma<strong>in</strong>namen?<br />

3. Welche TCP und UDP Ports s<strong>in</strong>d auf dem Dozentensystem offen? Welchen Diensten<br />

s<strong>in</strong>d diese zuzuordnen?


Kapitel 11<br />

Fileserver<br />

11.1 <strong>Unix</strong>-<strong>Netzwerk</strong>dateisystem - NFS<br />

NFS, das Network File System, ist wahrsche<strong>in</strong>lich <strong>der</strong> populärste und am häufigsten e<strong>in</strong>gesetzte<br />

RPC basierende <strong>Netzwerk</strong>dienst. Er erlaubt, entfernte Verzeichnisse auf an<strong>der</strong>en<br />

Hosts so zu benutzen, als lägen diese Dateien lokal vor. Dies wird durch e<strong>in</strong>e Mischung<br />

aus Kernel-Funktionalität auf <strong>der</strong> Client- und Server-Seite realisiert. Der Dateizugriff ist<br />

für den Client völlig transparent und funktioniert für e<strong>in</strong>e ganze Reihe von Server- und<br />

Host-Architekturen.<br />

NFS bildet jede Art des Zugriffs auf Verzeichnisse und Dateien über e<strong>in</strong>en Remote Procedure<br />

Call ab. Das erlaubt auf <strong>der</strong> e<strong>in</strong>en Seite den geme<strong>in</strong>samen schreibenden Zugriff von<br />

mehreren Clients auf e<strong>in</strong> Dateisystem. Auf <strong>der</strong> an<strong>der</strong>en Seite generieren die verschiedenen<br />

Remote Procedure Calls gerade auf kle<strong>in</strong>en Dateien e<strong>in</strong>en nicht unerheblichen Overhead.<br />

Dieses kann man sehr leicht ausprobieren <strong>in</strong> dem man e<strong>in</strong>fach mal die Zeit misst, die es<br />

braucht e<strong>in</strong> Verzeichnis mit sehr vielen kle<strong>in</strong>en Dateien auf e<strong>in</strong>er NFS-Quelle zu kopieren<br />

o<strong>der</strong> dasselbe mit e<strong>in</strong>er e<strong>in</strong>zigen gleichgrossen Datei anzustellen.<br />

NFS wird traditionell über das Transportprotokoll UDP abgewickelt, die Version 3<br />

erlaubt e<strong>in</strong>e alternative Verwendung von TCP. Es arbeitet als Remote Procedure Call<br />

(RPC) Dienst und erfor<strong>der</strong>t für se<strong>in</strong>en <strong>E<strong>in</strong></strong>satz das Vorhandense<strong>in</strong> des Portmap-Daemonen<br />

(portmap). Die beiden ”alten” Daemonen, die im Userspace agieren, heissen deshalb auch<br />

rpc.nfsd und rpc.mountd. Sie werden üblicherweise über e<strong>in</strong> geme<strong>in</strong>sames Startskript bei<br />

SuSE /etc/<strong>in</strong>it.d/nfsserver gestartet, welches bei se<strong>in</strong>er <strong>E<strong>in</strong></strong>richtung darauf achtet, dass <strong>der</strong><br />

Portmapper vorher aufgerufen wird. Die Daemonen des Kernelspaces werden mittels analogen<br />

Startskriptes aufgerufen, wobei für den NFS-Daemon standardmäßig vier Threads<br />

gestartet werden. Die Zahl kann für hohe Anfor<strong>der</strong>ungen jedoch stark gesteigert werden.<br />

In den wenigsten Fällen lassen sich beide NFS-Implementationen problemlos nebene<strong>in</strong>an<strong>der</strong><br />

<strong>in</strong>stallieren, da geme<strong>in</strong>same Dateien, wie das Startskript e<strong>in</strong>ge wesentliche Unterschiede<br />

aufweisen. Für wechselnde Experimentierumgebungen mit beiden Servertypen s<strong>in</strong>d Anpassungen<br />

m<strong>in</strong>desten <strong>der</strong> Init-Skripten notwendig.<br />

Die Unterstützung für das Network Filesystem muss sowohl im Server- Kernel als auch<br />

im Kernel <strong>der</strong> Clients aktiviert se<strong>in</strong>. Im Kernel des Servers sollte für Test- und Überwachungszwecke<br />

auch die Clientunterstützung aktiviert se<strong>in</strong>. So kann über e<strong>in</strong> e<strong>in</strong>faches Loopbackmounten<br />

von NFS-Freigaben sehr leicht überprüft werden, ob diese korrekt e<strong>in</strong>gerichtet<br />

s<strong>in</strong>d.<br />

NFS bietet e<strong>in</strong>e Reihe nützlicher Features:<br />

• Daten, auf die von allen Benutzern zugegriffen wird, können auf e<strong>in</strong>em zentralen Host<br />

gehalten werden - zentraler Fileserver für Home-Verzeichnisse. Clients mounten dieses<br />

157


158 KAPITEL 11. FILESERVER<br />

Verzeichnis während <strong>der</strong> Bootphase bzw. wärend des Log<strong>in</strong>s des Benutzers.<br />

• Daten, die sehr große Mengen an Plattenspeicher e<strong>in</strong>nehmen, können auf e<strong>in</strong>em e<strong>in</strong>zigen<br />

Rechner vorgehalten werden. So könnten etwa die Office-Pakete Star- o<strong>der</strong> OpenOffice<br />

an e<strong>in</strong>er Stelle gespeichert und adm<strong>in</strong>istriert werden.<br />

• Adm<strong>in</strong>istrative Daten können auf e<strong>in</strong>em Host gehalten werden. So kann die Mühe<br />

entfallen bestimmte Datensätze nach ihrer Aktualisierung auf viele<br />

Homeverzeichnisse. Clients mounten dieses Verzeichnis während <strong>der</strong> Bootphase bzw.<br />

wärend des Log<strong>in</strong>s des Benutzers. Die beson<strong>der</strong>e Stärke liegt hier <strong>in</strong> <strong>der</strong> Verb<strong>in</strong>dung<br />

mit NIS. So können sich die Benutzer dann an jedem System e<strong>in</strong>loggen und arbeiten<br />

dennoch mit nur e<strong>in</strong>em Satz von Dateien.<br />

• Daten, die sehr große Mengen an Plattenspeicher e<strong>in</strong>nehmen, können auf e<strong>in</strong>em e<strong>in</strong>zigen<br />

Rechner vorgehalten werden. So könnten etwa die Office-Pakete Star- o<strong>der</strong> OpenOffice<br />

an e<strong>in</strong>er Stelle gespeichert und adm<strong>in</strong>istriert werden.<br />

• Adm<strong>in</strong>istrative Daten können auf e<strong>in</strong>em Host gehalten werden. So kann die Mühe<br />

entfallen bestimmte Datensätze nach ihrer Aktualisierung auf viele Rechner zu verteilen.<br />

NFS kann sowohl auf das Transportprotokoll UDP als auch TCP zurückgreifen. Die<br />

Verwendung von TCP ist jedoch erst <strong>in</strong> den neueren Versionen 3 und 4 ünterstützt. Es<br />

arbeitet als Remote Procedure Call (RPC) Dienst und erfor<strong>der</strong>t deshalb für se<strong>in</strong>en <strong>E<strong>in</strong></strong>satz<br />

das Vorhandense<strong>in</strong> des Portmap-Daemonen (portmap). Die Daemonen zur Bereitstellung<br />

von NFS-Diensten werden üblicherweise über e<strong>in</strong> geme<strong>in</strong>sames Startskript, bei<br />

SuSE /etc/<strong>in</strong>it.d/nfsserver gestartet, welches bei se<strong>in</strong>er <strong>E<strong>in</strong></strong>richtung darauf achtet, dass <strong>der</strong><br />

Portmapper vorher aufgerufen wird. Die Zahl <strong>der</strong> NFS-Daemonen liegt standardmäßig bei<br />

vier Threads. Die Zahl kann für hohe Anfor<strong>der</strong>ungen jedoch stark gesteigert werden.<br />

Die Unterstützung für das Network Filesystem muss sowohl im Server-Kernel als auch im<br />

Kernel <strong>der</strong> Clients aktiviert se<strong>in</strong>. Alternativ zur statischen Variante kann die NFS-Fähigkeit<br />

des Kernels auch mittels Module nachgeladen werden.<br />

Se<strong>in</strong> Alter merkt man NFS jedoch auch an: Es verfolgt e<strong>in</strong> generalistischen Ansatz und<br />

versucht es jedem Anwendungszweck e<strong>in</strong>igermassen recht zu machen. Bis e<strong>in</strong>schliesslich<br />

Version 3 muss das Sicherheitskonzept von NFS als weitgehend nichtexistent bezeichnet<br />

werden, da die IP-basierte und überhaupt nicht nutzerbasierte Authentifizierung, Angriffe<br />

auf die Daten <strong>in</strong> Benutzer-Homeverzeichnissen kaum abhalten konnte.<br />

11.1.1 NFS im <strong>E<strong>in</strong></strong>satz<br />

<strong>E<strong>in</strong></strong>e Freigabe, bei NFS ”export” genannt, def<strong>in</strong>iert man auf dem Server <strong>in</strong> <strong>der</strong> Datei<br />

/etc/exports:<br />

/home 10.18.40.0/255.255.254.0(rw,async)<br />

/home *.my-doma<strong>in</strong>.site(rw,async)<br />

Im Beispiel wurde das Home-Verzeichnis aller Benutzer für alle Masch<strong>in</strong>en im Subnetz<br />

10.18.40.0 mit <strong>der</strong> Netzmaske 255.255.254.0 freigegeben. Freigaben lassen sich auf e<strong>in</strong>zelne<br />

Masch<strong>in</strong>en o<strong>der</strong> auch auf Rechnernamen vornehmen. Letzteres zeigt die zweite Freigabe an<br />

alle Rechner <strong>der</strong>en IP-Adresse aufgelöst Mitglied <strong>der</strong> Doma<strong>in</strong> my-doma<strong>in</strong>.site s<strong>in</strong>d. Der Beispielexport<br />

legt fest, dass das Clients auf <strong>der</strong> Freigabe schreiben dürfen, <strong>der</strong> Benutzer ”root”<br />

jedoch davon ausgenommen ist. Für alle Schreibvorgänge wird e<strong>in</strong>e sofortige Bestätigung


11.1. UNIX-NETZWERKDATEISYSTEM - NFS 159<br />

angefor<strong>der</strong>t. Mit <strong>der</strong> Option async für asynchrones Schreiben kann man das Schreib- und<br />

Leseverhalten verbessern, jedoch s<strong>in</strong>kt damit die Datensicherheit beim Schreiben. Dass <strong>der</strong><br />

Systemadm<strong>in</strong>istrator vom Zugriff ausgeschlossen wurde, ist jedoch nur e<strong>in</strong>e m<strong>in</strong>imale Hürde<br />

Angreifern gegenüber. Es h<strong>in</strong><strong>der</strong>t ke<strong>in</strong>er diese daran, e<strong>in</strong>fach die passenden Benutzer-IDs<br />

auf se<strong>in</strong>em lokalen System anzulegen und sich dann mit diesen IDs <strong>in</strong> den <strong>in</strong>teressierenden<br />

Verzeichnissen zu bewegen.<br />

<strong>E<strong>in</strong></strong> NFS-Server muss je nach <strong>E<strong>in</strong></strong>satzgebiet und Anzahl <strong>der</strong> zugreifenden Clients e<strong>in</strong>ges<br />

leisten. Von ihm hängt die Performance des Zugriffs auf entfernt liegende Dateien auf den<br />

Clients ab. <strong>E<strong>in</strong></strong>e leistungsfähige CPU, viel Hauptspeicher, nicht zu langsame Festplatten<br />

und e<strong>in</strong>e gute <strong>Netzwerk</strong>verb<strong>in</strong>dung s<strong>in</strong>d entscheidende Faktoren. Mit <strong>der</strong> heute üblichen<br />

Leistung auch <strong>der</strong> <strong>E<strong>in</strong></strong>stiegsprozessoren, die man auf vielen Clients f<strong>in</strong>den wird, kann e<strong>in</strong>e<br />

100 Mbit-Leitung durchaus bis an ihre theoretische Transfergrenze von über 10 Mbyte/s<br />

ausgelastet werden.<br />

Soll es nicht zu unnötigen Wartezeiten auf den Clients kommen, sollte <strong>der</strong> Server über<br />

e<strong>in</strong> o<strong>der</strong> mehrere Gigabit-<strong>Netzwerk</strong><strong>in</strong>terfaces verfügen, die idealerweise an <strong>der</strong> Switch angeschlossen<br />

s<strong>in</strong>d, welche die Verteilung an die Endgeräte übernimmt. Damit nicht alle Daten<br />

erneut von <strong>der</strong> Festplatte <strong>in</strong> den Hauptspeicher und dann über das <strong>Netzwerk</strong> geschaufelt<br />

werden müssen, macht e<strong>in</strong> großer Arbeitsspeicher S<strong>in</strong>n. Durch diesen wird e<strong>in</strong> Cache häufig<br />

angefor<strong>der</strong>ter Festplattenblöcke angelegt, welche dann direkt aus dem Hauptspeicher an<br />

den anfragenden Client ausgeliefert werden können.<br />

11.1.2 NFS und Portmapper<br />

Das Network File System benötigt Remote Procedure Calls (RPC). Der Portmapper - repräsentiert<br />

durch den Dienst portmap - ordnet RPC-Anfragen den korrekten Dienste zu.<br />

RPC-Prozesse benachrichtigen portmap, wenn sie starten. Des Weiteren teilen die Anfragen<br />

die überwachte Port-Nummer sowie die Nummern des RPC-Programms mit, die aufgerufen<br />

werden. Der Client kontaktiert den Portmapper auf dem Server mit e<strong>in</strong>er bestimmten<br />

RPC-Programmnummer. Dieser leitet dann den Client zur richtigen Port-Nummer um,<br />

damit er mit dem gewünschten Dienst kommunizieren kann.<br />

Da RPC-basierte Dienste für die Verb<strong>in</strong>dungen mit ankommenden Client-Anfragen von<br />

portmap abhängig s<strong>in</strong>d, muss er gestartet se<strong>in</strong>, bevor e<strong>in</strong>er dieser Dienste gestartet wird.<br />

An<strong>der</strong>nfalls beobachtet man sehr lange Wartezeiten zum Beispiel bis zum Abschluss e<strong>in</strong>es<br />

NFS-Mounts. Für die Zugriffssteuerung auf RPC-basierte Dienste des Servers kann man<br />

die Host-Zugriffsdateien (/etc/hosts.allow und /etc/hosts.deny) verwenden. Will man im<br />

Bereich RPC-Dienste debuggen, ist e<strong>in</strong>e Zugeordnung <strong>der</strong> Portnummern sehr nützlich.<br />

Der Befehl rpc<strong>in</strong>fo zeigt jeden RPC-basierten Dienst mit Port-Nummer, RPC-Programmnummer,<br />

Version und dem Typ des Transport-Protokolls (TCP o<strong>der</strong> UDP) an. Die<br />

Ausgabe im folgenden Beispiel-List<strong>in</strong>g zeigt den Portmapper auf e<strong>in</strong>er Masch<strong>in</strong>e, die den<br />

kernelbasierten NFS-Dienst verwendet:<br />

s01:~ # rpc<strong>in</strong>fo -p<br />

program vers proto port<br />

100000 2 tcp 111 portmapper<br />

100000 2 udp 111 portmapper<br />

100003 2 udp 2049 nfs<br />

100003 3 udp 2049 nfs<br />

100227 3 udp 2049 nfs_acl<br />

100003 2 tcp 2049 nfs<br />

100003 3 tcp 2049 nfs<br />

100227 3 tcp 2049 nfs_acl<br />

100024 1 udp 34607 status


160 KAPITEL 11. FILESERVER<br />

100021 1 udp 34607 nlockmgr<br />

100021 3 udp 34607 nlockmgr<br />

100021 4 udp 34607 nlockmgr<br />

100024 1 tcp 32778 status<br />

100021 1 tcp 32778 nlockmgr<br />

100021 3 tcp 32778 nlockmgr<br />

100021 4 tcp 32778 nlockmgr<br />

100005 1 udp 783 mountd<br />

100005 1 tcp 786 mountd<br />

100005 2 udp 783 mountd<br />

100005 2 tcp 786 mountd<br />

100005 3 udp 783 mountd<br />

100005 3 tcp 786 mountd<br />

Die erste Spalte gibt die Dienstnummer an, wobei dem Portmapper mit 100000 die<br />

niedrigste zugeordnet ist. Der NFS-Dienst erhielt die Nummer 100003 und <strong>der</strong> Mount-<br />

Dienst die 100005. Diese Zahlen s<strong>in</strong>d so festgelegt.<br />

Die zweite Spalte gibt Auskunft über die verwendete Protokollversion des Dienstes.<br />

Die gleiche Versionsnummer taucht zweimal auf, wenn <strong>der</strong> Dienst auf zwei verschiedenen<br />

Transportprotokollen, UDP und TCP, angeboten wird.<br />

Dabei hat die Protokollnummer des Portmappers nichts mit den Protokollnummern<br />

<strong>der</strong> an<strong>der</strong>en Dienste zu tun. Die Dienste selbst müssen jedoch <strong>in</strong> <strong>der</strong> Lage se<strong>in</strong>, mit dem<br />

jeweiligen Port-Mapper zusammenzuarbeiten.<br />

Der NFS-Server unterstützt die Versionen 2 und 3, <strong>der</strong> Mount-Server zusätzlich NFS-<br />

Version 1. Da Letzterer se<strong>in</strong>e Dienste sowohl auf TCP als auch auf UDP anbietet, taucht<br />

er sechsmal <strong>in</strong> <strong>der</strong> Liste auf.<br />

Die Art des Transportprotokolls, auf dem e<strong>in</strong> Dienst arbeitet, kann <strong>der</strong> dritten Spalte<br />

entnommen werden. Die vierte Spalte liefert die Portnummer und die fünfte den Namen<br />

des gestarteten Dienstes, wie er auch <strong>in</strong> <strong>der</strong> Prozesstabelle (z.B. durch ps aux) angezeigt<br />

werden würde.<br />

Das nächste Beispiel zeigt e<strong>in</strong>e Masch<strong>in</strong>e, die NFS über den klassischen Userspace-<br />

Dienst ausschließlich <strong>in</strong> den NFS-Protokollversionen 1 und 2 anbietet. Solche Masch<strong>in</strong>en<br />

wird man jedoch zunehmend seltener f<strong>in</strong>den, da die Implementierung von NFS im L<strong>in</strong>ux-<br />

Userspace nicht mehr weiterentwickelt wird. Zusätzlich läuft e<strong>in</strong> weiterer RPC-Dienst zur<br />

NIS-Authentifizierung, <strong>der</strong> aber ebenfalls kaum noch irgendwo Verwendung f<strong>in</strong>det.<br />

s05-alt:~ # rpc<strong>in</strong>fo -p<br />

Program Vers Proto Port<br />

100000 2 tcp 111 portmapper<br />

100000 2 udp 111 portmapper<br />

100021 1 udp 32768 nlockmgr<br />

100021 3 udp 32768 nlockmgr<br />

100021 4 udp 32768 nlockmgr<br />

100007 2 udp 803 ypb<strong>in</strong>d<br />

100007 1 udp 803 ypb<strong>in</strong>d<br />

100007 2 tcp 806 ypb<strong>in</strong>d<br />

100007 1 tcp 806 ypb<strong>in</strong>d<br />

100005 1 udp 829 mountd<br />

100005 2 udp 829 mountd<br />

100005 1 tcp 833 mountd<br />

100005 2 tcp 833 mountd<br />

100003 2 udp 2049 nfs<br />

100003 2 tcp 2049 nfs<br />

100011 1 udp 855 rquotad


11.1. UNIX-NETZWERKDATEISYSTEM - NFS 161<br />

100011 2 udp 855 rquotad<br />

100011 1 tcp 858 rquotad<br />

100011 2 tcp 858 rquotad<br />

11.1.3 NFS-Clients<br />

<strong>E<strong>in</strong></strong> Client versucht, e<strong>in</strong> Verzeichnis von e<strong>in</strong>em entfernten Host an se<strong>in</strong> lokales Verzeichnis<br />

zu mounten, genau wie er dies mit e<strong>in</strong>em physikalischen Gerät machen würde. Allerd<strong>in</strong>gs<br />

ist die für e<strong>in</strong> entferntes Verzeichnis zu verwendende Syntax an<strong>der</strong>s. Soll zum Beispiel<br />

das Verzeichnis /opt/applix vom Host ”server” an /opt/office auf <strong>der</strong> Masch<strong>in</strong>e gemountet<br />

werden, führt man folgenden Befehl aus:<br />

mount -t nfs -o ro,rsize=8192 server:/opt/openoffice /opt/office<br />

11.1.4 NFS-Server<br />

Die Freigaben, welche <strong>der</strong> NFS-Server zur Verfügung stellen soll, werden <strong>in</strong> <strong>der</strong> Datei<br />

/etc/exports def<strong>in</strong>iert:<br />

/usr 172.19.100.0/255.255.255.0(ro)<br />

/opt/applix 172.19.100.0/255.255.255.0(ro)<br />

/tmp/users 10.10.156.0/255.255.255.0(rw,no_root_squash)<br />

Der jeweilige NFS-Server muss je nach <strong>E<strong>in</strong></strong>satzgebiet und Anzahl <strong>der</strong> angeschlossenen<br />

Clients e<strong>in</strong>ges leisten. Von ihm hängt die Performance <strong>der</strong> Anwendungen auf den plattenlosen<br />

Geräten ab, da alle Zugriffe auf Dateien, Bibliotheken und Programme über ihn abgewickelt<br />

werden. <strong>E<strong>in</strong></strong>e leistungsfähige CPU, viel Hauptspeicher, nicht zu langsame Festplatten<br />

und e<strong>in</strong>e gute <strong>Netzwerk</strong>verb<strong>in</strong>dung s<strong>in</strong>d entscheidende Faktoren. Mit <strong>der</strong> heute üblichen<br />

Leistung auch <strong>der</strong> <strong>E<strong>in</strong></strong>stiegsprozessoren, die man auf vielen Clients f<strong>in</strong>den wird, kann e<strong>in</strong>e<br />

100 Mbit-Leitung durchaus bis an ihre theoretische Transfergrenze von über 10 Mbyte/s<br />

ausgelastet werden.<br />

Soll es nicht zu unnötigen Wartezeiten auf den Clients kommen, sollte <strong>der</strong> Server über<br />

e<strong>in</strong> o<strong>der</strong> mehrere Gigabit-<strong>Netzwerk</strong><strong>in</strong>terfaces verfügen, die idealerweise an <strong>der</strong> Switch angeschlossen<br />

s<strong>in</strong>d, welche die Verteilung an die Endgeräte übernimmt. Damit nicht alle Daten<br />

erneut von <strong>der</strong> Festplatte <strong>in</strong> den Hauptspeicher und dann über das <strong>Netzwerk</strong> geschaufelt<br />

werden müssen, macht e<strong>in</strong> großer Arbeitsspeicher S<strong>in</strong>n. Durch diesen wird e<strong>in</strong> Cache häufig<br />

angefor<strong>der</strong>ter Festplattenblöcke angelegt, welch dann direkt aus dem Hauptspeicher an den<br />

anfragenden Client ausgeliefert werden können.<br />

11.1.5 NFS und (Un)Sicherheit<br />

Der <strong>E<strong>in</strong></strong>satz von NFS bis e<strong>in</strong>schliesslich Version 3 ist unter Sicherheitsaspekten nicht problemfrei.<br />

Die Überprüfung ob e<strong>in</strong> bestimmtes Gerät auf den NFS-Server zugreifen darf o<strong>der</strong><br />

nicht erfolgt lediglich anhand <strong>der</strong> IP-Nummer. Es werden ke<strong>in</strong>erlei an<strong>der</strong>e Credentials, wie<br />

Benutzerkennung o<strong>der</strong> Passwort abgefragt. Das vere<strong>in</strong>facht den <strong>E<strong>in</strong></strong>satz von NFS im Umfeld<br />

von Diskless Clients o<strong>der</strong> zur Verteilung geme<strong>in</strong>samer Daten <strong>in</strong> nur lesbarem Zugriff.<br />

Sensible Daten sollten deshalb nicht mittels NFS-Freigaben bis zur Version 3 bereitgestellt<br />

werden. Hierfür sollten an<strong>der</strong>e <strong>Netzwerk</strong>dateisysteme, wie Samba o<strong>der</strong> das Andrew File<br />

System (AFS) e<strong>in</strong>gesetzt werden.<br />

Die Weiterentwicklung von NFS <strong>in</strong> <strong>der</strong> Version 4 br<strong>in</strong>gt e<strong>in</strong>ige Fortschritte <strong>in</strong> Richtung<br />

Authentifizierung und Verschlüsselung <strong>der</strong> Daten.


162 KAPITEL 11. FILESERVER<br />

Auf jeden Fall sollten Adm<strong>in</strong>istratoren nur NFS-Freigaben <strong>in</strong> das lokal zu bedienende<br />

Sub-Netz e<strong>in</strong>richten und e<strong>in</strong>en NFS-Server nicht gleichzeitig als Gateway <strong>in</strong>s Internet<br />

o<strong>der</strong> ähnliches e<strong>in</strong>setzen. NFS-Zugriffe kann man nur teilweise per Firewall beschränken,<br />

da NFS und zusätzliche Dienste we gen <strong>der</strong> RPC-Architektur nicht mit bestimmten fest<br />

vorgegebenen Portnummern verknüpft s<strong>in</strong>d.<br />

11.2 Andrew Filesystem (AFS)<br />

11.2.1 Die Clientseite<br />

Das Kürzel AFS steht für Andrew File System o<strong>der</strong> A distributed File System. AFS wurde<br />

ursprünglich von <strong>der</strong> Carnegie-Mellon University entwickelt. Kommerzialisiert wurde AFS<br />

später von Transarc. Diese Firma wurde 1994 von IBM gekauft. IBM ihrerseits stellte im<br />

Jahre 2000 AFS als Open Source zur Verfügung. Seit dieser Zeit wird AFS von <strong>der</strong> OpenAFS<br />

Community gepflegt. AFS wird nicht mehr offiziell von IBM weiterentwickelt. Das Andrew<br />

File System (AFS) ist e<strong>in</strong> <strong>Netzwerk</strong>-Dateisystem, welches Dateien netzwerk- und weltweit<br />

zur Verfügung stellen kann. Dieses Dateisystem arbeitet nach dem Client-Server-Pr<strong>in</strong>zip:<br />

Daten werden auf dem Fileserver gespeichert, <strong>der</strong> Zugriff erfolgt von Seiten <strong>der</strong> Clients.<br />

Die AFS-Unterstützung wird über e<strong>in</strong> Kernelmodul realisiert, welches alle benötigten<br />

Bibliotheksfunktionen zur Verfügung stellt. Zu diesem Modul werden Kernelprozesse gestartet,<br />

welche die <strong>Netzwerk</strong><strong>in</strong>teraktion realisieren. Ausschnitt <strong>der</strong> Anzeige aller geladenen<br />

Module und AFS-Prozesse:<br />

l<strong>in</strong>ux:~/test # lsmod<br />

Module Size Used by Ta<strong>in</strong>ted: PF<br />

[...]<br />

nls_cp437 4316 1 (autoclean)<br />

nls_iso8859-1 2812 1 (autoclean)<br />

smbfs 34384 1 (autoclean)<br />

snd-pcm-oss 45888 1 (autoclean)<br />

snd-mixer-oss 13560 0 (autoclean) [snd-pcm-oss]<br />

videodev 5600 0 (autoclean)<br />

libafs 442528 2<br />

[...]<br />

l<strong>in</strong>ux:~/test # ps aux | grep afs<br />

root 2001 0.0 0.0 0 0 ? SW Aug11 0:08 [afs_rxlistener]<br />

root 2003 0.0 0.0 0 0 ? SW Aug11 0:00 [afs_callback]<br />

root 2005 0.0 0.0 0 0 ? SW Aug11 0:00 [afs_rxevent]<br />

root 2007 0.0 0.0 0 0 ? SW Aug11 0:00 [afsd]<br />

root 2009 0.0 0.0 0 0 ? SW Aug11 0:00 [afs_checkserver]<br />

root 2011 0.0 0.0 0 0 ? SW Aug11 0:01 [afs_background]<br />

root 2013 0.0 0.0 0 0 ? SW Aug11 0:01 [afs_background]<br />

root 2015 0.0 0.0 0 0 ? SW Aug11 0:00 [afs_cachetrim]<br />

AFS besitzt gegenüber an<strong>der</strong>en verteilten Dateisystem wie z.B. Samba o<strong>der</strong> NFS e<strong>in</strong>ige<br />

Vorteile. Es arbeitet plattformunabhänig und verwendet zur Beschleunigung des Zugriffs<br />

auf jedem Client e<strong>in</strong> Cache von bis zu 2 GByte. Dieser dient zur Entlastung des <strong>Netzwerk</strong>es,<br />

zur Beschleunigung von Zugriffen und zur Überbrückung von Schwankungen, da AFS auf<br />

die Verwendung <strong>in</strong> Wide Area Networks angelegt ist. Für e<strong>in</strong>e grössere Ausfallsicherheit<br />

können Volumes über mehrere Fileserver repliziert werden.<br />

Der Integrationsaufwand <strong>in</strong> das jeweilige Betriebssystem fällt jedoch höher aus, als<br />

für die meisten bereits genannten Filesysteme. Es existieren Implementationen für W<strong>in</strong>-


11.2. ANDREW FILESYSTEM (AFS) 163<br />

dows 1 , MacOS X und diverse UNIXe <strong>in</strong>klusive L<strong>in</strong>ux. AFS kennt e<strong>in</strong>en weltweit e<strong>in</strong>deutigen<br />

Namensraum. Egal wo und an welcher Masch<strong>in</strong>e e<strong>in</strong> Benutzer arbeitet, <strong>der</strong> Pfad<br />

für e<strong>in</strong>en Benutzer stellt sich immer identisch dar. Der Pfadname beg<strong>in</strong>nt mit /afs (dem<br />

sogenannten Top Level). Auf <strong>der</strong> nächsten Hierarchieebene (Second Level) kommt <strong>der</strong> sogenannte<br />

Cell-Name. Die Zellennamen für bereits bestehende AFS-Zellen f<strong>in</strong>den sich auf:<br />

www.central.org/dl/cellservdb/CellServDB.<br />

Für die dar<strong>in</strong> enthaltenen Unterverzeichnisse darunter existieren ebenfalls Konventionen,<br />

die e<strong>in</strong>gehalten werden sollten. vgl. hierzu Tabelle 11.2.1 auf S. 163<br />

Name Beschreibung<br />

common Systemunabhängige Daten<br />

public Öffentliche Daten<br />

service Koord<strong>in</strong>ation und Konfiguration <strong>der</strong> Zelle<br />

sys type Systemspezifische Daten z.B. i586 l<strong>in</strong>ux<br />

usr Home-Verzeichnisse für Benutzer<br />

wsadm<strong>in</strong> Konfiguration von Clients<br />

Jedem Benutzer kann e<strong>in</strong> eigenes Volume zugeordnet werden. Sie bilden die Basis des<br />

ganzen Konzeptes, ihre Lage ist für den Client völlig transparent. Die Volumes können<br />

während des Betriebes von Fileserver zu Filserver verschoben werden. Auf diesem Volume<br />

wird e<strong>in</strong> Quota def<strong>in</strong>iert. AFS implementiert e<strong>in</strong>e ausgefeiltere Kontrolle über die Zugriffsberechtigungen<br />

mit Access Control Lists (ACLs), die anstelle <strong>der</strong> <strong>Unix</strong>-Rechte-Bits auf<br />

Verzeichnisebene zum <strong>E<strong>in</strong></strong>satz kommen.<br />

Je<strong>der</strong> Benutzer kann eigene Gruppen erzeugen und verwalten. Wenn e<strong>in</strong> normaler Benutzer<br />

ohne Systemrechte e<strong>in</strong>e Gruppe erzeugen will, muss er als Präfix se<strong>in</strong>en eigenen Namen<br />

verwenden. Dieses kann so aussehen: user:group Ausserdem s<strong>in</strong>d die folgenden drei System-<br />

Gruppen schon def<strong>in</strong>iert: system:anyuser, system:authuser und system:adm<strong>in</strong>istrators, diese<br />

Gruppen s<strong>in</strong>d <strong>in</strong> allen AFS Systemen vorhanden. system:anyuser s<strong>in</strong>d alle Benutzer (mit<br />

o<strong>der</strong> ohne gültigem Token), system:authuser alle Benutzer mit gültigem Token und system:adm<strong>in</strong>istrators<br />

Benutzer mit Adm<strong>in</strong>istrator-Privilegien.<br />

<strong>E<strong>in</strong></strong>e weitere Eigenschaft von AFS ist, dass es e<strong>in</strong>en eigenen Log<strong>in</strong> für die Freigabe se<strong>in</strong>es<br />

Inhaltes benötigt. NFS <strong>in</strong> den Versionen 2 und 3 arbeitet mit e<strong>in</strong>er IP-basierten Freigabe,<br />

die wenig <strong>E<strong>in</strong></strong>schränkungen gegen geplanten Missbrauch bietet. Durch die Verwendung von<br />

Kerberos 4 bzw. 5 Authentifizierung kann es deshalb bedenkenloser als an<strong>der</strong>e <strong>Netzwerk</strong>dateisysteme<br />

zur weltweiten Verteilung e<strong>in</strong>gesetzt werden.<br />

Kommando Beschreibung<br />

kpasswd wird benutzt um das AFS-Passwort zu än<strong>der</strong>n<br />

klog Erwerben e<strong>in</strong>es Tokens<br />

tokens Überblick <strong>der</strong> gültigen Tokens<br />

pts kann Benutzer und Gruppen anzeigen und verwalten<br />

fs kann ACLs und Quotas anzeigen/verwalten<br />

Tabelle 11.1: <strong>E<strong>in</strong></strong>ige wichtige AFS-Kommandos<br />

Mit <strong>der</strong> Authentifizierung gegenüber AFS, beim Log<strong>in</strong> über PAM o<strong>der</strong> durch das Kommando<br />

klog erhält <strong>der</strong> angemeldete Benutzer e<strong>in</strong> Token. Dieses Token<br />

gestattet den Zugrif auf das AFS-Filesystem. Das Token hat aber nur e<strong>in</strong>e begrenzte Gültigkeitsdauer.<br />

Nach Ablauf <strong>der</strong> Gültigkeit ist <strong>der</strong> Zugrif auf die AFS-Dateien wie<strong>der</strong> gesperrt.<br />

1 für die “Consumerw<strong>in</strong>dows” - Spielkonsolen W<strong>in</strong>95/98/ME - jedoch nur <strong>der</strong> Client


164 KAPITEL 11. FILESERVER<br />

Mit dem Befehl tokens kann man anschauen, welche Token gerade gehalten werden und<br />

wie lange die e<strong>in</strong>zelnen Token noch gültig s<strong>in</strong>d.<br />

Die Syntax <strong>der</strong> AFS-Kommandos ist etwas ungewohnt, da im Gegensatz zu den Standard-<br />

UNIX Kommandos die AFS-Kommandos nicht nur e<strong>in</strong>em Zweck dienen, son<strong>der</strong>n mehrere<br />

Kommandos zu sogenannten Command Suites zusammenfassen. Die Syntax ist bei allen<br />

AFS Kommandos identisch: command suite operation code -switch -flag<br />

Kommando Beschreibung<br />

fs help erklärt alle zur Verfügung stehenden Optionen<br />

fs lq zeigt def<strong>in</strong>iertes Quota für e<strong>in</strong> Verzeichnis an<br />

fs la listet die gesetzten Rechte<br />

fs sa setzt Rechte für e<strong>in</strong> Verzeichnis<br />

fs q Prozentangabe <strong>der</strong> Quotaauslastung<br />

Tabelle 11.2: Setzen und Ansehen <strong>der</strong> Zugriffsrechte<br />

Zur Anzeige <strong>der</strong> Rechte auf e<strong>in</strong> AFS-Verzeichnis (nur auf diese können AFS-Rechte<br />

gesetzt werden, auf e<strong>in</strong>zelne Dateien nicht) verwendet man folgendes Kommando:<br />

dirk@lsfks02:/afs/.uni-freiburg.de/www/ks/htdocs/systeme> fs la<br />

Access list for . is<br />

Normal rights:<br />

webadm<strong>in</strong>s rlidwka<br />

system:adm<strong>in</strong>istrators rlidwka<br />

www rl<br />

www.ks rl<br />

dsuchod rlidwka<br />

Die Ausgabe zeigt, dass die Benutzer-IDs <strong>der</strong> e<strong>in</strong>geloggten Person an <strong>der</strong> Masch<strong>in</strong>e nicht<br />

zw<strong>in</strong>gend mit <strong>der</strong> AFS-Benutzer-ID übere<strong>in</strong>stimmen müssen. An <strong>der</strong> L<strong>in</strong>ux-Masch<strong>in</strong>e ist<br />

dirk e<strong>in</strong>geloggt, mit dem Kommando klog dsuchod und anschliessen<strong>der</strong> Passwort-<strong>E<strong>in</strong></strong>gabe<br />

hat sich <strong>der</strong> angemeldete Benutzer e<strong>in</strong> AFS-Token für den Zugriff auf die dsuchod freigeschalteten<br />

AFS-Bereiche geholt.<br />

Durch <strong>E<strong>in</strong></strong>gabe des Kommandos fs quota o<strong>der</strong> kürzer fs q im AFS-Baum bekommt<br />

man die Meldung, wieviel Prozent des eigenen Quotas aufgebraucht s<strong>in</strong>d:<br />

dirk@log<strong>in</strong>02:/afs/.uni-freiburg.de/www/ks/htdocs/> fs q<br />

74% of quota used.<br />

<strong>E<strong>in</strong></strong>e ausführlichere Information mit Angabe des zur Verfügung stehenden und verbrauchten<br />

Speicherplatzes bekommt man mit:<br />

dirk@log<strong>in</strong>02:/afs/.uni-freiburg.de/www/ks/htdocs/> fs lq<br />

Volume Name Quota Used %Used Partition<br />

www.ks 400000 295334 74% 73%<br />

Die Zugriffsberechtigungen von AFS beziehen sich immer auf e<strong>in</strong> ganzes Verzeichnis und<br />

alle dar<strong>in</strong> enthaltenen Dateien. Sie beziehen sich nicht automatisch auf enthaltene Unterverzeichnisse.<br />

Wenn die Zugriffsberechtigung für e<strong>in</strong>e e<strong>in</strong>zelne Datei geän<strong>der</strong>t werden soll,<br />

muss diese e<strong>in</strong> an<strong>der</strong>es Verzeichnis mit den gewünschten Zugriffsrechten verschoben werden.<br />

Die Zugriffsberechtigung wird dabei vom übergordneten Verzeichnis geerbt. AFS def<strong>in</strong>iert<br />

<strong>in</strong>sgesammt sieben Rechtearten, dabei beziehen sich vier Zugriffsrechte auf das Verzeichnis.<br />

Drei weitere Berechtigungen beziehen sich auf die Dateien <strong>in</strong>nerhalb des Verzeichnisses


11.2. ANDREW FILESYSTEM (AFS) 165<br />

Kürzel AFS-Recht Beschreibung<br />

a adm<strong>in</strong>ister die ACLs än<strong>der</strong>n<br />

d delete Dateien und Verzeichnisse<br />

löschen o<strong>der</strong> verschieben<br />

i <strong>in</strong>sert Neue Dateien und Verzeichnisse<br />

anlegen<br />

l lookup Inhalt des Verzeichnis kann<br />

aufgelistet werden und e<strong>in</strong><br />

Wechsel <strong>in</strong> dieses Verzeichnis<br />

ist erlaubt<br />

r read Inhalt <strong>der</strong> Dateien lesen. Dazu<br />

gehört z.B. auch ls -l<br />

w write Än<strong>der</strong>n von Dateien<br />

k lock Ermöglicht das Ausführen<br />

von Programmen die über<br />

Systemcalls Dateien sperren<br />

(locks)<br />

Tabelle 11.3: AFS Rechteschema<br />

Beim Setzen des Rechtelevels lookup kann <strong>in</strong> das Verzeichnis gewechselt werden. Der<br />

Inhalt <strong>der</strong> Dateien kann nur dann auch gelesen werden, wenn ebenfalls die Berechtigung<br />

read zur Verfügung steht. Die wichtigsten Berechtigungen lassen sich zusammenfassen, wie<br />

<strong>in</strong> <strong>der</strong> Tabelle zur AFS Rechtegruppierung gezeigt.<br />

Zusammenfassung Beschreibung<br />

all alle Berechtigungen (rlidwka)<br />

none ke<strong>in</strong>e Berechtigung<br />

read nur lesen (rl)<br />

write lesen und schreiben (rlidwk), d.h. alle ausser a<br />

Tabelle 11.4: AFS Rechtegruppierung<br />

<strong>E<strong>in</strong></strong> nettes Feature ist, dass Rechte<strong>in</strong>haber im AFS selbst Verzeichnisse für an<strong>der</strong>e Benutzer<br />

bzw. Gruppen freigeben können. Hierzu dient zuerst e<strong>in</strong>mal das Kommando pts.<br />

pts creategroup dsuchod:systeme<br />

group dsuchod:systeme2 has id -754<br />

pts adduser user01 dsuchod:systeme<br />

fs sa testdir dsuchod:systeme rliwka<br />

Das Ergebnis des Gruppenanlegens ist e<strong>in</strong>gerückt dargestellt. Anschliessend kann e<strong>in</strong> User<br />

(hier: user01) o<strong>der</strong> mehrere dieser Gruppe h<strong>in</strong>zugefügt werden. Mit dem AFS-Kommando<br />

fs sa testdir dsuchod:systeme rliwka wird dann e<strong>in</strong> Rechtemuster auf das Verzeichnis<br />

testdir für die Gruppe dsuchod:systeme e<strong>in</strong>getragen. Dieses Kommando muss entsprechend<br />

für alle gewünschten Verzeichnisse wie<strong>der</strong>holt werden. Dabei sollte man bedenken, dass<br />

auch übergeordnete Verzeichnisse zum<strong>in</strong>dest e<strong>in</strong> Lookup-Recht für die Gruppe bekommen<br />

sollten. Das Anzeigen <strong>der</strong> Rechte im Verzeichnis testdir liefert dann folgendes:<br />

dirk@l<strong>in</strong>ux02:/afs/.uni-freiburg.de/www/ks/htdocs/systeme> fs la<br />

Access list for . is<br />

Normal rights:<br />

dsuchod:systeme rliwka


166 KAPITEL 11. FILESERVER<br />

webadm<strong>in</strong>s rlidwka<br />

system:adm<strong>in</strong>istrators rlidwka<br />

www rl<br />

www.ks rl<br />

dsuchod rlidwka<br />

11.3 File Transfer Protocol<br />

11.3.1 Dateiarchiv - FTP-Server<br />

<strong>E<strong>in</strong></strong>e <strong>der</strong> ältesten Internet-Anwendungen ist <strong>der</strong> Transport von Dateien. Hierfür wurde<br />

e<strong>in</strong> eigenes Protokoll geschaffen. FTP-Server haben heutzutage die Aufgabe große Datenmengen,<br />

meistens Softwarebestände e<strong>in</strong>fach zugänglich zu machen. Meistens wird unter<br />

L<strong>in</strong>ux <strong>der</strong> proftpd e<strong>in</strong>gesetzt. Dieser wird über die Datei /etc/proftpd.conf e<strong>in</strong>gerichtet.<br />

Der FTP-Server kann als standalone Prozess immer im H<strong>in</strong>tergrund laufen o<strong>der</strong> über den<br />

Internet-Superdämon <strong>in</strong>etd o<strong>der</strong> x<strong>in</strong>etd bei Bedarf gestartet werden. Ersteres bedeutet<br />

höheren Speicherverbrauch, die zweite Lösung benötigt durch den Start mehr Resourcen<br />

und braucht etwas längere Antwortzeiten.<br />

11.3.2 FTP-Clients<br />

Nach dem <strong>E<strong>in</strong></strong>loggen bef<strong>in</strong>det man sich auf <strong>der</strong> Kommandoebene von FTP. Hier steht<br />

nicht <strong>der</strong> gesamte UNIX-Befehlswortschatz, son<strong>der</strong>n nur e<strong>in</strong>ige Befehle zur Dateiverwaltung<br />

und zum Datentransport zur Verfügung. Im folgenden sei mit Arbeitsrechner <strong>der</strong> Rechner<br />

geme<strong>in</strong>t, auf dem FTP gestartet wurde, und Zielrechner sei <strong>der</strong> Rechner, mit dem man per<br />

FTP die Verb<strong>in</strong>dung hergestellt hat.<br />

11.4 Das M<strong>in</strong>imal-FTP (TFTP)<br />

Das Trivial File Transfer Protocol (TFTP) 2 dient <strong>in</strong> erster L<strong>in</strong>ie zur Übertragung von zu<br />

bootenden Netzkernels 3 o<strong>der</strong> e<strong>in</strong>es PXE-Bootimages 4 für spezielle Programme zu e<strong>in</strong>em<br />

sehr frühen Zeitpunkt des Rechnerstarts.<br />

Das Protokoll wird zu Beg<strong>in</strong>n des Bootvorganges ausgeführt und muss meistens neben<br />

<strong>der</strong> BOOTP-Implentation auf e<strong>in</strong>em 16 kByte bzw. 32 kByte EPROM Platz f<strong>in</strong>den.<br />

Deshalb ist es auf ger<strong>in</strong>gen Codeumfang optimiert. tftp, die Client-Applikation, braucht<br />

man <strong>in</strong>zwischen häufiger mal wie<strong>der</strong> auf se<strong>in</strong>er Masch<strong>in</strong>e, da viele Embedded Devices e<strong>in</strong>en<br />

e<strong>in</strong>gebauten TFTP-Server zum Update ihres Flash-ROMs haben. Es lässt sich ählich wie<br />

ftp <strong>in</strong>teraktiv bedienen, wenn auch <strong>der</strong> Funktionsumfang vorgebenermassen ziemlich e<strong>in</strong>geschränkt<br />

ist.<br />

2 TFTP wird <strong>in</strong> den folgenden RFCs beschrieben:<br />

• RFC1350 : ”The TFTP Protocol (REVISION 2)”, Juli 1992<br />

• RFC2090 : ”TFTP Multicast Option”, Februar 1997<br />

• RFC2347 : ”TFTP Option Extension”, Mai 1998<br />

• RFC2348 : ”TFTP Blocksize Option”, Mai 1998<br />

• RFC2349 : ”TFTP Timeout Interval and Transfer Size Options”, Mai 1998<br />

3 Welche Optionen dieser enthalten muss, welche Anpassungen notwendig s<strong>in</strong>d und wie man ihn mit e<strong>in</strong>er<br />

entsprechenden Bootsignatur versieht, wird <strong>in</strong> den folgenden Abschnitten erklärt<br />

4 Die notwendigen Erweiterungen von TFTP im Zusammenhang mit PXE f<strong>in</strong>den sich im RFC2349


11.4. DAS MINIMAL-FTP (TFTP) 167<br />

Kommando Funktion<br />

cd Ver- Verzeichnisse wechseln<br />

zeichnis<br />

mkdir Verzeichnis<br />

Verzeichnisse anlegen<br />

rmdir Verzeichnis<br />

Verzeichnisse löschen auf dem Zielrechner<br />

lcd Ver- Verzeichnis auf Arbeitsrechner wechseln<br />

zeichnis<br />

dir zeigt das Directory des Zielrechners an<br />

ldir zeigt das Directory des Arbeitsrechners an<br />

!Kommando aktiviert e<strong>in</strong>e Shell auf dem Arbeitsrechner und führt Kommando<br />

aus<br />

put Da- kopiert Date<strong>in</strong>ame auf den Zielrechner<br />

te<strong>in</strong>ame<br />

mput Date<strong>in</strong>ame(n)<br />

wie put, nur s<strong>in</strong>d hier die Wildcards ** und ? erlaubt<br />

get Da- kopiert Date<strong>in</strong>ame vom Zielrechner auf den Arbeitsrechner<br />

te<strong>in</strong>ame<br />

mget Date<strong>in</strong>ame(n)<br />

entspricht get mit Platzhaltern<br />

ascii schaltet auf den für den Transport von ASCII-Dateien notwendigen<br />

ASCII-Modus um, Vore<strong>in</strong>stellung von Mickey-<br />

FTP<br />

b<strong>in</strong> schaltet auf den für den Transport von b<strong>in</strong>ären Daten notwendigen<br />

B<strong>in</strong>ärmodus um<br />

? o<strong>der</strong> help zeigt e<strong>in</strong>e Liste <strong>der</strong> zur Verfügung stehenden Befehle an<br />

quit beendet FTP<br />

Tabelle 11.5: <strong>E<strong>in</strong></strong>ige wichtige FTP-Kommandos


168 KAPITEL 11. FILESERVER<br />

In aktuellen L<strong>in</strong>ux-Distributionen stehen oft mehrere Implementierungen zur Auswahl.<br />

Der <strong>in</strong>.tftpd ist die klassische Version, <strong>der</strong> atftpd kann mehr und kommt besser mit<br />

PXE klar. Die optimale Konfiguration <strong>in</strong> <strong>der</strong> jeweiligen Umgebung bekommt man wohl am<br />

besten durch Tests heraus. Es kann jedoch immer nur e<strong>in</strong> Dienst gleichzeitig auf e<strong>in</strong>em Port<br />

betrieben werden. Der TFTP-Standard-Port ist UDP 69.<br />

TFTP bietet ke<strong>in</strong>en Schutz durch Passwortauthentifizierung und sollte deshalb mit<br />

Vorsicht, d.h. m<strong>in</strong>destens durch Beschränkung des Hauptverzeichnisses auf den benötigten<br />

Bereich, aufgesetzt werden. Dazu kann durch den (x)<strong>in</strong>etd e<strong>in</strong> TFTP-Root angegeben<br />

werden, was e<strong>in</strong>en Zugriff auf höhere Verzeichnis-Ebenen des Servers verh<strong>in</strong><strong>der</strong>t. Zur Illustration<br />

dienen die nachfolgenden Ausschnitte aus den jeweiligen Konfigurationsdateien.<br />

Der folgende Ausschnitt zeigt e<strong>in</strong> Teil <strong>der</strong> /etc/<strong>in</strong>etd.conf.<br />

[...]<br />

#<br />

# Tftp service is provided primarily for boot<strong>in</strong>g. Most sites<br />

# run this only on mach<strong>in</strong>es act<strong>in</strong>g as "boot servers".<br />

#<br />

tftp dgram udp wait nobody /usr/sb<strong>in</strong>/tcpd <strong>in</strong>.tftpd /boot<br />

bootps dgram udp wait root /usr/sb<strong>in</strong>/bootpd bootpd -c /nfsroot<br />

#<br />

[...]<br />

O<strong>der</strong>: (Ausschnitt <strong>der</strong> /etc/x<strong>in</strong>etd.conf)<br />

[...]<br />

# disabled = bootps<br />

# disabled = tftp<br />

[...]<br />

service tftp<br />

{<br />

socket_type = dgram<br />

protocol = udp<br />

wait = yes<br />

user = nobody<br />

only_from = 172.16.0.0/16 10.0.0.0/8<br />

server = /usr/sb<strong>in</strong>/<strong>in</strong>.tftpd<br />

server_args = /nfsroot<br />

}<br />

<strong>E<strong>in</strong></strong>e mo<strong>der</strong>ne Implementation von TFTP ist <strong>der</strong> atftpd, welcher auch im Standalone-<br />

Betrieb e<strong>in</strong>gesetzt werden kann. Die <strong>E<strong>in</strong></strong>stellungen erfolgen <strong>in</strong> den neueren L<strong>in</strong>ux-Distributionen<br />

mittels Sysconfig-Datei: /etc/sysconfig/atftpd. Hier entnimmt das Runlevel-Skript üblicherweise<br />

die Startoptionen. Der erfolgreiche Start des TFTP-Servers (/etc/<strong>in</strong>it.d/atftpd<br />

start) zeigt sich im System-Logfile auf diese Weise:<br />

Oct 6 21:50:39 hermes atftpd[25183]: Advanced Trivial FTP server started (0.7)<br />

...<br />

Oct 6 21:55:12 hermes atftpd[25184]: Serv<strong>in</strong>g /nfsroot/10.0/boot/vml<strong>in</strong>uz to \<br />

10.20.0.1:41470<br />

Angenommen, das Kernel-Image liegt im Verzeichnis /nfsroot/10.0/boot und trägt den Namen<br />

vml<strong>in</strong>uz. Dann könnte <strong>der</strong> Test auf e<strong>in</strong> funktionierendes TFTP so aussehen:


11.5. WEITERE FILESERVER-KONZEPTE 169<br />

rechner02:~ # atftp bootserver.mydoma<strong>in</strong>.site<br />

tftp> get /nfsroot/10.0/boot/vml<strong>in</strong>uz<br />

tftp> quit<br />

rechner02:~ # ls -lha vml<strong>in</strong>uz<br />

-rw-r--r-- 1 root root 1.5M Oct 6 17:38 vml<strong>in</strong>uz<br />

Liegt dann <strong>der</strong> Kernel <strong>in</strong> <strong>der</strong> richtigen Größe <strong>in</strong> dem Verzeichnis, aus dem man den TFTP-<br />

Client heraus gestartet hat, g<strong>in</strong>g alles glatt. Der <strong>E<strong>in</strong></strong>trag im Logfile sieht dann wie oben<br />

gezeigt aus.<br />

11.5 Weitere Fileserver-Konzepte<br />

Die Idee, Festplattenkapazitäten zu zentralisieren und e<strong>in</strong>er ganzen Reihe verschiedener Masch<strong>in</strong>en<br />

übers e<strong>in</strong> <strong>Netzwerk</strong> zu Verfügung zu stellen, existiert schon lange. Im kommerziellen<br />

Umfeld haben sich neben den Lösungen mit sogenannten Network Attached Storage (NAS),<br />

die dateibasierte Dienste wie NFS o<strong>der</strong> SMB bereistellen, Storage Area Networks (SAN)<br />

etabliert, die meistens auf e<strong>in</strong>er eigenen vom klassischen LAN unabhängigen Fibre-Channel<br />

Fabric basieren.<br />

Die Preise <strong>der</strong> e<strong>in</strong>zelnen Komponenten liegen dabei weit über dem Gewohnten im privaten<br />

Bereich. Für den Anschluss von preiswerteren und leistungsärmeren Endgeräten versucht<br />

die Industrie den iSCSI-Standard zu verbreiten. L<strong>in</strong>ux-Masch<strong>in</strong>en können iSCSI benutzen,<br />

da <strong>der</strong> Kernel die notwendige Treiberunterstützung mitbr<strong>in</strong>gt. Der Overhead ist<br />

für den e<strong>in</strong>fachen Standardarbeitsplatz jedoch immer noch sehr hoch, weshalb sich die Verbreitung<br />

noch sehr <strong>in</strong> Grenzen hält. Die Abbildung zeigt, dass Dateien o<strong>der</strong> Blöcke auf<br />

Server <strong>Netzwerk</strong><br />

Client<br />

Anwendung<br />

VFS<br />

Dateisystem<br />

Blockgerät<br />

ftp, scp, http<br />

LUFS<br />

NFS, SMB<br />

iSCSI, AoE, NBD<br />

Anwendung<br />

VFS<br />

Dateisystem<br />

Blockgerät<br />

Abbildung 11.1: Arbeitsweise von Blockgeräten und Dateisystemen<br />

verschiedenen Ebenen ausgetauscht werden können. Es wird hier nicht berücksichtigt wo<br />

Server und Client letztendlich implementiert s<strong>in</strong>d, son<strong>der</strong>n auf welcher Ebene sie die Daten<br />

<strong>in</strong>terpretieren. Das L<strong>in</strong>ux Userland Filesystem (LUFS) spielt e<strong>in</strong>e Son<strong>der</strong>rolle - es kann<br />

beispielsweise die Dateien e<strong>in</strong>es FTP-Servers als Dateisystem e<strong>in</strong>hängen.<br />

Dieser durchaus s<strong>in</strong>nvolle Ansatz lässt sich mit e<strong>in</strong>igen <strong>E<strong>in</strong></strong>schränkungen auch weitaus<br />

günstiger realisieren. Parallel zu den kommerziellen Implementierungen von SANs haben<br />

sich Kernel-Entwickler darangemacht, Ähnliches auch für L<strong>in</strong>ux zu implementieren. Seit vier<br />

Jahren liegt <strong>der</strong> Code für das Network Block Device dem Ma<strong>in</strong>stream-Kernel bei. Ausgehend<br />

von diesem hat es weitere Entwicklungen auch für durchaus beson<strong>der</strong>e Anfor<strong>der</strong>ungen<br />

gegeben.


170 KAPITEL 11. FILESERVER<br />

11.6 Network Block Devices<br />

<strong>Netzwerk</strong>blockgeräte und <strong>Netzwerk</strong>dateisysteme unterscheiden sich deutlich vone<strong>in</strong>an<strong>der</strong>,<br />

selbst wenn <strong>der</strong> <strong>E<strong>in</strong></strong>satzzweck am Ende recht ähnlich se<strong>in</strong> kann. Dateisysteme kümmern sich<br />

um den Zugriff auf Dateien - Blockgeräte abstrahieren <strong>in</strong> <strong>der</strong> Regel Hardware (z.B. Festplatten)<br />

und erlauben den Datenaustausch <strong>in</strong> Blöcken. <strong>E<strong>in</strong></strong>e Verb<strong>in</strong>dung zwischen beiden<br />

ergibt sich, wenn gewöhnliche Dateisysteme auf blockbasierte Geräte aufgebracht 5 werden,<br />

um die Dateien <strong>in</strong> Form von Blöcken festzuhalten.<br />

<strong>E<strong>in</strong></strong> mo<strong>der</strong>nes Betriebssystem steigert die Performance, <strong>in</strong>dem es Blocktransfers zwischenspeichert,<br />

d.h. Blöcke werden nicht sofort auf Platte geschrieben, son<strong>der</strong>n zuerst noch<br />

im Speicher festgehalten.<br />

In dem sich e<strong>in</strong> Adm<strong>in</strong>istrator auf e<strong>in</strong> <strong>Netzwerk</strong>dateisystem festlegt, bestimmt er die<br />

erlaubten Dateienarten, -größen und Zugriffssteuerungen. So kennt beispielsweise Samba<br />

<strong>in</strong> <strong>der</strong> Default-Konfiguration ke<strong>in</strong>e speziellen <strong>Unix</strong>-Dateien wie Sockets und Named Pipes,<br />

welches e<strong>in</strong>ige Applikationen und grafische L<strong>in</strong>ux-Desktops stolpern lässt. Blockdevices erlauben<br />

pr<strong>in</strong>zipiell den <strong>E<strong>in</strong></strong>satz beliebiger blockbasierter Dateisysteme, völlig unabhängig<br />

davon, ob sie lokal e<strong>in</strong>gebunden werden o<strong>der</strong> per <strong>Netzwerk</strong> zur Verfügung stehen. Das erweitert<br />

die Auswahl ganz erheblich und erlaubt es speziellen Anfor<strong>der</strong>ungen, wie Kompression<br />

<strong>der</strong> Daten, zu berücksichtigen.<br />

<strong>Netzwerk</strong>blockgeräte lassen sich wie <strong>Netzwerk</strong>dateisysteme sowohl nur lesbar als auch<br />

schreibbar exportieren. Der wesentliche Unterschied ergibt beim geme<strong>in</strong>samen Schreiben auf<br />

e<strong>in</strong>e Ressource. <strong>Netzwerk</strong>dateisysteme stellen hier beispielsweise Lock<strong>in</strong>g-Mechanismen bereit<br />

o<strong>der</strong> koord<strong>in</strong>ieren Dateizugriffe so, dass ke<strong>in</strong>e Daten beschädigt werden. <strong>Netzwerk</strong>blockgeräte<br />

betreiben deutlich weniger Aufwand, d.h. e<strong>in</strong> Block wird gelesen o<strong>der</strong> geschrieben.<br />

Sicherheitsmechanismen beschränken sich darauf, dass Blocktransfers atomar durchgeführt<br />

werden. Blockgeräte <strong>in</strong>teressieren sich <strong>in</strong>sbeson<strong>der</strong>e nicht dafür, ob die Blöcke mit e<strong>in</strong>em<br />

Dateisystem <strong>in</strong> Verb<strong>in</strong>dung stehen, d.h. sie haben ke<strong>in</strong>e Ahnung von <strong>der</strong> darüberliegenden<br />

Datenschicht und ihrer Organisation, was <strong>der</strong> verteilten Nutzung e<strong>in</strong>es <strong>Netzwerk</strong>blockgeräts<br />

zusammen mit e<strong>in</strong>em gewöhnlichen blockbasierten Dateisystem e<strong>in</strong>ige Schwierigkeiten bereit.<br />

Würden mehrere Clients geme<strong>in</strong>sam e<strong>in</strong> <strong>Netzwerk</strong>blockgerät ausgestattet mit e<strong>in</strong>em<br />

Dateisystem beschreiben, so gäbe es ke<strong>in</strong>e Instanz, die den verteilten Zugriff regelt. Die<br />

Dateisysteme, die letztendlich e<strong>in</strong> geme<strong>in</strong>sames Blockgerät benutzten, wüssten nichts von<br />

ihrer gegenseitigen Existenz und ke<strong>in</strong>es davon würde es ”begreifen” bzw. berücksichtigen,<br />

dass sich Blöcke plötzlich wie von Zauberhand verän<strong>der</strong>n. Durch lokales Cach<strong>in</strong>g (und damit<br />

noch weniger Synchronisation) ist dann das Wirr-Warr perfekt und die Dateisysteme auf<br />

den unterschiedlichen Clients sehen bald nur noch un<strong>in</strong>terpretierbaren Müll, welches <strong>in</strong> den<br />

meisten Fällen fatale Auswirkungen haben dürfte. Dieses Problem spielt jedoch für spezielle<br />

Szenarien, wie beispielsweise den Betrieb von L<strong>in</strong>ux Diskless Clients nur e<strong>in</strong>e untergeordnete<br />

Rolle.<br />

Bei <strong>Netzwerk</strong>dateisystemen werden viele dieser Probleme vom Kernel abgenommen. Die<br />

Server für die ”e<strong>in</strong>fachen” <strong>Netzwerk</strong>dateisysteme, wie NFS o<strong>der</strong> Samba operieren direkt auf<br />

den normalen Verzeichnissen, wie sie an irgende<strong>in</strong>er Stelle im Serverdateisystem e<strong>in</strong>gehängt<br />

wurden. Damit kann e<strong>in</strong> und dasselbe Unterverzeichnis <strong>in</strong> verschiedenen Arten über das<br />

<strong>Netzwerk</strong> exportiert werden. Oft f<strong>in</strong>det man diese Anwendung bei <strong>der</strong> Bereitstellung von<br />

Home-Verzeichnissen für W<strong>in</strong>dows- und <strong>Unix</strong>-Clients. Das hat den wesentlichen Vorteil,<br />

dass Schreibvorgänge sowohl auf dem Server als auch unterschiedlichen Clients transparent<br />

sichtbar werden. So kann <strong>der</strong> Adm<strong>in</strong> auf dem Server beispielsweise e<strong>in</strong> Software-Update<br />

5 Dieser Vorgang wird geme<strong>in</strong>h<strong>in</strong> als ”formatieren” (e<strong>in</strong>er Festplatte o<strong>der</strong> Partition, ...) bezeichnet


11.7. NBDS IM EINSATZ 171<br />

e<strong>in</strong>spielen, welches sich recht schnell auf alle angeschlossenen Clients auswirkt.<br />

11.7 NBDs im <strong>E<strong>in</strong></strong>satz<br />

Zu den ältesten netzwerktransparenten Blockgeräten zählt das Network Block Device NBD,<br />

welches seit dem späten 2.1er Kernel <strong>in</strong> den Code-Baum aufgenommen wurde. In den modularen<br />

Kernels <strong>der</strong> meisten Ma<strong>in</strong>stream-Distributionen ist NBD deshalb üblicherweise als<br />

Modul enthalten. Es lässt sich e<strong>in</strong>fach mit modprobe nbd laden. Es sollte ke<strong>in</strong>e Fehlermeldung<br />

ersche<strong>in</strong>en, an<strong>der</strong>nfalls ist es nicht korrekt <strong>in</strong>stalliert.<br />

Die notwendigen Userspace-Tools liefern die meisten Distributionen als eigenes Paket<br />

mit.<br />

hermes:~ # modprobe nbd<br />

hermes:~ # which nbd-server<br />

/usr/b<strong>in</strong>/nbd-server<br />

hermes:~ # rpm -q nbd<br />

nbd-2.7.4-2<br />

11.7.1 Erste Versuche mit NBD<br />

Um <strong>Netzwerk</strong>probleme auszuschliessen, führt man Tests zuerst am besten auf <strong>der</strong>selben<br />

Masch<strong>in</strong>e durch. Am e<strong>in</strong>fachsten operiert man mit e<strong>in</strong>er weiteren Partition auf <strong>der</strong> nicht das<br />

Root-Filesystem des Servers liegt. Hat man diese nicht zur Verfügung kann man alternativ<br />

e<strong>in</strong>e Conta<strong>in</strong>er-Datei anlegen und diese mit e<strong>in</strong>em Dateisystem <strong>der</strong> Wahl, welches vom<br />

Serverkernel unterstützt wird, formatieren. Erfolgreich getestet wurden an dieser Stelle die<br />

Dateisysteme ReiserFS, ext2 und XFS. Jedes Formatwerkzeug weist darauf h<strong>in</strong>, dass es sich<br />

bei <strong>der</strong> Datei nicht um e<strong>in</strong> Blockgerät handelt, was aber ohne Folgen ignoriert werden kann.<br />

hermes:~ # mkdir /exports<br />

hermes:~ # dd if=/dev/zero of=/exports/nbd-export bs=1024 count=100000<br />

100000+0 Datensätze e<strong>in</strong><br />

100000+0 Datensätze aus<br />

102400000 bytes (102 MB) copied, 0,987222 seconds, 84 MB/s<br />

hermes:~ # mke2fs nbd-export<br />

mke2fs 1.38 (30-Jun-2005)<br />

/exports/nbd-export ist ke<strong>in</strong> spezielles Block-Gerät.<br />

Trotzdem fortsetzen? (y,n) y<br />

Dateisystem-Label=<br />

OS-Typ: L<strong>in</strong>ux<br />

Blockgröße=1024 (log=0)<br />

[ ... ]<br />

hermes:~ # nbd-server 5000 /exports/nbd-export<br />

hermes:~ # nbd-client 127.0.0.1 5000 /dev/nbd0<br />

Negotiation: ..size = 100000KB<br />

bs=1024, sz=100000<br />

hermes:~ # mount /dev/nbd0 /mnt<br />

hermes:~ # ls /mnt<br />

. .. lost+found<br />

hermes:~ # df<br />

Dateisystem 1K-Blöcke Benutzt Verfügbar Ben% <strong>E<strong>in</strong></strong>gehängt auf<br />

[ ... ]<br />

/dev/nbd0 96828 13 91815 1% /mnt<br />

hermes:/ # time dd if=/dev/zero of=/mnt/text count=8192 bs=1024<br />

8192+0 Datensätze e<strong>in</strong><br />

8192+0 Datensätze aus


172 KAPITEL 11. FILESERVER<br />

8388608 bytes (8,4 MB) copied, 0,038112 seconds, 220 MB/s<br />

real 0m0.046s<br />

user 0m0.008s<br />

sys 0m0.036s<br />

Im Beispiel agiert <strong>der</strong> NBD-Server auf e<strong>in</strong>er 100 MByte grossen Datei. Er bietet se<strong>in</strong>e<br />

Dienste auf Port 5000 an. Die Portnummer kann frei gewählt werden. So lassen sich<br />

auch mehrere Server für verschiedenen Conta<strong>in</strong>er starten. Der NBD-Client setzt das geladene<br />

Kernelmodul voraus und benötigt als Parameter beim Aufruf die IP-Adresse und<br />

Portnummer des Servers gefolgt vom Namen des lokal anzusprechenden Blockdevices.<br />

Zum (Performance-)Vergleich kann man die Datei e<strong>in</strong>fach ”loopback” mounten:<br />

hermes:/ # mount -o loop /exports/nbd-export /mnt<br />

hermes:/ # time dd if=/dev/zero of=/mnt/text count=8192 bs=1024<br />

8192+0 Datensätze e<strong>in</strong><br />

8192+0 Datensätze aus<br />

8388608 bytes (8,4 MB) copied, 0,034517 seconds, 243 MB/s<br />

real 0m0.040s<br />

user 0m0.008s<br />

sys 0m0.024s<br />

Der Performance-Verlust, zugegebenermaßen ist die Messmethode eher grob, hält sich bei<br />

<strong>der</strong> Verwendung des <strong>Netzwerk</strong>blockgerätes <strong>in</strong> Grenzen. Wenn alles auf e<strong>in</strong>er Masch<strong>in</strong>e geklappt<br />

hat, kann man darangehen und auf e<strong>in</strong>er entfernten Masch<strong>in</strong>e das Blockdevice e<strong>in</strong>b<strong>in</strong>den.<br />

Dazu muss im Aufruf lediglich die Localhost-Adresse gegen die IP-Adresse des<br />

Servers getauscht werden.<br />

Möchte man e<strong>in</strong>e Partition o<strong>der</strong> e<strong>in</strong> LVM-Volume an Stelle e<strong>in</strong>er Datei exportieren,<br />

tauscht man den Date<strong>in</strong>amen gegen den Namen des speziellen Devices aus:<br />

l<strong>in</strong>ux01:/ # nbd-server 5001 /dev/sda4<br />

Nachdem <strong>der</strong> Server läuft, kann sich <strong>der</strong> Client auf diesen mit IP-Adresse und Portnummer<br />

verb<strong>in</strong>den. Die Verb<strong>in</strong>dung wurde erfolgreich <strong>in</strong>itialisiert, wenn nbd-client ke<strong>in</strong>e Fehlermeldung<br />

ausgibt.<br />

Die Verb<strong>in</strong>dung zum Server kann vom Client durch den Aufruf von nbd-client -d<br />

/dev/nbd0 gelöst werden. Vorher sollte jedoch das e<strong>in</strong>gehängte Blockdevice ausgemountet<br />

werden:<br />

l<strong>in</strong>ux01:/ # umount /mnt<br />

l<strong>in</strong>ux01:/ # nbd-client -d /dev/nbd0<br />

NBD ist recht e<strong>in</strong>fach gestrickt: Es überlässt die Integritätsprüfung <strong>der</strong> übertragenen Daten<br />

dem darunterliegenden TCP.<br />

11.7.2 NBD und Filesysteme<br />

In <strong>der</strong> bisher geschil<strong>der</strong>ten Anwendung des Blockdevices gelten die identischen <strong>E<strong>in</strong></strong>schränkungen<br />

für e<strong>in</strong>e Festplatte bzw. e<strong>in</strong>e Partition auf dieser: Nur e<strong>in</strong>e Masch<strong>in</strong>e kann gleichzeitig<br />

lesend und schreibend darauf zugreifen. Es gibt an<strong>der</strong>s als bei <strong>Netzwerk</strong>dateisystemen<br />

ke<strong>in</strong>en e<strong>in</strong>gebauten Mechanismus <strong>der</strong> sich um Lock<strong>in</strong>g o<strong>der</strong> den Abgleich <strong>der</strong> Buffer <strong>der</strong><br />

verschiedenen Masch<strong>in</strong>en kümmert.<br />

Nun spielt dieses Szenario des geme<strong>in</strong>samen schreibenden Zugriffs <strong>in</strong> vielen Fällen, wie<br />

beispielsweise für das Root-Filesystem von Diskless Clients o<strong>der</strong> das Bereitstellen e<strong>in</strong>es geme<strong>in</strong>samen<br />

Applikationsverzeichnisses ke<strong>in</strong>e Rolle. Dann kann man den Blockdevice-Server


11.7. NBDS IM EINSATZ 173<br />

mit <strong>der</strong> Option ”-r” im nur lesbaren Modus starten: Nun kann ke<strong>in</strong> Client Än<strong>der</strong>ungen am<br />

Blockdevice vornehmen. Bei Verwendung dieser Option s<strong>in</strong>d Journal<strong>in</strong>g-Filesysteme ausgeschlossen.<br />

We<strong>der</strong> ext3, noch ReiserFS o<strong>der</strong> XFS liessen sich per nur lesbarem Blockdevice<br />

erfolgreich mounten. Die Fehlermeldungen fielen dabei je nach Dateisystem unterschiedlich<br />

harsch aus:<br />

hermes:~ # mount -t reiserfs /dev/nbd0 /mnt<br />

Kernel call returned: Connection reset by peerClos<strong>in</strong>g: que, sock, done<br />

mount: wrong fs type, bad option, bad superblock on /dev/nbd0,<br />

miss<strong>in</strong>g codepage or other error<br />

In some cases useful <strong>in</strong>fo is found <strong>in</strong> syslog - try<br />

dmesg | tail or so<br />

hermes:~ # mount -t xfs /dev/nbd0 /mnt/<br />

Kernel call returned: Connection reset by peerClos<strong>in</strong>g: que, sock, done<br />

mount: /dev/nbd0: Konnte den Superblock nicht lesen<br />

Auch <strong>der</strong> <strong>E<strong>in</strong></strong>satz <strong>der</strong> Mount-Option ”-o ro” brachte ke<strong>in</strong>e Entspannung. Die Dateisysteme<br />

SquashFS und ext2 hatten jedoch ke<strong>in</strong>e Schwierigkeiten.<br />

<strong>E<strong>in</strong></strong>e Alternative beschreiben die Autoren mit <strong>der</strong> Option ”-c”. Dann kann <strong>der</strong> NBD-<br />

Server e<strong>in</strong> Copy-on-Write ausführen. Dazu legt er für jeden Client e<strong>in</strong>e Datei an, <strong>in</strong> die alle<br />

Än<strong>der</strong>ungen geschrieben werden.<br />

hermes:~ # nbd-server 5000 /exports/nbd-export -c<br />

hermes:~ # nbd-client 127.0.0.1 5000 /dev/nbd0<br />

hermes:~ # mount -t xfs /dev/nbd0 /mnt<br />

hermes:~ # ls -al /exports<br />

<strong>in</strong>sgesamt 100008<br />

drwxr-xr-x 2 root root 60 2006-04-03 12:39 .<br />

drwxr-xr-x 23 root root 4096 2006-03-25 21:16 ..<br />

-rw-r--r-- 1 root root 102400000 2006-04-03 12:33 nbd-export<br />

-rw------- 1 root root 270336 2006-04-03 12:39 nbd-export-127.0.0.1-7812.diff<br />

Hier sieht man nun, dass e<strong>in</strong>e separate Datei für die Än<strong>der</strong>ungen angelegt wird. Nach<br />

e<strong>in</strong>em Disconnect des Clients gehen diese Än<strong>der</strong>ungen verloren, obwohl die Datei selbst erhalten<br />

bleibt. Macht man nun das Experiment das Blockdevice unter e<strong>in</strong>em <strong>der</strong> Journal<strong>in</strong>g-<br />

Dateisysteme Readonly e<strong>in</strong>zub<strong>in</strong>den, sieht man, dass trotzdem etwas auf das Device geschrieben<br />

wird. Das erklärt die vorher beschriebenen Probleme.<br />

Die ”-c” Option wird von den Entwicklern des Network Block Device als nicht beson<strong>der</strong>s<br />

performant beschrieben, weshalb sich hier besser clientseite Lösungen, wie UnionFS<br />

o<strong>der</strong> das COW-Modul anbieten. Generell muss auch beim NBD gesagt werden, dass das Sicherheitskonzept<br />

alles an<strong>der</strong>e als ausgefeilt ist. Ähnlich zu NFS, jedoch deutlich unflexibler,<br />

kann man e<strong>in</strong>e Liste von Rechnern angeben, denen <strong>der</strong> Zugriff auf das Device gestattet wird.<br />

Abhilfe könnten hier verschlüsselte Dateisysteme schaffen. An<strong>der</strong>nfalls hat man zum<strong>in</strong>dest<br />

auf <strong>der</strong> Ebene <strong>der</strong> Sicherheit gegenüber e<strong>in</strong>em NFS <strong>der</strong> Version 2 o<strong>der</strong> 3 nichts gewonnen.<br />

11.7.3 DNBD - e<strong>in</strong>e spezialisierte Alternative<br />

Neben NBD gibt es weitere freie Implementierung e<strong>in</strong>es <strong>Netzwerk</strong>blockgeräts, wie beispielsweise<br />

ENBD, GNBD o<strong>der</strong> ANBD. Da die jeweiligen Blockgerätetreiber aber (noch) nicht<br />

Bestandteil des Kernels s<strong>in</strong>d, sucht man e<strong>in</strong> <strong>in</strong>stallierbares Paket bei vielen Distributionen<br />

oft vergeblich. In diesem Fall müssen die Quellen von den unten angegeben Adressen selbst<br />

bezogen werden. Für den Mehraufwand bekommt man beispielsweise bei ENBD e<strong>in</strong>e Fehlerbehandlung<br />

mit dem automatischen Wie<strong>der</strong>aufbau e<strong>in</strong>er abgebrochenen Verb<strong>in</strong>dung, <strong>der</strong><br />

gleichzeitigen Benutzung mehrerer Kanäle und vieles mehr.


174 KAPITEL 11. FILESERVER<br />

Für e<strong>in</strong> recht spezifisches Umfeld, nämlich für den Diskless-Betrieb <strong>in</strong> Funknetzen,<br />

gibt es DNBD, welches hier auftretende Probleme auf beson<strong>der</strong>e Art und Weise handhabt.<br />

In e<strong>in</strong>em typischen Funknetz-Szenario assozieren sich Clients mit e<strong>in</strong>em Access Po<strong>in</strong>t<br />

und benutzen dabei dieselbe Frequenz, was natürlich bedeutet, dass für e<strong>in</strong>e funktionierende<br />

Kommunikation nur e<strong>in</strong> Client zu e<strong>in</strong>em bestimmten Zeitpunkt senden darf. H<strong>in</strong>zu<br />

kommt die niedrige Bandbreite, die bei den heute verwendeten Technologien, wie dem IE-<br />

EE 802.11b/a/g Standard, auf 54 Mbit/s begrenzt ist. Manche Hersteller versprechen zwar<br />

Datenraten von 108 Mbit/s - bei allen ist <strong>der</strong> effektive Durchsatz aber meist viel niedriger.<br />

Unabhängig von <strong>der</strong> Datenrate s<strong>in</strong>d aber die Kosten für neue Clients, was die Größe <strong>der</strong><br />

transferierten Datenmengen betrifft. Verdoppelt man die Anzahl <strong>der</strong> Clients, so lässt im<br />

Durchschnitt <strong>in</strong> e<strong>in</strong>em bestimmten Zeit<strong>in</strong>tervall nur noch die halbe Datenmenge je Client<br />

übertragen.<br />

Die Frage ist nun, ob es denn überhaupt möglich und s<strong>in</strong>nvoll ist, das Konzept festplattenloser<br />

Rechner zum Beispiel auf mobile Pools <strong>in</strong> Funknetzen auszuweiten. Das Problem<br />

<strong>der</strong> begrenzten Bandbreite und schlechten Skalierbarkeit zusammen mit dem Wunsch e<strong>in</strong>er<br />

Fehlerbehandlung (z.B. mit Failover auf replizierte Server) und das <strong>in</strong> unzuverlässigen<br />

Netzen mit Paketverlusten, sprechen nicht gerade für e<strong>in</strong>en solchen <strong>E<strong>in</strong></strong>satz.<br />

DNBD versucht deshalb, im Unterschied zu den bisher vorgestellten <strong>Netzwerk</strong>blockgeräten<br />

anfallende Datenmengen so weit wie möglich zu m<strong>in</strong>imieren und dabei die Beson<strong>der</strong>heiten<br />

e<strong>in</strong>es Funknetzes auszunutzen. Zuerst wird für e<strong>in</strong> vere<strong>in</strong>fachtes Protokoll auf<br />

Lock<strong>in</strong>g-Mechanismen verzichtet und nur lesbarer Zugriff erlaubt, was clientseitig beispielweise<br />

mit cowloop wie<strong>der</strong> aufgehoben werden kann. Zweitens werden Blöcke, die von e<strong>in</strong>em<br />

Client angefor<strong>der</strong>t werden und schließlich vom Server geliefert werden, von an<strong>der</strong>en Clients<br />

gecachet, falls diese später selbst Bedarf dafür haben sollten. Drittens wird UDP als<br />

verb<strong>in</strong>dungsloses Protokoll verwendet und Paketverluste und an<strong>der</strong>e Kommunikationsprobleme<br />

werden von DNBD selbst bearbeitet.<br />

Jetzt stellt sich nur noch die Frage, wie Blöcke abgefangen und gecachet werden können.<br />

Das geme<strong>in</strong>sam benutzte Medium bei Funknetzen erlaubt zwar pr<strong>in</strong>zipiell das Mithören<br />

<strong>der</strong> Kommunikation an<strong>der</strong>er Clients - lei<strong>der</strong> unterstützen aber nicht alle Karten e<strong>in</strong>en<br />

so genannten Promiscuous- bzw. Monitor-Modus. Und falls doch, so muss dieser für die<br />

jeweiligen Chipsätze meist auf unterschiedliche Art und Weise aktiviert werden. DNBD<br />

benutzt deshalb IP-Multicast, um e<strong>in</strong>e Gruppe von Clients gleichzeitig zu adressieren. <strong>E<strong>in</strong></strong>e<br />

IP-Multicast-Adresse liegt hier im Netz 224.0.0.0/4 - für Experimente sollte das Netz<br />

239.0.0.0/8 benutzt werden. Bevor bei DNBD e<strong>in</strong> Client auf e<strong>in</strong> <strong>Netzwerk</strong>blockgerät zugreifen<br />

kann, versucht er vorhandene Server zu f<strong>in</strong>den, <strong>in</strong>dem er bestimmte Pakete an<br />

die gegebene Multicast-Adresse schickt. Die Server beantworten die Anfrage und liefern<br />

gleichzeitig Informationen über das vorhandene Blockgerät. Die Clients benutzen diese Daten<br />

zu Konfiguration und können fortan Blöcke anfragen. Die komplette Kommunikation<br />

funktioniert mit UDP aus mehreren Gründen: Das e<strong>in</strong>fach gestrickte UDP (im Vergleich<br />

zu TCP) ist völlig ausreichend um Blöcke anzufor<strong>der</strong>n und bietet die Möglichkeit eigene<br />

(meist zeitgesteuerte) Methoden für den Datenfluss etc. zu realisieren; außerdem ist Multicast<br />

mit TCP beim L<strong>in</strong>ux-<strong>Netzwerk</strong>stack nicht implementiert und se<strong>in</strong>e Verwendung wäre<br />

überhaupt nicht möglich gewesen.<br />

Für e<strong>in</strong>e hohe Verfügbarkeit lassen sich Server zusätzlich replizieren. Neue Server werden<br />

von den Clients dabei automatisch gefunden, <strong>in</strong>dem dauernd statistische Daten gesammelt<br />

werden, und Server mit niedrigen Antwortzeiten ausgesucht werden. Für den<br />

<strong>E<strong>in</strong></strong>satz von DNBD <strong>in</strong> kabelgebundenen Netzen wird wegen des Overheads <strong>der</strong> Multicast-<br />

Kommunikation allerd<strong>in</strong>gs noch abgeraten bis DNBD auch Unicast-Kommunikation unterstützt.


11.8. SPEZIELLE BLOCKDEVICE-ERWEITERUNGEN 175<br />

Natürlich werden immer für s<strong>in</strong>nvolles Cach<strong>in</strong>g Lokalitätseigenschaften vorausgesetzt,<br />

d.h. <strong>in</strong> unserem Fall sollten unterschiedliche Clients <strong>in</strong> e<strong>in</strong>em gewissen Zeitraum auf dieselben<br />

Blöcke zugreifen. Dies ist zum Beispiel beim simultanen Start von verschiedenen<br />

Diskless Clients <strong>in</strong> Funknetzen gegeben. <strong>E<strong>in</strong></strong>e weitere Anwendung ist die Bereitstellung von<br />

Multimedia-Inhalten <strong>in</strong> Funknetzen: Mehrere Clients können e<strong>in</strong>e DVD über e<strong>in</strong> WLAN<br />

abspielen, wobei dank des Caches auch Zeitdifferenzen erlaubt s<strong>in</strong>d, ohne dass e<strong>in</strong> neuer<br />

Stream gestartet werden muss.<br />

11.8 Spezielle Blockdevice-Erweiterungen<br />

In Umgebungen von Diskless Clients spielt die Beschreibbarkeit des Dateisystems e<strong>in</strong>e beson<strong>der</strong>e<br />

Rolle. <strong>E<strong>in</strong></strong>erseits soll das Dateisystem auf dem Server ”sauber” bleiben, d.h. Clients<br />

bekommen ke<strong>in</strong>en Zugriff, Systemdateien zu verän<strong>der</strong>n. An<strong>der</strong>erseits setzen Clients<br />

voraus, dass Dateien, die für den Betrieb notwendig s<strong>in</strong>d, angelegt o<strong>der</strong> verän<strong>der</strong>t werden<br />

können, z.B. /etc/resolv.conf. Bei e<strong>in</strong>em nur lesbaren Blockgerät ergibt sich hier e<strong>in</strong>e<br />

Möglichkeit, <strong>in</strong>dem es mit cowloop (Copy-on-Write-Loopback Device) schreibbar gemacht<br />

wird. Geän<strong>der</strong>te Blöcke werden getrennt <strong>in</strong> e<strong>in</strong>em so genannten ”sparse file” aufbewahrt,<br />

welches sich wie<strong>der</strong>um <strong>in</strong> e<strong>in</strong>er Ramdisk bef<strong>in</strong>den kann. An<strong>der</strong>s als bei UnionFS, wo selbst<br />

bei kle<strong>in</strong>sten Än<strong>der</strong>ungen an e<strong>in</strong>er Datei diese schon komplett <strong>in</strong> die beschreibbare Schicht<br />

kopiert werden muss, geht cowloop sparsamer mit dem Platz um und vermerkt nur wirklich<br />

geän<strong>der</strong>te Blöcke. Es setzt dafür jedoch e<strong>in</strong> schreibbares Dateisystem voraus: <strong>E<strong>in</strong></strong> mit<br />

dem RO-Filesystem SquashFS formatiertes <strong>Netzwerk</strong>blockgerät wird auch durch spezielle<br />

Write-Loopback-Devices nicht verän<strong>der</strong>bar.<br />

<strong>E<strong>in</strong></strong> Nachteil bei dieser Benutzung von <strong>Netzwerk</strong>blockgeräten ist, dass sich die Clients<br />

nicht transparent updaten lassen. Än<strong>der</strong>ungen am Blockdevice auf dem Server erfor<strong>der</strong>n<br />

e<strong>in</strong>en Neustart <strong>der</strong> Clients o<strong>der</strong> zum<strong>in</strong>dest e<strong>in</strong>en komplizierten Remount Mechanismus. Da<br />

Än<strong>der</strong>ungen am System <strong>in</strong> <strong>der</strong> <strong>Praxis</strong> meist nur bei Sicherheitsupdates o<strong>der</strong> e<strong>in</strong>em Umstieg<br />

auf e<strong>in</strong>e neuen Ausgabe <strong>der</strong> Distribution wirklich notwendig s<strong>in</strong>d, hält sich <strong>der</strong> Aufwand <strong>in</strong><br />

Grenzen.<br />

Wurde e<strong>in</strong> Network Block Device wie im letzten Abschnitt beschrieben aufgesetzt, so<br />

lässt sich cowloop wie folgt e<strong>in</strong>setzen:<br />

l<strong>in</strong>ux01:~ # modprobe cowloop<br />

l<strong>in</strong>ux01:~ # cowdev -a /dev/nbd0 /tmp/nbd.cow<br />

/dev/cow/0<br />

l<strong>in</strong>ux01:~ # mkdir /mnt/nbd-rw && mount /dev/cow/0 /mnt/nbd-rw<br />

l<strong>in</strong>ux01:~ # umount /mnt/nbd-rw && cowdev -d /dev/cow/0<br />

In diesem Beispiel wird e<strong>in</strong> <strong>Netzwerk</strong>blockgerät mit <strong>der</strong> schreibbaren Datei /tmp/nbd.cow<br />

verknüpft und das neue Blockgerät dann gemountet. Schreibvorgänge <strong>in</strong> nbd-rw wirken sich<br />

deshalb nicht auf das zu Grunde liegende <strong>Netzwerk</strong>blockgerät aus. Falls sich cowloop über<br />

e<strong>in</strong> fehlendes /dev/cow/ctl o<strong>der</strong> /dev/cow/0 beschwert, so hilft<br />

l<strong>in</strong>ux01:~ # mkdir /dev/cow && mknod /dev/cow/ctl b 241 255<br />

l<strong>in</strong>ux01:~ # ln -s /dev/cowloop0 /dev/cow/0


176 KAPITEL 11. FILESERVER<br />

nur lesbares<br />

Blockgerät<br />

copy-on-write<br />

Blockgerät<br />

Dateisystem<br />

Lesen Lesen und Schreiben<br />

schreibbare<br />

Datei<br />

Abbildung 11.2: Das Cowloop-Blockgerät basiert auf e<strong>in</strong>em weiteren Blockgerät und hält<br />

geän<strong>der</strong>te Blöcke <strong>in</strong> e<strong>in</strong>er Datei fest


Kapitel 12<br />

Samba<br />

12.1 Samba - Brücke zwischen Microsoft- und <strong>Unix</strong>-Welt<br />

Für viele gehören Samba und L<strong>in</strong>ux e<strong>in</strong>fach zusammen - <strong>der</strong> Anteil von Samba an <strong>der</strong> Popularisierung<br />

von L<strong>in</strong>ux ist nicht zu unterschätzen. Samba bildet e<strong>in</strong>e <strong>der</strong> wichtigsten Brücken<br />

zwischen <strong>der</strong> L<strong>in</strong>ux/<strong>Unix</strong> und W<strong>in</strong>dowswelt. Dieses beg<strong>in</strong>nt bei e<strong>in</strong>fachen Verzeichnis- und<br />

Druckerfreigaben und läßt sich fortsetzen bis zu S<strong>in</strong>gle-Password- o<strong>der</strong> S<strong>in</strong>gle-Sign-On-<br />

Lösungen und komplexen Doma<strong>in</strong>controller-Aufgaben, die e<strong>in</strong> L<strong>in</strong>ux-Rechner übernehmen<br />

kann. ”Samba” steht für die freie Implementierung e<strong>in</strong>es Server Message Block Protokollservers.<br />

Samba spricht sich e<strong>in</strong>fach besser aus und kl<strong>in</strong>gt netter als die Abkürzung des<br />

Protokollnamens ”SMB”.<br />

Microsoft-Rechner benutzen dieses Protokoll untere<strong>in</strong>an<strong>der</strong>, um auf Dateien und Drucker<br />

über e<strong>in</strong> <strong>Netzwerk</strong> zuzugreifen. In dieses <strong>Netzwerk</strong> können sich auch L<strong>in</strong>ux o<strong>der</strong> <strong>Unix</strong>rechner<br />

dank Samba e<strong>in</strong>kl<strong>in</strong>ken. Sie können dabei dank Samba als Client agieren o<strong>der</strong> auch<br />

tragen<strong>der</strong>e Rollen übernehmen.<br />

Samba ist e<strong>in</strong> Open-Source-Projekt welches im Jahre 1991 von Andrew Tridgell an <strong>der</strong><br />

Canberra University <strong>in</strong> Australien gestartet wurde. Entsprechend steht <strong>der</strong> <strong>in</strong> C geschriebene<br />

Source-Code jedem zur Verfügung. Je<strong>der</strong> kann ihn anpassen, untersuchen und testen.<br />

Für Adm<strong>in</strong>istratoren <strong>in</strong> Firmen und Organisationen das Wichtigste: Samba ist frei. An<strong>der</strong>s<br />

als für jede Microsoft Installation fallen für das Aufsetzen e<strong>in</strong>es Samba-Servers o<strong>der</strong> die<br />

Benutzung <strong>der</strong> Samba-Dienste unter L<strong>in</strong>ux ke<strong>in</strong>erlei Lizenzgebühren an.<br />

12.1.1 <strong>E<strong>in</strong></strong>satzgebiete von Samba<br />

SMB beschränkt sich nicht auf die Funktion als <strong>Netzwerk</strong>dateisystem o<strong>der</strong> Remote-Pr<strong>in</strong>ter.<br />

Alle<strong>in</strong> schon für diese beiden Aufgaben gibt es <strong>in</strong> <strong>der</strong> <strong>Unix</strong>welt zwei verschiedene Dienste:<br />

Beispielsweise LPD für Drucker und NFS für <strong>Netzwerk</strong>dateisysteme. SMB kann e<strong>in</strong>e ganze<br />

Menge mehr:<br />

• Das Samba-Paket enthält SMB-Clients, mittels <strong>der</strong>er <strong>Unix</strong>-Rechner auf freigegebene<br />

Dateien o<strong>der</strong> Drucker an<strong>der</strong>er SMB-Server zugreifen können. <strong>E<strong>in</strong></strong> L<strong>in</strong>uxclient kann<br />

so Druckjobs an e<strong>in</strong>en W<strong>in</strong>dowsdrucker absetzen o<strong>der</strong> e<strong>in</strong> geme<strong>in</strong>sames Dokumentenverzeichnis<br />

von e<strong>in</strong>er W<strong>in</strong>dowsmasch<strong>in</strong>e e<strong>in</strong>b<strong>in</strong>den. Diese Funktionalität stellt e<strong>in</strong>e<br />

Bibliothek zur Verfügung, die von an<strong>der</strong>en Programmen genutzt werden kann, bsp.<br />

dem KDE-Konqueror. Für die Kommandozeile liefert Samba die Tools smbmount,<br />

smbclient und mount.cifs mit.<br />

• Samba realisiert e<strong>in</strong>ige Erweiterungen des SMB-Dateisystems, damit bestimmte <strong>Unix</strong>-<br />

Dateien auf entfernten SMB-Freigaben abgelegt werden können.<br />

177


178 KAPITEL 12. SAMBA<br />

• Samba kann die Aufgaben des W<strong>in</strong>dows-Namens-Dienstes (WINS) übernehmen: Als<br />

NetBIOS-Nameserver kann es Namen auf IP-Nummern und umgekehrt abbilden.<br />

Zusätzlich unterstützt es NetBIOS-Brows<strong>in</strong>g und Browse-Master-Auswahl.<br />

• Samba kann e<strong>in</strong> S<strong>in</strong>gle-Sign-On realisieren: Der Zugriff auf den L<strong>in</strong>ux-Account und<br />

die <strong>E<strong>in</strong></strong>b<strong>in</strong>dung des L<strong>in</strong>ux-Homeverzeichnisses unter W<strong>in</strong>dows laufen mit identischen<br />

IDs und Passwort.<br />

• Samba kann als primärer Domänen-Controller für W<strong>in</strong>dows-Clients e<strong>in</strong>gesetzt werden.<br />

• Samba br<strong>in</strong>gt Werkzeuge für entfernte Adm<strong>in</strong>istrationsaufgaben für W<strong>in</strong>dows-NTund<br />

Samba-Server mit.<br />

12.2 Erste Versuche<br />

Wenn Samba schon auf <strong>der</strong> Masch<strong>in</strong>e <strong>in</strong>stalliert ist, kann <strong>der</strong> Anwen<strong>der</strong> schonmal erste<br />

Schritte wagen. Wenn nicht, überspr<strong>in</strong>gt er diesen Abschnitt und kümmert sich erste<strong>in</strong>mal<br />

um die Installation. Samba funktioniert <strong>in</strong> ”beide Richtungen”: Es stellt Client- und Serverfunktionalität<br />

bereit. Für viele, die von <strong>der</strong> W<strong>in</strong>dows-Seite her kommen, ist es bekannt, wie<br />

Freigaben unter W<strong>in</strong>dows erfolgen. Man gibt e<strong>in</strong>fach mal e<strong>in</strong> Unterverzeichnis mit Klicken<br />

<strong>der</strong> rechten Maustaste auf den Ordner frei. Dann def<strong>in</strong>iert man die <strong>E<strong>in</strong></strong>stellungen <strong>in</strong> <strong>der</strong><br />

Registerkarte ...<br />

Abbildung 12.1: Freigeben e<strong>in</strong>es Verzeichnisses unter W<strong>in</strong>dowsXP und Setzen <strong>der</strong> Zugriffsrechte<br />

12.2.1 W<strong>in</strong>dows-Server - L<strong>in</strong>ux-Client<br />

Diese Freigabe o<strong>der</strong> ”Share” kann nun von L<strong>in</strong>ux aus e<strong>in</strong>gebunden werden. Hierzu gibts<br />

das Kommando smbmount o<strong>der</strong> se<strong>in</strong> Nachfolger mount.cifs. Mounts können aus Sicherheitsgründen<br />

unter L<strong>in</strong>ux nur vom Benutzer ”root” ausgeführt werden.<br />

Jedoch gibt es auch Möglichkeiten dieses normalen Usern zu erlauben. In <strong>der</strong> Standard<strong>in</strong>stallation<br />

liefert smbmount bei unpriveligiertem Aufruf die Fehlermeldungsmbmnt must<br />

be <strong>in</strong>stalled suid root for direct user mounts (500,500). Dem kann man unter


12.2. ERSTE VERSUCHE 179<br />

Verzicht auf etwas Sicherheit abhelfen:chmod u+s /usr/b<strong>in</strong>/smbmnt /usr/b<strong>in</strong>/smbumount.<br />

Anschliessend b<strong>in</strong>det <strong>der</strong> Aufruf<br />

smbmount //10.8.4.204/SharedFiles w<strong>in</strong> -o username=dirk<br />

die W<strong>in</strong>dows-Freigabe ”ShraredFiles” an das Unterverzeichnis w<strong>in</strong>. Die Verb<strong>in</strong>dung erfolgt<br />

mit <strong>der</strong> W<strong>in</strong>dows-UserID ”dirk”, das Passwort fragt smbmount dann <strong>in</strong>teraktiv ab. Anschliessend<br />

gibt das Kommando mount das e<strong>in</strong>gebundene Verzeichnis <strong>in</strong> se<strong>in</strong>er Liste mit<br />

an:<br />

dirk@l<strong>in</strong>ux:~> mount<br />

/dev/hdb2 on / type ext3 (rw)<br />

proc on /proc type proc (rw)<br />

tmpfs on /dev/shm type tmpfs (rw)<br />

devpts on /dev/pts type devpts (rw,mode=0620,gid=5)<br />

/dev/hdc2 on /home type ext3 (rw)<br />

//10.8.4.204/SharedFiles on /home/dirk/w<strong>in</strong> type smbfs (0)<br />

Der Inhalt des Verzeichnisses w<strong>in</strong> s<strong>in</strong>d die Dateien, die sich auf <strong>der</strong> W<strong>in</strong>dows-Masch<strong>in</strong>e<br />

im freigegebenen Ordner bef<strong>in</strong>den. Es gibt jedoch e<strong>in</strong>ige <strong>E<strong>in</strong></strong>schränkungen: Dateien und<br />

Ordner kann <strong>der</strong> Nutzer wie gewohnt anlegen. Die Dateien gehören immer ihm, das <strong>Unix</strong>-<br />

Rechtemuster wird nur zum Teil abgebildet. Nicht möglich s<strong>in</strong>d spezielle Dateien, wie L<strong>in</strong>ks,<br />

Sockets o<strong>der</strong> Named Pipes. Der Vorteil von Samba: An<strong>der</strong>s als mit NFS o<strong>der</strong> Geräten muss<br />

ke<strong>in</strong> passen<strong>der</strong> <strong>E<strong>in</strong></strong>trag <strong>in</strong> <strong>der</strong> /etc/fstab stehen, um Benutzern das <strong>E<strong>in</strong></strong>b<strong>in</strong>den von W<strong>in</strong>dows-<br />

Freigaben zu erlauben.<br />

Umgekehrt wird <strong>der</strong> Nutzer das e<strong>in</strong>gebundene ”Share” durch den Befehl smbumount<br />

wie<strong>der</strong> los: smbumount w<strong>in</strong> meldet die Freigabe ab und die Liste des Mount-Kommandos<br />

reduziert sich um den entsprechenden <strong>E<strong>in</strong></strong>trag. Für diese kle<strong>in</strong>en Experimente ist es nicht<br />

notwendig, dass die beiden Samba-Dämonen smbd und nmbd gestartet s<strong>in</strong>d.<br />

Mit <strong>der</strong> Weiterentwicklung von W<strong>in</strong>dows und Samba wird das lange Zeit vorherrschende<br />

SMB-Filesystem (smbfs) zunehmend durch das mächtigere CIFS (Common Internet File<br />

System) ersetzt. Dieses drückt sich auch im Mount-Kommando für die Client-Seite aus:<br />

mount.cifs //10.8.4.204/SharedFiles w<strong>in</strong> -o username=dirk b<strong>in</strong>det mit identischer<br />

Syntax e<strong>in</strong> W<strong>in</strong>dows-Share an e<strong>in</strong> L<strong>in</strong>uxverzeichnis. Bisher ist dieses jedoch nur ”root”<br />

vorbehalten o<strong>der</strong> man räumt auch hier mittels SUID-Bit Usern das Recht e<strong>in</strong>. Lei<strong>der</strong> fehlt<br />

dazu noch e<strong>in</strong> passendes Pendant zum Ausmounten. Das <strong>E<strong>in</strong></strong>trag <strong>in</strong> <strong>der</strong> Mount-Liste sieht<br />

e<strong>in</strong> wenig an<strong>der</strong>s aus:<br />

//10.8.4.204/SharedFiles on /home/dirk/SharedFiles type cifs (rw,mand,nosuid,nodev)<br />

<strong>E<strong>in</strong></strong> weiteres Tool ist smbclient. Es kann neben an<strong>der</strong>en Funktionen dem Nutzer e<strong>in</strong> FTPähnliches<br />

Interface zum Verb<strong>in</strong>den auf SMB-Dienste bieten.<br />

dirk@l<strong>in</strong>ux:~> smbclient -U dsuchod //dsuchod.files.uni-freiburg.de/w<strong>in</strong>dows<br />

Password:<br />

Doma<strong>in</strong>=[PUBLIC] OS=[<strong>Unix</strong>] Server=[Samba 3.0.9-2.3-SUSE]<br />

smb: \> ls<br />

. D 0 Mon Sep 26 18:02:51 2005<br />

.. D 0 Sat Sep 24 01:44:53 2005<br />

.AbiSuite D 0 Sat Jun 5 02:41:49 2004<br />

[ ... Haufen weitere versteckte Dateien mit Punkt am Anfang ... ]<br />

Bil<strong>der</strong> D 0 Thu Apr 21 13:32:38 2005<br />

Desktop D 0 Thu Jun 30 22:28:19 2005<br />

Eigene Bil<strong>der</strong> D 0 Tue Aug 16 11:35:58 2005<br />

Eigene Musik D 0 Wed Sep 8 17:27:06 2004<br />

GNUstep D 0 Thu Jan 8 12:46:33 2004


180 KAPITEL 12. SAMBA<br />

IM01OLYM D 0 Mon Nov 17 16:37:14 2003<br />

Mail D 0 Mon Sep 26 18:07:45 2005<br />

OpenOffice.org1.1 D 0 Wed Oct 20 09:44:31 2004<br />

PDFs D 0 Mon Jan 10 19:06:34 2005<br />

PostScripts D 0 Wed Mar 31 13:41:28 2004<br />

Slides D 0 Fri Sep 10 14:28:28 2004<br />

artikel D 0 Wed Dec 22 14:48:45 2004<br />

[ ... Haufen weitere Dateien und Verzeichnisse ... ]<br />

32784 blocks of size 262144. 8028 blocks available<br />

smb: \><br />

smb: \> put e<strong>in</strong>stieg.txt<br />

putt<strong>in</strong>g file e<strong>in</strong>stieg.txt as \e<strong>in</strong>stieg.txt (1488,4 kb/s) (average<br />

1488,5 kb/s)<br />

smb: \> get ToDo<br />

Dieses Beispiel benutzt e<strong>in</strong>en Standard-Fileserver auf Samba-Basis. <strong>E<strong>in</strong></strong>e Die Verb<strong>in</strong>dung<br />

zu e<strong>in</strong>er Freigabe erfolgt <strong>in</strong> <strong>der</strong> bekannten W<strong>in</strong>dows-Syntax: //Rechnername/Freigabe o<strong>der</strong><br />

//IP-Adresse/Freigabe, wobei e<strong>in</strong>fach die Backslashes <strong>in</strong> Slashes umgeän<strong>der</strong>t werden. Erstere<br />

haben <strong>in</strong> <strong>der</strong> Shell e<strong>in</strong>e beson<strong>der</strong>e Bedeutung. Wenn die Verb<strong>in</strong>dung unter e<strong>in</strong>er vorgegebenen<br />

UserID erfolgen soll, kann <strong>der</strong> Anwen<strong>der</strong> diese mit <strong>der</strong> Option -U mitteilen. Bei<br />

<strong>der</strong> Verb<strong>in</strong>dungsaufnahme fragt dann smbclient nach dem Passwort. <strong>E<strong>in</strong></strong>e Verb<strong>in</strong>dung auf<br />

e<strong>in</strong>e W<strong>in</strong>dows-Masch<strong>in</strong>e unterscheidet sich bis auf die Statuszeile nicht:<br />

dirk@l<strong>in</strong>ux02:~> smbclient -U dirk //10.20.90.60/SharedFiles<br />

Password:<br />

Doma<strong>in</strong>=[MYLAPTOP] OS=[W<strong>in</strong>dows 5.1] Server=[W<strong>in</strong>dows 2000 LAN Manager]<br />

smb: \> quit<br />

Nach erfolgter Verb<strong>in</strong>dung liefert das Kommanod ls Dateien und Verzeichnisse <strong>in</strong> <strong>der</strong> Freigabe.<br />

Der Verzeichniswechsel erfolgt wie gewohnt mit cd. Mit put lassen sich Dateien auf<br />

das ”Share” hochladen, mit get welche <strong>in</strong> das lokale Verzeichnis kopieren, von wo aus<br />

smbclient gestartet wurde. Am Ende verlässt man die Samba-Shell mit quit.<br />

12.2.2 L<strong>in</strong>ux-Server - W<strong>in</strong>dows-Client<br />

Dieser Fall ist <strong>der</strong> <strong>in</strong> <strong>der</strong> Realität sicherlich häufigere: Warum im Serverraum e<strong>in</strong>e Masch<strong>in</strong>e<br />

mit aufwändiger grafischer Benutzeroberfläche und nicht zu vernachlässigenden Lizenzkosten<br />

stellen, wenn es stabile und günstige Alternativen gibt? Die Serverfunktionalität stellen<br />

zwei H<strong>in</strong>tergrundsdienste, die Dämonen smbd und nmbd bereit. Letzterer kümmert sich<br />

dabei um den W<strong>in</strong>dows-Namensdienst (WINS) und muss nicht zw<strong>in</strong>gend laufen.<br />

Der Adm<strong>in</strong>istrator konfiguriert beide Dienste mit <strong>der</strong> geme<strong>in</strong>samen Datei smb.conf.<br />

Diese bef<strong>in</strong>det sich je nach Distribution üblicherweise im Unterverzeichnis /etc/samba. Für<br />

e<strong>in</strong>en ersten Test legt <strong>der</strong> Adm<strong>in</strong> e<strong>in</strong>e M<strong>in</strong>imalkonfiguration dieser Datei an o<strong>der</strong> än<strong>der</strong>t<br />

die Vorgabe <strong>der</strong> liefernden Distribution passend ab. Für erste Versuche soll das Verzeichnis<br />

vorher frisch angelegte Verzeichnis /w<strong>in</strong>-export benutzt werden. Auf dieses sollen die beiden<br />

Benutzer ”test1” und ”test2” nach <strong>E<strong>in</strong></strong>gabe ihres Passworts zugreifen können.<br />

[global]<br />

workgroup = SAMBA<br />

netbios name = MYSMB<br />

os level = 2<br />

unix extensions = Yes<br />

encrypt passwords = Yes<br />

map to guest = nobody<br />

socket options = SO_KEEPALIVE IPTOS_LOWDELAY TCP_NODELAY<br />

hosts allow = ALL


12.3. WEITERGEHENDE KONFIGURATION 181<br />

log level = 10<br />

[w<strong>in</strong>share]<br />

comment = Testfreigabe fuer W<strong>in</strong>dows-Clients<br />

path = /w<strong>in</strong>-export<br />

lock<strong>in</strong>g = No<br />

read only = Yes<br />

valid users = test1 test2<br />

create mask = 0600<br />

directory mask = 0750<br />

Nach aussen bietet sich die Freigabe mit dem Namen ”w<strong>in</strong>share” an. Dieser Name muss <strong>in</strong> ke<strong>in</strong>er<br />

Weise mit dem Verzeichnis, welches exportiert wird, übere<strong>in</strong>stimmen. Im Übrigen ist die Groß- o<strong>der</strong><br />

Kle<strong>in</strong>schreibung <strong>in</strong> <strong>der</strong> smb.conf mit Ausnahme <strong>der</strong> Pfadangaben unter L<strong>in</strong>ux irrelevant. Die beiden<br />

Benutzer ”test1” und ”test2” müssen lediglich als System-Accounts existieren. User benötigen für<br />

Samba nicht zw<strong>in</strong>gend L<strong>in</strong>ux-Log<strong>in</strong>rechte o<strong>der</strong> e<strong>in</strong>en <strong>E<strong>in</strong></strong>trag <strong>in</strong> <strong>der</strong> /etc/shadow. Da L<strong>in</strong>ux und<br />

W<strong>in</strong>dows verschiedene Verschlüsselungsverfahren für Passwörter benutzen, muss selbst bei Existenz<br />

e<strong>in</strong>es gültigen L<strong>in</strong>ux-Passworts e<strong>in</strong> neues W<strong>in</strong>dows-Passwort generiert werden. Dieses triggert <strong>der</strong><br />

Systemadm<strong>in</strong>istrator durch:<br />

l<strong>in</strong>ux:/w<strong>in</strong>-export # smbpasswd -L -a test1<br />

New SMB password:<br />

Retype new SMB password:<br />

Passwörter, die auf diese Weise generiert wurden, landen <strong>in</strong> <strong>der</strong> Datei /etc/samba/smbpasswd. Anschliessend<br />

steht <strong>der</strong> (Neu-)Start des Dienstes durch rcsmb restart o<strong>der</strong> /etc/rc.d/smb restart<br />

an.<br />

Anschliessend greift sich <strong>der</strong> Anwen<strong>der</strong> e<strong>in</strong>e W<strong>in</strong>dowsmasch<strong>in</strong>e, die mit dem gleichen <strong>Netzwerk</strong>,<br />

wie <strong>der</strong> frisch aufgesetzte L<strong>in</strong>ux-Samba-Server verbunden ist und versucht am besten erstmal durch<br />

<strong>E<strong>in</strong></strong>gabe <strong>der</strong> IP-Nummer die neue Freigabe unter W<strong>in</strong>dows e<strong>in</strong>zub<strong>in</strong>den.<br />

Wenn <strong>der</strong> Nutzer unter e<strong>in</strong>er an<strong>der</strong>en UserID an se<strong>in</strong>er W<strong>in</strong>dows-Masch<strong>in</strong>e angemeldet ist,<br />

kann er diesen bei W<strong>in</strong>dows-XP beim Anmelden an die Freigabe wechseln. Auch das Passwort<br />

muss nicht mit dem <strong>der</strong> W<strong>in</strong>dows-Anmeldung übere<strong>in</strong>stimmen. Soll <strong>der</strong> Samba-Server automatisch<br />

beim Start <strong>der</strong> L<strong>in</strong>uxmasch<strong>in</strong>e hochfahren, kann <strong>der</strong> SuSE-Adm<strong>in</strong> diesen Dienst durch <strong>in</strong>sserv<br />

smb,start=3,5; <strong>in</strong>sserv nmb,start=3,5 für die Runlevel 3 und 5 aktivieren. Alternativ können<br />

auch L<strong>in</strong>ks <strong>in</strong> den entsprechenden Runlevel-Unterverzeichnissen /etc/<strong>in</strong>it.d/rc3.d und /etc/<strong>in</strong>it.d/<br />

rc5.d angelegt werden.<br />

Der Sambaserver sollte dann auch im ”Microsoft W<strong>in</strong>dows-<strong>Netzwerk</strong>” auftauchen (Abb. xpsambatestnetz).<br />

Wenn <strong>der</strong> Anwen<strong>der</strong> dann auf ”Samba” klickt, sieht er <strong>in</strong> diesem Netz m<strong>in</strong>destens<br />

den Samba-Server ”Mysmb”. Im Kommentar steht die Versionsbezeichnung von Samba. Wenn da<br />

etwas an<strong>der</strong>es ersche<strong>in</strong>en soll, fügt <strong>der</strong> Adm<strong>in</strong>server str<strong>in</strong>g = Kommentar mit se<strong>in</strong>em Kommentar<br />

<strong>in</strong> <strong>der</strong> [global] Sektion e<strong>in</strong>.<br />

12.3 Weitergehende Konfiguration<br />

Im gezeigten ersten Beispiel bekamen die beiden Benutzer ”test1” und ”test2” e<strong>in</strong> Verzeichnis auf<br />

e<strong>in</strong>er L<strong>in</strong>ux-Masch<strong>in</strong>e nur lesend nach <strong>E<strong>in</strong></strong>gabe ihres Benutzernamens und Passwortes zur Verfügung<br />

gestellt. Soll e<strong>in</strong>e Anmeldung für diese Freigabe auch ohne Passwort möglich se<strong>in</strong>, kann <strong>der</strong> Adm<strong>in</strong><br />

das Schlüsselwort ”public = Yes” def<strong>in</strong>ieren. Dann sollte er jedoch die Option ”valid users” leero<strong>der</strong><br />

weglassen.<br />

Im Fall von Fehlern und zur Kontrolle des korrekten Starts des Samba-Servers sollte <strong>der</strong> Adm<strong>in</strong><br />

das Logfile des Dienstes kontrollieren. Standardmäßig wird dieses bei e<strong>in</strong>er SuSE-Distribution unterhalb<br />

von /var/log/samba angelegt. Das Logfile des smbd heisst e<strong>in</strong>fach log.smbd, das des nmbd<br />

entsprechend.<br />

[2004/11/10 16:09:36, 0] smbd/server.c:ma<strong>in</strong>(757)<br />

smbd version 3.0.4-SUSE started.<br />

Copyright Andrew Tridgell and the Samba Team 1992-2004


182 KAPITEL 12. SAMBA<br />

Abbildung 12.2: Durch die direkte <strong>E<strong>in</strong></strong>gabe <strong>der</strong> IP-Nummer umgeht <strong>der</strong> Anwen<strong>der</strong> eventuelle<br />

Probleme bei <strong>der</strong> W<strong>in</strong>dows-Namensauflösung<br />

[2004/11/10 16:09:36, 5] lib/debug.c:debug_dump_status(369)<br />

INFO: Current debug levels:<br />

all: True/10<br />

tdb: False/0<br />

pr<strong>in</strong>tdrivers: False/0<br />

lanman: False/0<br />

smb: False/0<br />

rpc_parse: False/0<br />

rpc_srv: False/0<br />

rpc_cli: False/0<br />

passdb: False/0<br />

sam: False/0<br />

auth: False/0<br />

w<strong>in</strong>b<strong>in</strong>d: False/0<br />

vfs: False/0<br />

idmap: False/0<br />

quota: False/0<br />

acls: False/0<br />

do<strong>in</strong>g parameter veto files = /*.eml/*.nws/riched20.dll/*.{*}/<br />

[2004/11/10 16:09:36, 2] param/loadparm.c:do_section(3396)<br />

Process<strong>in</strong>g section "[w<strong>in</strong>share]"<br />

do<strong>in</strong>g parameter comment = Testfreigabe fuer W<strong>in</strong>dows-Clients<br />

do<strong>in</strong>g parameter path = /w<strong>in</strong>-export<br />

do<strong>in</strong>g parameter lock<strong>in</strong>g = No<br />

do<strong>in</strong>g parameter read only = Yes


12.3. WEITERGEHENDE KONFIGURATION 183<br />

do<strong>in</strong>g parameter valid users = test1 test2<br />

do<strong>in</strong>g parameter create mask = 0600<br />

do<strong>in</strong>g parameter directory mask = 0750<br />

[2004/11/10 16:09:36, 4] param/loadparm.c:lp_load(3913)<br />

pm_process() returned Yes<br />

[2004/11/10 16:09:36, 7] param/loadparm.c:lp_servicenumber(4026)<br />

lp_servicenumber: couldn’t f<strong>in</strong>d homes<br />

[2004/11/10 16:09:36, 3] param/loadparm.c:lp_add_ipc(2363)<br />

add<strong>in</strong>g IPC service<br />

[2004/11/10 16:09:36, 3] param/loadparm.c:lp_add_ipc(2363)<br />

add<strong>in</strong>g IPC service<br />

[ ... ]<br />

Mit dem im Beispiel e<strong>in</strong>gestellten Loglevel von 10 ist <strong>der</strong> Dienst ziemlich geschwätzig. Das<br />

macht bei funktionierendem Normalbetrieb weniger S<strong>in</strong>n. Je nach Sicherheits- und Informationsbedürfnis<br />

genügt e<strong>in</strong> Loglevel von 0 bis 3 für die wichtigsten Ereignisse. Meldungen<br />

über Fehler <strong>in</strong> <strong>der</strong> Konfigurationsdatei landen <strong>in</strong> jedem Fall hier.<br />

<strong>E<strong>in</strong></strong>e weitere Möglichkeit <strong>der</strong> Überprüfung des Server-Zustandes bietet das Kommando<br />

smbstatus. <strong>E<strong>in</strong></strong>fach aufgerufen liefert es e<strong>in</strong>e Liste <strong>der</strong> aktuell gültigen Verb<strong>in</strong>dungen:<br />

l<strong>in</strong>ux:~ # smbstatus<br />

Samba version 3.0.9-SUSE<br />

PID Username Group Mach<strong>in</strong>e<br />

-------------------------------------------------------------------<br />

30208 test2 testgroup zxs (10.8.4.160)<br />

Service pid mach<strong>in</strong>e Connected at<br />

------------------------------------------------------w<strong>in</strong>share<br />

30208 zxs Wed Sep 21 18:33:58 2004<br />

No locked files<br />

12.3.1 Homeverzeichnisse für W<strong>in</strong>dows und L<strong>in</strong>ux<br />

Sollen Benutzer e<strong>in</strong> geme<strong>in</strong>sames Homeverzeichnis unter L<strong>in</strong>ux und W<strong>in</strong>dows benutzen, erlaubt<br />

dieses die spezielle Sektion [homes] <strong>in</strong> <strong>der</strong> Konfigurationsdatei /etc/samba/smb.conf:<br />

[homes]<br />

comment = Home Directories<br />

valid users = %S<br />

browseable = Yes<br />

read only = No<br />

create mask = 0640<br />

directory mask = 0750<br />

Möchte man e<strong>in</strong>er Benutzergruppe das geme<strong>in</strong>same Zugriffsrecht auf e<strong>in</strong>e Freigabe e<strong>in</strong>räumen,<br />

muss diese vorher <strong>in</strong> /etc/group def<strong>in</strong>iert se<strong>in</strong>.<br />

[gruppenfreigabe]<br />

comment = Beispiel e<strong>in</strong>er Gruppenfreigabe<br />

read only = No<br />

browseable = No<br />

valid users = @testgroup<br />

force group = testgroup<br />

path = /gruppenfreigabe<br />

create mask = 0770<br />

force create mode = 0770<br />

directory mask = 0770<br />

force directory mode = 0770


184 KAPITEL 12. SAMBA<br />

In diesem Beispiel dürfen alle Mitglie<strong>der</strong> <strong>der</strong> Gruppe ”testgroup” sich mit dem Share verb<strong>in</strong>den.<br />

Alle Dateien und Verzeichnisse werden so angelegt, dass nur Gruppenmitglie<strong>der</strong> sie<br />

än<strong>der</strong>n dürfen. Die Maske 0770 erzw<strong>in</strong>gt Gruppenschreibrechte und verh<strong>in</strong><strong>der</strong>t gleichzeitig,<br />

dass Dateien nur vom Erzeuger selbst geän<strong>der</strong>t werden dürfen. Die Option browseable =<br />

No sorgt dafür, dass die Freigabe nicht <strong>in</strong> <strong>der</strong> <strong>Netzwerk</strong>umgebung auftaucht.<br />

12.3.2 Druckerfreigaben<br />

Bis zu diesem Punkt wurden verschiedene Arten <strong>der</strong> Verzeichnisfreigaben diskutiert. Das<br />

SMB-Protokoll erlaubt es aber auch, Drucker im Netz geme<strong>in</strong>sam zu benutzen. Hierzu gibt<br />

es die Sektion [pr<strong>in</strong>ters] <strong>in</strong> <strong>der</strong> /etc/samba/smb.conf.<br />

[pr<strong>in</strong>ters]<br />

comment = All Pr<strong>in</strong>ters<br />

path = /var/tmp<br />

pr<strong>in</strong>table = Yes<br />

create mask = 0600<br />

browseable = No<br />

writable = yes<br />

public = yes<br />

Viele <strong>der</strong> Optionen s<strong>in</strong>d nun schon von den an<strong>der</strong>en Beispielen bekannt. Die Pfadangabe<br />

dient nun nicht als Freigabe, son<strong>der</strong>n als Spoolverzeichnis. In diesem landen die abzuarbeitenden<br />

Jobs <strong>der</strong> berechtigten Benutzer. In den Globale<strong>in</strong>stellungen <strong>der</strong> smb.conf s<strong>in</strong>d zwei<br />

weitere Variablen zu def<strong>in</strong>ieren. Der Adm<strong>in</strong> legt fest, welches Drucksystem Verwendung<br />

f<strong>in</strong>det. Auf mo<strong>der</strong>nen Distributionen greift er üblicherweise auf das Common <strong>Unix</strong> Pr<strong>in</strong>ter<br />

System (CUPS) zurück:<br />

pr<strong>in</strong>t<strong>in</strong>g = CUPS<br />

pr<strong>in</strong>tcap name = CUPS<br />

Der Dienst CUPS muss vor Samba gestartet werden. Dieses überprüft <strong>in</strong>sserv beim Anlegen<br />

<strong>der</strong> Runlevel-L<strong>in</strong>ks. Die Installation von Druckern unter L<strong>in</strong>ux erledigt <strong>der</strong> Adm<strong>in</strong> am<br />

e<strong>in</strong>fachsten mit den mitgelieferten Konfigurationswerkzeugen, beispielsweise YaST2 von<br />

SuSE. Nach e<strong>in</strong>em Neustart von Samba stehen die frisch def<strong>in</strong>ierten Druckerwarteschlangen<br />

auch W<strong>in</strong>dows-Clients zur Verfügung.<br />

12.3.3 Nachrichtendienst auf L<strong>in</strong>ux-Clients<br />

Der W<strong>in</strong>dows-Nachrichtendienst ist bei Anwen<strong>der</strong>n, die mit ihrer W<strong>in</strong>dows-Masch<strong>in</strong>e direkt<br />

<strong>in</strong>s Internet gehen vielleicht etwas <strong>in</strong> Verruf geraten. Vielfach meldeten sich unaufgefor<strong>der</strong>t<br />

explizite Damen, um ihre Services irgendwo im Netz anzubieten. Im abgeschlossenen<br />

privaten Netz kann <strong>der</strong> Dienst jedoch ganz nützlich se<strong>in</strong>. Damit auch e<strong>in</strong> L<strong>in</strong>ux-<br />

Client W<strong>in</strong>dows-Nachrichten empfangen kann, muss e<strong>in</strong> Samba laufen. Dieses wurde <strong>in</strong><br />

<strong>der</strong> [global]-Sektion um den <strong>E<strong>in</strong></strong>trag message command = sh -c ‘/opt/kde3/b<strong>in</strong>/kpopup<br />

’’%s’’ ’’%f’’‘ erweitert. Das Programm kpopup ist meistens e<strong>in</strong> eigenes Paket, welches<br />

unter Umständen nach<strong>in</strong>stalliert werden muss. Je nach Distribution können Pfad und<br />

Paketname variieren.<br />

12.4 Die zentrale Samba-Konfigurationsdatei<br />

In den bisherigen Abschnitten kamen schon Beispiele für mögliche Varianten <strong>der</strong> smb.conf<br />

vor. Da es e<strong>in</strong>e ziemlich große Zahl an Konfigurationsparametern, sollen die wichtigsten<br />

hier zusammengestellt werden. <strong>E<strong>in</strong></strong>e gute Hilfe ist auch die Manpage (man smb.conf).


12.4. DIE ZENTRALE SAMBA-KONFIGURATIONSDATEI 185<br />

12.4.1 Struktur<br />

Die Datei smb.conf wird durch Konfigurationsblöcke strukturiert. Der Block [global] - er<br />

steht am besten immer am Anfang <strong>der</strong> Datei - ist immer vorhanden und def<strong>in</strong>iert generelle<br />

Servere<strong>in</strong>stellungen. Daneben existiert e<strong>in</strong>e weitere Gruppe von optionalen Blöcken,<br />

<strong>der</strong>en Namen fest vorgegeben s<strong>in</strong>d. Der Block [homes] def<strong>in</strong>iert die Freigabe <strong>der</strong> Homeverzeichnisse<br />

<strong>der</strong> auf e<strong>in</strong>em L<strong>in</strong>uxsystem e<strong>in</strong>getragenen Benutzer. So können Adm<strong>in</strong>s dafür<br />

sorgen, dass ihre Nutzer sowohl unter L<strong>in</strong>ux als auch unter W<strong>in</strong>dows auf das selbe Homeverzeichnis<br />

zugreifen können. Mit [pr<strong>in</strong>ters] erfolgt die Freigabe <strong>der</strong> auf e<strong>in</strong>em L<strong>in</strong>uxrechner<br />

verfügbaren Drucker. [pr<strong>in</strong>t$] ist e<strong>in</strong>e spezielle Freigabe, die es Adm<strong>in</strong>istratoren erlaubt,<br />

Druckertreiber bereit zu stellen. So müssen diese dann nicht mittels CD e<strong>in</strong>gespielt werden,<br />

wenn e<strong>in</strong> W<strong>in</strong>dows-Client auf e<strong>in</strong>en L<strong>in</strong>uxdrucker zugreift für den dieser noch ke<strong>in</strong>en<br />

Treiber <strong>in</strong>stalliert hat. Die Sektion [netlogon] spielt dann e<strong>in</strong>e Rolle, wenn Samba über<br />

Datei- und Druckerfreigaben h<strong>in</strong>aus reichende Aufgaben übernehmen soll. Zusätzlich kann<br />

e<strong>in</strong> Samba-Adm<strong>in</strong>istrator weitere Blöcke def<strong>in</strong>ieren. Die Namen dieser Blöcke entsprechen<br />

den Freigabenamen, die e<strong>in</strong> W<strong>in</strong>dows-Client sieht o<strong>der</strong> anspricht.<br />

Die Zuweisung von Inhalten an e<strong>in</strong>e Konfiguration erfolgt mittels simplem ”=” - l<strong>in</strong>ks<br />

steht <strong>der</strong> Variablenname und rechts die Zuweisung. Zuweisungen von mehr als e<strong>in</strong>em Wert<br />

s<strong>in</strong>d durch e<strong>in</strong>fache Abstände vone<strong>in</strong>an<strong>der</strong> getrennt.<br />

12.4.2 Wichtige Optionen <strong>in</strong> <strong>der</strong> Sektion [global]<br />

• workgroup = SAMBA - ordnet den L<strong>in</strong>ux-Samba-Server <strong>in</strong> die W<strong>in</strong>dows-Arbeitsgruppe<br />

o<strong>der</strong> Doma<strong>in</strong> ”SAMBA” e<strong>in</strong>. Diese Masch<strong>in</strong>e ersche<strong>in</strong>t sodann <strong>in</strong> <strong>der</strong> W<strong>in</strong>dows-<strong>Netzwerk</strong>umgebung<br />

<strong>in</strong> e<strong>in</strong>em Unterordner mit diesem Namen.<br />

• netbios name = MYSMB - legt fest, dass die Masch<strong>in</strong>e unter dem W<strong>in</strong>dows-Namen<br />

”MYSMB” <strong>in</strong> <strong>der</strong> <strong>Netzwerk</strong>umgebung auftaucht und angesprochen werden kann. Dieser<br />

Name muss nicht identisch zum FQDN des TCP/IP Doma<strong>in</strong> Name System se<strong>in</strong>.<br />

Soll Samba e<strong>in</strong>fach den L<strong>in</strong>ux-Rechnernamen benutzen, kann dieser <strong>E<strong>in</strong></strong>trag entfallen.<br />

• os level = 64 - bestimmt darüber mit welchem Wert sich Samba für Browse-Wahlen<br />

anbietet. Das entscheidet beispielsweise über die Chance e<strong>in</strong> lokaler Masterbrowser<br />

e<strong>in</strong>er Arbeitsgruppe zu werden.<br />

• unix extensions = Yes - dieser Parameter stellt e<strong>in</strong>, ob Samba die CIFS Extensions<br />

für <strong>Unix</strong> unterstützt. Damit stehen dann Symbolische L<strong>in</strong>ks, Hard L<strong>in</strong>ks, ... zur<br />

Verfügung. Nur <strong>in</strong>teressant für <strong>Unix</strong>-Clients.<br />

• encrypt passwords = Yes - neuere W<strong>in</strong>dows-Clients erwarten verschlüsselte Passwörter.<br />

Deshalb kann nicht die klassische <strong>Unix</strong>-Shadow zum <strong>E<strong>in</strong></strong>satz kommen. Damit<br />

Samba korrekt authentifizieren kann, hat es entwe<strong>der</strong> Zugriff auf e<strong>in</strong>e lokale smbpasswd<br />

Datei o<strong>der</strong> kann gegen e<strong>in</strong>en entsprechenden Dienst authentifizieren.<br />

• log file = /var/log/log.%m - überschreibt die e<strong>in</strong>kompilierte Default-Position des<br />

Logfiles. %m wird durch den Dienst nmbd o<strong>der</strong> smbd ersetzt, welcher Log-Informationen<br />

generiert.<br />

• log level = 10 - steigende Werte generieren umfangreichere Logfiles. Es können<br />

e<strong>in</strong>zelnen Komponenten unterschiedliche Loglevel zugeordnet werden: log level =<br />

3 passdb:4 auth:8 w<strong>in</strong>b<strong>in</strong>d:3.


186 KAPITEL 12. SAMBA<br />

• b<strong>in</strong>d <strong>in</strong>terfaces only = Yes - def<strong>in</strong>iert, auf welchen <strong>Netzwerk</strong>schnittstellen <strong>der</strong><br />

Samba-Server se<strong>in</strong>e Dienste anbietet. Diese Option arbeitet mit <strong>der</strong> folgenden eng<br />

zusammen.<br />

• <strong>in</strong>terfaces = 127.0.0.1 10.8.4.254/24 - legt fest, dass sowohl das Loopback-<br />

Interface und das Interface mit <strong>der</strong> IP 10.8.4.254 bedient werden. Letzeres umfasst<br />

e<strong>in</strong> <strong>Netzwerk</strong> von 256 Masch<strong>in</strong>en (Netzmaske 255.255.255.0).<br />

• hosts allow = All - legt ke<strong>in</strong>e Beschränkungen auf bestimmte Masch<strong>in</strong>en fest. Hier<br />

könnte sonst auch e<strong>in</strong>e leerzeichengetrennte Liste von IP-Nummern stehen, die auf<br />

den Service zugreifen dürfen.<br />

• message command = /b<strong>in</strong>/bash -c ‘/usr/X11R6/b<strong>in</strong>/xterm -T ’’W<strong>in</strong>Popup<br />

Message’’ -e /usr/b<strong>in</strong>/vim %s; rm %s’ & - erlaubt es unter L<strong>in</strong>ux ebenfalls<br />

W<strong>in</strong>dows-Popup-Messages zu empfangen. Die Nachrichten reicht Samba an e<strong>in</strong> externes<br />

Programm - hier e<strong>in</strong> e<strong>in</strong>faches xterm mit vi weiter. %s enthält den Inhalt <strong>der</strong><br />

Nachricht, %t ist <strong>der</strong> Zielname, an den die Nachricht g<strong>in</strong>g. %f bezeichnet den Client,<br />

von dem die Nachricht kam.<br />

12.4.3 Wichtige Optionen <strong>der</strong> an<strong>der</strong>en Abschnitte<br />

• comment = All Pr<strong>in</strong>ters o<strong>der</strong> comment = Geme<strong>in</strong>same Daten - setzen e<strong>in</strong> Kommentar<br />

für e<strong>in</strong>e Freigabe fest, die an die Clients übermittelt wird.<br />

• path = /w<strong>in</strong>-export - legt für Dateifreigaben fest, welches Verzeichnis im L<strong>in</strong>ux-<br />

Dateibaum Samba bereitstellen soll. Für Drucker def<strong>in</strong>iert diese Variable das Spoolverzeichnis.<br />

• create mask = 0600 - def<strong>in</strong>iert das Rechtemuster beim Anlegen von Dateien. Hierzu<br />

werden die Permissions vom Mapp<strong>in</strong>g von DOS o<strong>der</strong> L<strong>in</strong>ux bestimmt und diese dann<br />

mit dem Muster UND-verknüpft. Das Muster entspricht dem von chmod bekannten.<br />

• force create mask = 0600 - erzw<strong>in</strong>gt das Setzen e<strong>in</strong>es bestimmten Bitmusters für<br />

die Zugriffsrechte. Im Bespiel würde e<strong>in</strong>e Datei auf jeden Fall die Rechte -rw-----bekommen.<br />

• directory mask = 0750 - stellt das Analogon zu ”create mask” dar. Es legt fest mit<br />

welchem Rechtemuster Samba neu angelegte Verzeichnisse versieht. Auch hier gibt es<br />

die Option ”force directory mask”.<br />

• valid users = test1 test2 - nimmt e<strong>in</strong>e Leerzeichenseparierte Liste von Benutzern<br />

auf, die auf diesen Dienst verb<strong>in</strong>den dürfen. In <strong>der</strong> Sektion [homes] f<strong>in</strong>det man<br />

hier valid users = %S. %S wird durch den Namen des sich anmeldenden Nutzers<br />

automatisch ersetzt. Deshalb muss nicht für jeden <strong>der</strong> vielleicht viele hun<strong>der</strong>t o<strong>der</strong><br />

tausend Benutzer umfassenden Masch<strong>in</strong>e e<strong>in</strong>e eigene Freigabe def<strong>in</strong>iert werden.<br />

• browseable = No - kontrolliert, ob die Freigabe <strong>in</strong> e<strong>in</strong>er Browse-Liste <strong>der</strong> <strong>Netzwerk</strong>umgebung<br />

angezeigt wird o<strong>der</strong> nicht.<br />

• read only = No o<strong>der</strong>writable = Yes - erlaubt dem Benutzer e<strong>in</strong>es Services Dateien<br />

o<strong>der</strong> Verzeichnisse anzulegen und zu verän<strong>der</strong>n.<br />

• pr<strong>in</strong>table = Yes - erlaubt dem Client auf das Drucker-Spooler-Verzeichnis zu schreiben.


12.5. CONTROLLER-FUNKTIONALITÄT 187<br />

• public = Yes alternativ guest ok = Yes - legen fest, ob e<strong>in</strong>e Verb<strong>in</strong>dung ohne Passwort<br />

möglich ist. Die Rechte s<strong>in</strong>d dann die des Gast-Accounts.<br />

12.4.4 Virtuelle Samba-Server<br />

Der Apache-Webserver macht es seit e<strong>in</strong>iger Zeit vor: <strong>E<strong>in</strong></strong> Server sollte <strong>in</strong> <strong>der</strong> Lage se<strong>in</strong>, mehr<br />

als e<strong>in</strong>e Identität gleichzeitig anzunehmen. Auch das SMB-Protokoll kann namensbasierte<br />

virtuelle Server anzubieten. Dabei bef<strong>in</strong>den sich alle <strong>in</strong> <strong>der</strong> gleichen Arbeitsgruppe. S<strong>in</strong>n und<br />

Zweck dieser Übung - e<strong>in</strong>e Masch<strong>in</strong>e ist unter mehreren Namen <strong>in</strong> <strong>der</strong> <strong>Netzwerk</strong>umgebung<br />

sichtbar. Der Adm<strong>in</strong> konfiguriert dieses Verhalten durch die Option netbios aliases =<br />

VIRTUAL01 VIRTUAL02 VIRTUAL03.<br />

<strong>E<strong>in</strong></strong> solcher <strong>E<strong>in</strong></strong>trag steht <strong>in</strong> <strong>der</strong> smb.conf <strong>in</strong> <strong>der</strong> Sektion [global]. Die Anzahl <strong>der</strong> Aliases<br />

(hier drei) schreibt Samba nicht vor. Kommt die Option ”netbios aliases” zum <strong>E<strong>in</strong></strong>satz,<br />

muss auch <strong>der</strong> ”netbios name” e<strong>in</strong>gestellt se<strong>in</strong>. Das ist jetzt noch nicht beson<strong>der</strong>s<br />

spannend: Schaut man sich nun <strong>in</strong> <strong>der</strong> <strong>Netzwerk</strong>umgebung auf dem Client die Freigaben<br />

von VIRTUAL01, so unterscheiden diese sich nicht von den an<strong>der</strong>en. Will man e<strong>in</strong>em<br />

virtuellen Server nun e<strong>in</strong>e angepasste <strong>E<strong>in</strong></strong>stellung verpassen, braucht man e<strong>in</strong>e separate<br />

smb.conf für diesen. Der Name <strong>der</strong> Datei lautet am besten auf smb.conf + Servername =<br />

smb.conf.virtual01. Hier<strong>in</strong> können nun wie<strong>der</strong> beliebige Freigaben e<strong>in</strong>gestellt werden. Damit<br />

Samba weitere Konfigurationsdateien beim Start berücksichtigt, fügt man e<strong>in</strong> <strong>in</strong>clude Statement<br />

e<strong>in</strong>:<strong>in</strong>clude = /etc/samba/smb.conf.%L". %L setzt den Servernamen e<strong>in</strong>, <strong>der</strong> beim<br />

NetBIOS-Verb<strong>in</strong>dungsaufbau angefor<strong>der</strong> wurde. Beim Aufsetzen <strong>der</strong> verschiedenen Dateien<br />

ist zu beachten, dass alle Freigaben <strong>der</strong> Hauptdatei auch für alle virtuellen Server gelten.<br />

12.5 Controller-Funktionalität<br />

Die bisher vorgestellten Beispiele demonstrierten nur e<strong>in</strong>en Teil <strong>der</strong> Sambafähigkeiten. Solche<br />

Konfigurationen s<strong>in</strong>d eher <strong>in</strong> sehr kle<strong>in</strong>en und kle<strong>in</strong>en <strong>Netzwerk</strong>en mit wenigen Rechnern<br />

und Nutzern s<strong>in</strong>nvoll. In vielen Fällen kann es für Adm<strong>in</strong>istratoren attraktiv se<strong>in</strong>, den<br />

Samba-Server auch zur Namensauflösung als WINS-Server o<strong>der</strong> als Ersatz e<strong>in</strong>es Primary<br />

Doma<strong>in</strong> Controllers zu verwenden. Dann möchte er jedoch häufig auch Ziele, wie S<strong>in</strong>gle-<br />

Sign-On verwirklichen. Hierzu läßt sich Samba mit dem Directory-Dienst LDAP verb<strong>in</strong>den.<br />

Die notwendigen Konfigurationen s<strong>in</strong>d dann jedoch deutlich komplexer.<br />

12.5.1 Der W<strong>in</strong>dows Namensdienst<br />

Viele werden sich fragen, wozu e<strong>in</strong> weiterer Namensdienst, wo es doch schon das Doma<strong>in</strong><br />

Name System (DNS) gibt. DNS ist fest mit TCP/IP verknüpft - SMB jedoch nicht, auch<br />

wenn es heute kaum noch jemand an<strong>der</strong>s als zusammen mit diesem e<strong>in</strong>setzt. Viele kennen<br />

das Problem: Den Namen e<strong>in</strong>er Person können sich viele noch merken, mit den dazugehörigen<br />

Telefonnummern wird es schwieriger. Dann zieht diese Person um und die Nummer<br />

än<strong>der</strong>t sich. Hier möchte man e<strong>in</strong> Telefonbuch haben, welches Namen Nummern zuordnen<br />

kann. Diese Aufgabe übernimmt <strong>der</strong> W<strong>in</strong>dows Internet Name Service. Dieser unterscheidet<br />

sich signifikant vom klassischen DNS. So könnte man ja mal versuchen e<strong>in</strong>er W<strong>in</strong>dows-<br />

Masch<strong>in</strong>e per DHCP e<strong>in</strong>en Hostnamen zuzuweisen, was unter L<strong>in</strong>ux/<strong>Unix</strong> ke<strong>in</strong> Problem<br />

darstellt. Auch habt man sicherlich schnell festgestellt, dass Microsoft unter dem Konzept<br />

e<strong>in</strong> W<strong>in</strong>dows-Domäne etwas ganz an<strong>der</strong>es sieht als e<strong>in</strong> Doma<strong>in</strong>-Name, wie <strong>in</strong> Web-Adressen.<br />

Der NetBIOS-Name-Service wird <strong>in</strong> den RFCs 1001 und 1002 beschrieben. Er bietet<br />

Clients e<strong>in</strong>e vergleichbare Art von Dienst wie DNS. Es bestehen jedoch e<strong>in</strong>ige wesentliche<br />

Hauptunterschiede. NetBIOS-Namen existieren <strong>in</strong> e<strong>in</strong>em flachen Namensbereich.


188 KAPITEL 12. SAMBA<br />

Das ist beim DNS völlig an<strong>der</strong>s. Ke<strong>in</strong>er h<strong>in</strong><strong>der</strong>t e<strong>in</strong>en daran, e<strong>in</strong>en Rechner <strong>in</strong> <strong>der</strong> Subdoma<strong>in</strong><br />

pool01.lehrpools.rechenzentrum.uni-freiburg.de mit dem Namen dozenten-rechnervorne-l<strong>in</strong>ks<br />

zu betreiben. Die Namenskomponenten zwischen den Punkten dürfen 63 und<br />

<strong>der</strong> Gesamtname nicht 255 Zeichen überschreiten. Damit lassen sich e<strong>in</strong>ige Hierarchiestufen<br />

erreichen.<br />

Unter W<strong>in</strong>dowsXP gibt es zwei Möglichkeiten e<strong>in</strong>en WINS-Server e<strong>in</strong>zutragen. Zum<br />

e<strong>in</strong>en kann <strong>der</strong> Adm<strong>in</strong> des Netzes diese Information mittels DHCP an alle Clients verteilten:<br />

Abfragen lässt sich diese Information beispielsweise mit ipconfig -all <strong>in</strong> <strong>der</strong> ”<strong>E<strong>in</strong></strong>gabeauffor<strong>der</strong>ung”.<br />

Alternativ kann man die IP für WINS auch fest bei <strong>der</strong> Alternativen<br />

Konfiguration von TCP/IP e<strong>in</strong>tragen.<br />

Abbildung 12.3: Zwei Wege <strong>der</strong> Zuweisung <strong>der</strong> WINS-Server-Adresse<br />

12.5.2 NetBIOS Namen<br />

NetBIOS-Namen bestehen aus 16 alphanumerischen Zeichen, wobei a bis z, A bis Z und<br />

0 bis 9 erlaubt s<strong>in</strong>d. Zusätzlich dürfen die Son<strong>der</strong>zeichen !@#$% ˆ &()-’{}. vorkommen.<br />

Die ersten 15 Zeichen dienen <strong>der</strong> Benennung, das sechzehnte Zeichen ist e<strong>in</strong>e Zahl von<br />

0x00 bis 0xFF hexadezimal, die den Ressourcentyp des Namens bestimmt. Es gibt zwei<br />

Namenstypen: Entwe<strong>der</strong> sie s<strong>in</strong>d exklusiv e<strong>in</strong>em Benutzer o<strong>der</strong> e<strong>in</strong>er Masch<strong>in</strong>e zugeordnet<br />

o<strong>der</strong> sie s<strong>in</strong>d Gruppennamen. Letztere können geme<strong>in</strong>sam benutzt werden. Der NetBIOS-


12.5. CONTROLLER-FUNKTIONALITÄT 189<br />

ID Bedeutung<br />

< 00 > NetBIOS Name e<strong>in</strong>es Rechners (Freigabename e<strong>in</strong>er Workstation)<br />

< 03 > Messenger Service Name - verwendet zum Empfangen und Übertragen<br />

von Nachrichten, sowohl für User- als auch Rechnernamen<br />

< 06 > Rout<strong>in</strong>g und Remote Access Service (RAS) - Name des Servers<br />

< 1B > Doma<strong>in</strong> Masterbrowser Name - wird von Masch<strong>in</strong>en im Netz genutzt,<br />

um den Primary Doma<strong>in</strong> Controller (PDC) e<strong>in</strong>er W<strong>in</strong>dows-Doma<strong>in</strong> zu<br />

kontaktieren<br />

< 1F > Network Dynamic Data Exchange (NetDDE) Dienst<br />

< 20 > Server-Dienstname - Zugriffspunkte für freigegebene Dateien und Verzeichnisse<br />

< 21 > RAS-Client<br />

< BE > Network Monitor Agent<br />

< BF > Network Monitor Utility<br />

Tabelle 12.1: <strong>E<strong>in</strong></strong>deutige Namen<br />

Name MYSMB< 00 > aus dem Beispiel des vorangegangenen Abschnitts ist e<strong>in</strong> e<strong>in</strong>deutiger<br />

Name. Er beschreibt den Computer ”MYSMB”. Die Bezeichnung SAMBA-TESTNETZ<<br />

1e > h<strong>in</strong>gegen ist e<strong>in</strong> Gruppenname. Ihn benutzen Brows<strong>in</strong>g-Clients, um e<strong>in</strong>en Master-<br />

Browser unter sich zu bestimmen.<br />

NetBIOS-Namen spannen nur e<strong>in</strong>en flachen Namensbereich auf. Trotzdem s<strong>in</strong>d <strong>in</strong> e<strong>in</strong>m<br />

gleichen logischen Subnetz mehrere Namensbereiche erlaubt. Diese werden durch den<br />

NetBIOS-Scope unterschieden. Der NetBIOS-Scope ist e<strong>in</strong> Str<strong>in</strong>g, <strong>der</strong> zusammen mit dem<br />

NetBIOS-Namen 256 Zeichen nicht überschreiten darf.<br />

ID Bedeutung<br />

< 1D > Masterbrowser-Name - wird vom Client benutzt, um auf den Masterbrowser<br />

zuzugreifen (je nach Netz lokaler Masterbrowser)<br />

< 1E > Gruppenname - kommt bei <strong>der</strong> Wahl von Browse-Mastern zum <strong>E<strong>in</strong></strong>satz<br />

Tabelle 12.2: Gruppenressourcen<br />

Die Namensvergabe im NetBIOS geht an<strong>der</strong>s als bei DNS vom Client aus: <strong>E<strong>in</strong></strong>e Masch<strong>in</strong>e<br />

versucht beim Start e<strong>in</strong>en Namen zu registrieren. Dieses ist erfolgreich, wenn <strong>der</strong><br />

Client-Rechner e<strong>in</strong> erfolgreiches Namensangebot gemacht und vom Server den Namen für<br />

sich erhalten hat. Versucht e<strong>in</strong>e Masch<strong>in</strong>e A e<strong>in</strong>en im Scope schon vergebenen Namen zu<br />

registrieren, antwortet <strong>der</strong> Besitzer mit dem H<strong>in</strong>weis, dass er den Namen behält. Dieses<br />

Verfahren ist e<strong>in</strong>e Methode <strong>in</strong>aktive Hosts zu entdecken, die den Besitz e<strong>in</strong>es Namens nicht<br />

offiziell aufgegeben haben.<br />

ID Bedeutung<br />

< 00 > Zum Empfang von Browser-Broadcasts<br />

< 1C > Arbeitsgruppenname - wird vom Doma<strong>in</strong> Controller registriert und<br />

enthält e<strong>in</strong>e Liste von Computern, die sich unter dieser Gruppe registriert<br />

haben Internet Gruppe<br />

< 1E > Gleiche Bedeutung, wie bei Gruppenressourcen<br />

< 20 > Identifikation e<strong>in</strong>e Gruppe von Rechnern für adm<strong>in</strong>istrative Zwecke<br />

Tabelle 12.3: Domänennamen


190 KAPITEL 12. SAMBA<br />

NetBIOS kennt zwei Methoden für die Registrierung und Auflösung von Namen: Broadcast<br />

und Po<strong>in</strong>t-to-Po<strong>in</strong>t. Die Po<strong>in</strong>t-to-Po<strong>in</strong>t-Registrierung und -Auflösung geschieht mittels<br />

e<strong>in</strong>es eigenen Dienstes - NetBIOS-Nameserver (NBNS).<br />

Broadcast-Registrierung o<strong>der</strong> -Auflösung heißt, dass die Anfrage an alle Hosts im gleichen<br />

logischen Subnetz mit dem gleichen Scope gesendet wird. Router können diese Broadcasts<br />

weitergeben. Das ist <strong>in</strong> <strong>der</strong> Regel <strong>in</strong> größeren Netzen mit vielen W<strong>in</strong>dwosmasch<strong>in</strong>en<br />

nicht sehr clever, da sehr viel Datenverkehr generiert wird. Diese Methode kam implizit <strong>in</strong><br />

den Konfigurationsbeispielen <strong>der</strong> vorangegangenen Abschnitte zum <strong>E<strong>in</strong></strong>satz.<br />

12.5.3 Der Nameserver (WINS)<br />

<strong>E<strong>in</strong></strong> WINS macht nicht nur zur Reduzierung <strong>der</strong> Menge des Broadcast-Datenverkehrs S<strong>in</strong>n,<br />

die durch e<strong>in</strong>e große Anzahl von NetBIOS-Clients erzeugt werden kann. <strong>E<strong>in</strong></strong> weiteres Problem<br />

<strong>in</strong> NetBIOS-Netzen ist die übliche Beschränkung <strong>der</strong> Broadcasts auf e<strong>in</strong> logisches<br />

Subnetz. Das führt dazu, dass Rechner <strong>in</strong> verschiedenen Subnetzen nicht über die Namen<br />

mite<strong>in</strong>an<strong>der</strong> kommunizieren können. WINS löst beide Probleme. Die Aufgabe e<strong>in</strong>es WINS<br />

übernimmt im Samba-Paket <strong>der</strong> nmbd.<br />

Die Aktivierung erfolgt durch die Option w<strong>in</strong>s support = Yes. Ist bereits e<strong>in</strong> solcher<br />

Dienst im Subnetz vorhanden, steht <strong>in</strong> ”w<strong>in</strong>s server” die IP des entsprechenden Rechners.<br />

”w<strong>in</strong>s support” sollte dann auf ”No” gesetzt se<strong>in</strong>. Da die Namensvergabe durch die Clients<br />

<strong>in</strong>itiiert wird, s<strong>in</strong>d ke<strong>in</strong>e wesentlichen <strong>E<strong>in</strong></strong>stellungen neben ”workgroup” und eventuell<br />

”netbios name” <strong>in</strong> <strong>der</strong> smb.conf notwendig.<br />

Samba erlaubt es DNS und WINS mite<strong>in</strong>an<strong>der</strong> zu verknüpfen. Wenn Samba als WINS-<br />

Server (w<strong>in</strong>s support = Yes) agiert, kann <strong>der</strong> nmbd alle Namensanfragen im DNS versuchen<br />

zu f<strong>in</strong>den, wenn er ke<strong>in</strong>en entsprechenden <strong>E<strong>in</strong></strong>trag <strong>in</strong> <strong>der</strong> lokalen WINS-Datenbank<br />

gefunden hat. Der Parameter ”dns proxy” bestimmt dieses Verhalten. Samba befragt standardmäßig<br />

den DNS, wenn e<strong>in</strong> Name nicht <strong>in</strong> WINS gefunden wird. Dieses Verhalten entspricht:<br />

dns proxy = Yes. Gibt es ke<strong>in</strong> DNS im eigenen <strong>Netzwerk</strong>, macht Sambas ”dns<br />

proxy” nicht viel S<strong>in</strong>n. Mittels dns proxy = No läßt er sich deaktivieren.<br />

<strong>E<strong>in</strong></strong>e Methode zur Namensauflösung <strong>in</strong> sehr kle<strong>in</strong>en <strong>Netzwerk</strong>en ist <strong>der</strong> Weg über e<strong>in</strong>e<br />

Textdatei. Das Konzept <strong>der</strong> lmhosts Datei kennt <strong>der</strong> Adm<strong>in</strong> vielleicht schon W<strong>in</strong>dows-<br />

Rechnern. Sie kann auch von Samba verwendet werden und entspricht funktionell <strong>der</strong> von L<strong>in</strong>ux<br />

bekannten Datei /etc/hosts. Der e<strong>in</strong>zige Unterschied: Sie ordnet IP-Adressen NetBIOS-<br />

Namen zu anstelle von Hostnamen. Samba schaut <strong>in</strong> <strong>der</strong> lmhosts nur für eigene Fragen nach,<br />

nicht für die Anfragen von an<strong>der</strong>en Masch<strong>in</strong>en im <strong>Netzwerk</strong>. Der Parameter ”name resolve<br />

or<strong>der</strong>” bestimmt dieses Verhalten. Wenn also die Reihenfolge name resolve or<strong>der</strong> =<br />

lmhosts w<strong>in</strong>s e<strong>in</strong>gestellt ist, würde Samba selbst ke<strong>in</strong>e Namensanfragen per Broadcast aussenden<br />

und nicht versuchen, Namen über den DNS aufzulösen. Es würde nur <strong>in</strong> <strong>der</strong> lokalen<br />

lmhosts Datei nachschauen und bei Misserfolg den konfigurierten WINS-Server befragen.<br />

<strong>E<strong>in</strong></strong>e NetBIOS-Namensanfrage macht nmblookup -R -U localhost MYSMB. Die Optionen<br />

sorgen dafür, dass e<strong>in</strong> WINS-Server befragt wird, anstatt lediglich e<strong>in</strong> Broadcast <strong>in</strong> das<br />

lokale Subnetz zu machen.<br />

Sambas lmhosts Datei und e<strong>in</strong>e, die von W<strong>in</strong>dows-Clients verwendet wird, unterscheiden<br />

sich im Format etwas. Es kann S<strong>in</strong>n machen hier den PDC e<strong>in</strong>zutragen, da manchmal sonst<br />

e<strong>in</strong>e Verb<strong>in</strong>dung auf diesen über Router h<strong>in</strong>weg fehlschlägt. Unter W<strong>in</strong>dowsXP liegt diese<br />

Datei <strong>in</strong> /WINDOWS/system32/drivers/etc. Üblicherweise sieht e<strong>in</strong> <strong>E<strong>in</strong></strong>trag so aus:<br />

10.8.4.254 MYSMB #PRE #DOM:SAMBA<br />

Für e<strong>in</strong>fache Hosts reicht die Komb<strong>in</strong>ation aus IP-Nummer und NetBIOS-Name.


12.6. SAMBA ALS PDC 191<br />

12.6 Samba als PDC<br />

Zur großen Form läuft Samba auf, wenn es nicht nur e<strong>in</strong>fache Freigaben bereitstellt und<br />

Namen auflöst. W<strong>in</strong>dowsnetze erlauben seit W<strong>in</strong>dows-NT e<strong>in</strong>e zentralisierte Steuerung. So<br />

können beispielsweise Benutzer zentral an e<strong>in</strong>er Masch<strong>in</strong>e authentifiziert werden, ohne dass<br />

sie auf dem lokalen Endgerät e<strong>in</strong>getragen s<strong>in</strong>d. Hierzu führte Microsoft das Konzept <strong>der</strong><br />

Domäne e<strong>in</strong>. <strong>E<strong>in</strong></strong>e Domäne def<strong>in</strong>iert e<strong>in</strong>e Gruppe von Rechnern, die e<strong>in</strong>e geme<strong>in</strong>same Benutzerdatenbank<br />

verwenden. Diese Benutzerdatenbank stellen sogenannte Primary (PDC)<br />

und Backup Doma<strong>in</strong> Controller (BDC) zur Verfügung. Für jedes Domänenmitglied - dieses<br />

können Benutzer und Rechner se<strong>in</strong> - wird e<strong>in</strong> zentrales Konto angelegt. Für jedes Domänenmitglied<br />

muss e<strong>in</strong> Benutzerkonto, auch Computerkonto genannt, auf dem PDC existieren.<br />

Samba kann die Rolle des PDC, bisher jedoch noch nicht die e<strong>in</strong>es BDC übernehmen.<br />

Hierzu stellt <strong>der</strong> Adm<strong>in</strong> <strong>in</strong> <strong>der</strong> globalen Sektion <strong>der</strong> smb.conf zuerst folgende Optionen e<strong>in</strong>:<br />

workgroup = SAMBA<br />

netbios name = MYSMB<br />

os level = 64<br />

doma<strong>in</strong> master = Yes<br />

doma<strong>in</strong> logons = Yes<br />

preferred master = Yes<br />

w<strong>in</strong>s support = Yes<br />

w<strong>in</strong>s proxy = Yes<br />

<strong>E<strong>in</strong></strong>ige Optionen sollten aus dem bisher gesagten bekannt se<strong>in</strong>. Der hohe OS-Level sorgt<br />

dafür, dass die Masch<strong>in</strong>e die Wahl <strong>der</strong> Browser gew<strong>in</strong>nt. Nun sollte <strong>der</strong> Samba-Server neu<br />

gestartet werden: rcsmb restart; rcnmb restart.<br />

Die Sache mit W<strong>in</strong>9x-Clients ist e<strong>in</strong>fach: Man kann den Samba-PDC sofort ohne weitere<br />

Konfiguration als Anmeldeserver verwenden. Beim <strong>E<strong>in</strong></strong>satz <strong>der</strong> professionellen W<strong>in</strong>dowsvarianten<br />

NT, 2000 o<strong>der</strong> XP s<strong>in</strong>d noch e<strong>in</strong>ige Nacharbeiten notwendig. Es müssen<br />

erst Computer-Konten existieren (Im Beispiel die Masch<strong>in</strong>e zxs) und e<strong>in</strong> Benutzer ”root”<br />

<strong>in</strong> die Samba-Passwort-Datenbank aufgenommen se<strong>in</strong>, bevor die Aufnahme e<strong>in</strong>er solchen<br />

Masch<strong>in</strong>e gel<strong>in</strong>gt.<br />

useradd -d /var/tmp -s /b<strong>in</strong>/false zxs\$<br />

smbpasswd -a -m zxs\$<br />

smbpasswd -a root<br />

Nun s<strong>in</strong>d auf <strong>der</strong> W<strong>in</strong>dows-Masch<strong>in</strong>e e<strong>in</strong>ige Schritte dran: Zuerst legt man e<strong>in</strong>en Key <strong>in</strong><br />

<strong>der</strong> W<strong>in</strong>dows-Registry an. Das geschieht beispielsweise mittels Datei, die <strong>in</strong> die Registry<br />

geladen wird:<br />

W<strong>in</strong>dows Registry Editor Version 5.00<br />

[HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters]<br />

"requiresignorseal"=dword:00000000<br />

Anschliessend startet man die Systemsteuerung und wählt dort den Unterpunkt ”System”.<br />

In den nun angezeigten Systemeigenschaften geht es zur Karteikarte mit den Computernamen.<br />

Hier<strong>in</strong> erlaubt <strong>der</strong> Knopf ” Än<strong>der</strong>n” die Aufnahme <strong>der</strong> Masch<strong>in</strong>e <strong>in</strong> e<strong>in</strong>e W<strong>in</strong>dows-<br />

Domäne. Im nun ersche<strong>in</strong>enden Dialog legt man den NetBIOS-Namen <strong>der</strong> Masch<strong>in</strong>e fest<br />

und tritt <strong>der</strong> Domäne bei. Dafür muss <strong>der</strong> Radio-Button ”Mitglied von Dommäne” aktiviert<br />

und <strong>der</strong> Name <strong>der</strong> beizutretenden Domäne daneben e<strong>in</strong>getragen werden. Nach dem


192 KAPITEL 12. SAMBA<br />

Abbildung 12.4: W<strong>in</strong>dowsXP-Masch<strong>in</strong>e <strong>in</strong> e<strong>in</strong>e Domäne aufnehmen<br />

Bestätigen durch ”OK” ersche<strong>in</strong>t e<strong>in</strong> Anmeldedialog für den Doma<strong>in</strong>-Adm<strong>in</strong>istrator. Das<br />

ist <strong>der</strong> Benutzer ”root”, dem mittels smbpasswd e<strong>in</strong> Sambapasswort verpasst wurde.<br />

Wenn nun alles glatt g<strong>in</strong>g, ersche<strong>in</strong>t e<strong>in</strong>e kurze Willkommensmeldung, die den Domänenbeitritt<br />

bestätigt (Siehe Abb. 12.6). Anschliessend muss <strong>der</strong> Client neu starten. Nach erfolgtem<br />

Start kommt nun <strong>der</strong> klassischen Anmelde-Dialog. Unter ”Optionen” können Benutzer<br />

jetzt auswählen, ob sie sich lokal an <strong>der</strong> Masch<strong>in</strong>e o<strong>der</strong> durch Authentifizierung gegen die<br />

Doma<strong>in</strong> ”SAMBA” anmelden wollen. Nun können sich alle Benutzer anmelden, die Samba<br />

bekannt s<strong>in</strong>d. Wenn die Beispiele aus den vorangegangenen Abschnitten beibehalten<br />

wurden, s<strong>in</strong>d das die Benutzer ”test1” und ”test2”.<br />

12.6.1 Benutzerprofile und Logon-Skripten<br />

Beim ersten Test-Log<strong>in</strong> sehen die Benutzerprofile <strong>der</strong> beiden ”test1” und ”test2” noch<br />

sehr nackt aus. Es ersche<strong>in</strong>t lediglich die W<strong>in</strong>dows-Vore<strong>in</strong>stellung des Desktops. Damit e<strong>in</strong><br />

Benutzer an verschiedenen Workstations stets das gleiche Profil vorf<strong>in</strong>det, läßt sich das<br />

Profil serverbasiert speichern. Es wird dann wärend des Anmeldevorganges auf die Client-<br />

Masch<strong>in</strong>e kopiert, vor <strong>der</strong> <strong>der</strong> Benutzer sitzt. Dieses kann nicht e<strong>in</strong>fach umgangen werden,<br />

da viele Anwendungsprogramme e<strong>in</strong> lokales Profil verlangen, das nicht e<strong>in</strong>fach, wie von<br />

L<strong>in</strong>ux gewohnt, im Homeverzeichnis liegt.<br />

Da sich die <strong>E<strong>in</strong></strong>stellungen im Laufe e<strong>in</strong>er Sitzung än<strong>der</strong>n können, müssen sie auch wie<strong>der</strong><br />

zurückgesichert werden. Das geschieht beim Abmelden von <strong>der</strong> Arbeitsstation.<br />

Will <strong>der</strong> Adm<strong>in</strong>istrator ganz neue Benutzer h<strong>in</strong>zufügen, muss er diese erst als L<strong>in</strong>ux-<br />

Accounts anlegen und anschliessend mit smbpasswd -a UserID <strong>in</strong> die Samba-Benutzerdatenbank<br />

kopieren. Nun müssen noch e<strong>in</strong>ige <strong>E<strong>in</strong></strong>tragungen <strong>in</strong> <strong>der</strong> smb.conf vorgenommen<br />

werden. Mit dem <strong>E<strong>in</strong></strong>trag


12.6. SAMBA ALS PDC 193<br />

Abbildung 12.5: Domänen-Aufnahme - Passwortdialog<br />

logon path = \\%N \%U\profile (für NT/2000/XP)<br />

; alternativ:<br />

logon home = \\%N \%U\profile (für W<strong>in</strong>dows 9x)<br />

<strong>in</strong> <strong>der</strong> [global]-Section <strong>der</strong> smb.conf wird im Heimatverzeichnis des Benutzers e<strong>in</strong> Verzeichnis<br />

namens profile erstellt und das Profil dort gespeichert. Der Service erhält e<strong>in</strong>e<br />

eigene Sektion <strong>in</strong> <strong>der</strong> Konfigurationsdatei:<br />

[profiles]<br />

comment = Network Profiles Service<br />

path = %H<br />

read only = No<br />

store dos attributes = Yes<br />

create mask = 0600<br />

directory mask = 0700<br />

Zur Aktivierung dieses Features ist e<strong>in</strong> Neustart des Servers erfor<strong>der</strong>lich. Damit bei <strong>der</strong><br />

Benutzeranmeldung noch Anpassungen se<strong>in</strong>er Umgebung vorgenommen werden können,<br />

kann e<strong>in</strong> Logon-Skript ausgeführt werden. Dieses def<strong>in</strong>iert <strong>der</strong> Adm<strong>in</strong> mittels logon script<br />

= scripts/default.bat<br />

Dieses Skript wird unter W<strong>in</strong>dows ausgeführt, sollte also die richtigen Zeilenschaltungen<br />

besitzen. Entwe<strong>der</strong> <strong>der</strong> Adm<strong>in</strong> editiert es unter W<strong>in</strong>dows selbst und kopiert es <strong>in</strong> das<br />

Netlogon-Verzeichnis. O<strong>der</strong> man konvertiert die Datei entsprechend. Auch dieser Dienst<br />

besitzt e<strong>in</strong>en eigenen Abschnitt:<br />

[netlogon]<br />

comment = Network Logon Service<br />

path = /hom/netlogon<br />

write list = @ntadm<strong>in</strong><br />

force group = ntadm<strong>in</strong>


194 KAPITEL 12. SAMBA<br />

create mask = 0664<br />

directory mask = 0775<br />

browsable = No<br />

Abbildung 12.6: Begrüßung <strong>in</strong> <strong>der</strong> neuen Domäne<br />

<strong>E<strong>in</strong></strong> Beispielskript für NT f<strong>in</strong>det sich je nach e<strong>in</strong>gesetzter L<strong>in</strong>ux-Distribution im Samba-<br />

Doku-Paket unter: .../doc/.../samba/examples/ntlogon/ntlogon.conf.<br />

12.7 Samba und LDAP<br />

Was <strong>in</strong> kle<strong>in</strong>en Netzen noch per Hand zu managen ist, will <strong>der</strong> Adm<strong>in</strong> <strong>in</strong> großen Netzen<br />

professioneller regeln. Das Anlegen von Benutzern nach dem soeben beschriebenen Verfahren<br />

ist für große Netze mit vielen L<strong>in</strong>ux- und W<strong>in</strong>dows-Rechnern, an denen sich e<strong>in</strong> Nutzer<br />

anmelden kann, zu umständlich. Hier hilft e<strong>in</strong>e hierarchische Datenbank weiter, die sich für<br />

solche Zwecke geradezu anbietet. LDAP - das Lightwight Directory Access Protocol (vgl.<br />

Kap. 13.3) ist e<strong>in</strong> verabschiedeter Internet-Standard. Microsoft verwendet dieses als Grundlage<br />

für se<strong>in</strong>e Active Directory Service. OpenLDAP ist e<strong>in</strong>e OpenSource-Implementierung,<br />

die standardmäßig bei Ihrer L<strong>in</strong>uxdistribution dabei se<strong>in</strong> sollte. LDAP arbeitet im Client-<br />

Server-Modell über TCP/IP. Samba kann als LDAP-Client agieren und alle Informationen,<br />

die es für se<strong>in</strong>en Betrieb braucht aus dem Directory beziehen und verän<strong>der</strong>te Daten wie<strong>der</strong><br />

zurückschreiben. Diese Daten landen sonst <strong>in</strong> den *.tdb, die sich unter /etc/samba und<br />

/var/lib/samba f<strong>in</strong>den.<br />

Sollte noch ke<strong>in</strong> LDAP-Server auf <strong>der</strong> Samba-Masch<strong>in</strong>e <strong>in</strong>stalliert se<strong>in</strong>, sollte man diesen<br />

Schritt nun nachholen. Neben den Basispaketen für den Server und die Client-Programme<br />

benötigt die Installation zusätzlich ”pam ldap”, ”nss ldap” und ”ldapsmb”, wenn auch die<br />

Verwaltung <strong>der</strong> L<strong>in</strong>ux-Benutzer mittels LDAP erfolgen soll.


12.7. SAMBA UND LDAP 195<br />

12.7.1 Konfiguration des LDAP-Servers<br />

Es gibt e<strong>in</strong> eigenes Kapitel dieses Skriptes 1 . Im nächsten Schritt erweitert man die Liste<br />

<strong>der</strong> standardmäßig benutzten Schemas um e<strong>in</strong>es für Samba3. Dieses <strong>in</strong>stalliert SuSE bereits<br />

automatisch <strong>in</strong> das richtige Verzeichnis. Kümmert sich Ihre Distribution nicht darum, f<strong>in</strong>det<br />

man sicherlich das Schema als Beispiel <strong>in</strong> <strong>der</strong> Dokumentation des Samba-Paketes.<br />

M<strong>in</strong>imalkonfiguration <strong>der</strong> /etc/openldap/slapd.conf<br />

<strong>in</strong>lcude /etc/openldap/schema/samba3.schema<br />

[ ... ]<br />

suffix "dc=my-doma<strong>in</strong>,dc=site"<br />

rootdn "cn=Manager,dc=my-doma<strong>in</strong>,dc=site"<br />

rootpw GeheiM<br />

Zusätzlich passen Sie die Benennung Ihrer LDAP-Wurzel an (suffix), def<strong>in</strong>ieren entsprechend<br />

den Datenbank-Manager (rootdn) und setzen für diesen e<strong>in</strong> Passwort (rootpw). <strong>E<strong>in</strong></strong>ige<br />

dieser <strong>E<strong>in</strong></strong>stellungen f<strong>in</strong>den Sie auch <strong>in</strong> <strong>der</strong> neuen smb.conf wie<strong>der</strong> (ldap *).<br />

12.7.2 Die neue Samba-Konfiguration<br />

Für den Schritt h<strong>in</strong> zu e<strong>in</strong>em LDAP-Backend sichern Sie am besten Ihre bisherige Konfiguration<br />

und starten mit e<strong>in</strong>er neuen. <strong>E<strong>in</strong></strong>e sehr gute Hilfe und Bauanleitung liefert auch <strong>der</strong><br />

Samba-Guide, <strong>der</strong> als PDF und HTML <strong>in</strong> <strong>der</strong> Samba-Dokumentation mitgeliefert wird.<br />

[global]<br />

unix charset = LOCALE<br />

workgroup = SMB-LDAP<br />

netbios name = MYSMBLDAP<br />

passdb backend = ldapsam:ldap://132.230.4.178/<br />

# username map = /etc/samba/smbusers<br />

log level = 1<br />

smb ports = 139 445<br />

doma<strong>in</strong> logons = Yes<br />

preferred master = Yes<br />

w<strong>in</strong>s support = Yes<br />

name resolve or<strong>der</strong> = w<strong>in</strong>s bcast hosts<br />

time server = Yes<br />

ldap suffix = dc=my-doma<strong>in</strong>,dc=site<br />

ldap mach<strong>in</strong>e suffix = ou=user<br />

ldap user suffix = ou=user<br />

ldap group suffix = ou=group<br />

ldap idmap suffix = ou=idmap<br />

ldap adm<strong>in</strong> dn = cn=Manager,dc=my-doma<strong>in</strong>,dc=site<br />

idmap backend = ldap:ldap://10.8.4.254/<br />

idmap uid = 10000-20000<br />

idmap gid = 10000-20000<br />

map acl <strong>in</strong>herit = Yes<br />

add user script = /var/lib/samba/sb<strong>in</strong>/smbldap-useradd.pl -a -m ’%u’<br />

delete user script = /var/lib/samba/sb<strong>in</strong>/smbldap-userdel.pl %u<br />

add group script = /var/lib/samba/sb<strong>in</strong>/smbldap-groupadd.pl -p ’%g’<br />

delete group script = /var/lib/samba/sb<strong>in</strong>/smbldap-groupdel.pl ’%g’<br />

add user to group script = /var/lib/samba/sb<strong>in</strong>/smbldap-groupmod.pl -m ’<br />

delete user from group script = /var/lib/samba/sb<strong>in</strong>/smbldap-groupmod.pl<br />

1 zum<strong>in</strong>dest <strong>in</strong> den meisten Kompilationen. (vgl. Kap. 13.3) Sonst gibt es das evtl. extra o<strong>der</strong> über<br />

http://goe.net per CVS zu beziehen.


196 KAPITEL 12. SAMBA<br />

set primary group script = /var/lib/samba/sb<strong>in</strong>/smbldap-usermod.pl -g ’%<br />

add mach<strong>in</strong>e script = /var/lib/samba/sb<strong>in</strong>/smbldap-useradd.pl -w ’%u’<br />

logon script = scripts\logon.bat<br />

logon path = \\%L\profiles\%U<br />

logon drive = H:<br />

pr<strong>in</strong>tcap name = CUPS<br />

pr<strong>in</strong>t<strong>in</strong>g = cups<br />

pr<strong>in</strong>ter adm<strong>in</strong> = Adm<strong>in</strong>istrator<br />

[homes]<br />

comment = Home Directories<br />

valid users = %S<br />

read only = No<br />

<strong>in</strong>herit permissions = Yes<br />

browseable = No<br />

[profiles]<br />

comment = Network Profiles Service<br />

path = %H<br />

read only = No<br />

create mask = 0600<br />

directory mask = 0700<br />

store dos attributes = Yes<br />

[users]<br />

comment = All users<br />

path = /home<br />

read only = No<br />

<strong>in</strong>herit permissions = Yes<br />

[groups]<br />

comment = All groups<br />

path = /home/groups<br />

read only = No<br />

<strong>in</strong>herit permissions = Yes<br />

Vor dem Neustart des Samba-Servers mit <strong>der</strong> umgebauten Konfiguration entfernt <strong>der</strong> Adm<strong>in</strong><br />

am besten noch die alten *.tdb und *.dat Dateien aus den beiden oben angebenen<br />

Verzeichnissen. Da <strong>der</strong> Samba-Server mit dem LDAP-Server kommuniziert und <strong>E<strong>in</strong></strong>träge<br />

anlegt, benötigt Samba das Manager-Passwort:<br />

l<strong>in</strong>ux2:/etc/samba # smbpasswd -w GeheiM<br />

Sett<strong>in</strong>g stored password for "cn=Manager,dc=my-doma<strong>in</strong>,dc=site" <strong>in</strong><br />

secrets.tdb<br />

Dann wird es Zeit die Server mit:<br />

rcsmb (re)start; rcnmb (re)start; rcldap (re)start; - o<strong>der</strong> passend zur jeweiligen<br />

Distribution - neu zu starten. Am besten wirft man e<strong>in</strong>en kurzen Blick <strong>in</strong>s Logfile<br />

/var/log/samba/log.smbd, ob ke<strong>in</strong>e Fehler aufgetreten s<strong>in</strong>d. Der Befehl smbclient -L<br />

localhost -U% sollte nun e<strong>in</strong>e Serverstatusmeldung generieren. Mit dem Kommando<br />

l<strong>in</strong>ux2:/etc/samba # net getlocalsid<br />

[2004/11/22 19:51:17, 0] lib/smbldap.c:smbldap_search_suffix(1101)<br />

smbldap_search_suffix: Problem dur<strong>in</strong>g LDAP search: (No such object)<br />

SID for doma<strong>in</strong> MYSMBLDAP is: S-1-5-21-2420552454-2742262544-3303448865<br />

l<strong>in</strong>ux2:/etc/samba # ls -la secrets.tdb<br />

-rw------- 1 root root 8192 Nov 22 19:45 secrets.tdb<br />

erzeugt man e<strong>in</strong>en e<strong>in</strong>deutigen Idenfier für die Masch<strong>in</strong>e. Anschliessend gibts auch wie<strong>der</strong><br />

e<strong>in</strong>e secrets.tdb.


12.7. SAMBA UND LDAP 197<br />

12.7.3 Die IDEALX-Skripten<br />

Nun braucht mal die idealx.com Samba-LDAP-Skripten. Die muss sich <strong>der</strong> Adm<strong>in</strong> meistens<br />

nicht irgendwoher organisieren. Sie sollten Bestandteil des Samba-Doc-Paketes se<strong>in</strong>.<br />

Die Autoren des Samba-Guide schlagen vor die Skripten und e<strong>in</strong> zu kompilierendes mkntpwd<br />

<strong>in</strong> e<strong>in</strong> Unterverzeichnis /var/lib/samba/sb<strong>in</strong> zu verschieben. Auf e<strong>in</strong>em SuSE-L<strong>in</strong>ux<br />

ist mkntpwd bereits unter /usr/sb<strong>in</strong> <strong>in</strong>stalliert. Der Compile-Schritt kann entfallen. Also<br />

führt man <strong>in</strong><br />

l<strong>in</strong>ux2:/usr/share/doc/packages/samba/examples/LDAP/smbldap-tools #<br />

cd mkntpwd<br />

make<br />

cd ..<br />

mkdir /var/lib/samba/sb<strong>in</strong><br />

cp *.pl *.pm mkntpwd/mkntpwd /var/lib/samba/sb<strong>in</strong><br />

chmod 755 /var/lib/samba/sb<strong>in</strong>/smb*.pl<br />

chmod 644 /var/lib/samba/sb<strong>in</strong>/smb*.pm<br />

aus. Nun steht e<strong>in</strong>e kle<strong>in</strong>e Konfigurationsorgie <strong>der</strong> Datei smbldap conf.pm an. Diese im<br />

Liebl<strong>in</strong>gseditor öffnen und los gehts:<br />

[ ... ]<br />

# Put your own SID<br />

# to obta<strong>in</strong> this number do: "net getlocalsid"<br />

$SID=’S-1-5-21-2420552454-2742262544-3303448865’;<br />

[ ... ]<br />

# LDAP Suffix<br />

# Ex: $suffix = "dc=IDEALX,dc=ORG";<br />

$suffix = "dc=my-doma<strong>in</strong>,dc=site";<br />

[ ... ]<br />

# Where are stored Users<br />

# Ex: $usersdn = "ou=Users,$suffix"; for ou=Users,dc=IDEALX,dc=ORG<br />

$usersou = q(user);<br />

$usersdn = "ou=$usersou,$suffix";<br />

# Where are stored Computers<br />

# Ex: $computersdn = "ou=Computers,$suffix";<br />

# for ou=Computers,dc=IDEALX,dc=ORG<br />

$computersou = q(user);<br />

$computersdn = "ou=$computersou,$suffix";<br />

# Where are stored Groups<br />

# Ex $groupsdn = "ou=Groups,$suffix"; for ou=Groups,dc=IDEALX,dc=ORG<br />

$groupsou = q(group);<br />

$groupsdn = "ou=$groupsou,$suffix";<br />

[ ... ]<br />

# B<strong>in</strong>d DN used<br />

# Ex: $b<strong>in</strong>ddn = "cn=Manager,$suffix"; for cn=Manager,dc=IDEALX,dc=org<br />

$b<strong>in</strong>ddn = "cn=Manager,$suffix";<br />

# B<strong>in</strong>d DN passwd used<br />

# Ex: $b<strong>in</strong>dpasswd = ’secret’; for ’secret’<br />

$b<strong>in</strong>dpasswd = "GeheiM";<br />

[ ... ]<br />

# Log<strong>in</strong> defs<br />

# Default Log<strong>in</strong> Shell<br />

# Ex: $_userLog<strong>in</strong>Shell = q(/b<strong>in</strong>/bash);<br />

$_userLog<strong>in</strong>Shell = q(/b<strong>in</strong>/bash);<br />

# Home directory prefix (without username)<br />

# Ex: $_userHomePrefix = q(/home/);


198 KAPITEL 12. SAMBA<br />

$_userHomePrefix = q(/home/);<br />

[ ... ]<br />

$_userSmbHome = q(\\\\MYSMBLDAP\\homes);<br />

[ ... ]<br />

$_userProfile = q(\\\\MYSMBLDAP\\profiles\\);<br />

[ ... ]<br />

$_userHomeDrive = q(H:);<br />

[ ... ]<br />

# Allows not to use smbpasswd (if $with_smbpasswd == 0 <strong>in</strong><br />

# smbldap_conf.pm) but prefer mkntpwd... most of the time, it’s<br />

# a wise choice :-)<br />

$with_smbpasswd = 0;<br />

$smbpasswd = "/usr/b<strong>in</strong>/smbpasswd";<br />

$mk_ntpasswd = "/usr/sb<strong>in</strong>/mkntpwd";<br />

Die <strong>E<strong>in</strong></strong>träge für $usersou und $groupsou müssen natürlich mit den Def<strong>in</strong>itionen <strong>in</strong> <strong>der</strong><br />

smb.conf übere<strong>in</strong>stimmen. Man ist jedoch nicht auf ”user” und ”group” festgelegt und<br />

können geän<strong>der</strong>t werden. Ähnliches gilt für den NetBIOS-Namen des Samba-Servers und<br />

den Buchstaben für das Home-Laufwerk.<br />

Für die meisten <strong>der</strong> <strong>der</strong>zeit aktuelle Samba-Versionen und Idealx-Skripten müssen Computer<br />

und Benutzer unterhalb e<strong>in</strong>es geme<strong>in</strong>samen LDAP-Knotens angelegt se<strong>in</strong>. In diesem<br />

Beispiel wurden die Computer <strong>in</strong> ”user” aufgenommen. Bei unterschiedlich gewählten Ablagen<br />

schlägt e<strong>in</strong> Domänenbeitritt fehl, da e<strong>in</strong>e Masch<strong>in</strong>e zwar sauber <strong>in</strong> den LDAP e<strong>in</strong>getragen,<br />

danach aber nicht wie<strong>der</strong>gefunden wird. Dieses Problem sche<strong>in</strong>t mit den neuesten<br />

Samba-Versionen und Idealx-Skripten2 behoben. Ebenfalls entfallen die Ergänzungen <strong>der</strong><br />

Objektklassen. Dafür muss dann jedoch die LDAP Schema-Datei von Idealx und nicht die<br />

von Samba e<strong>in</strong>gesetzt werden, da sonst e<strong>in</strong>ige Objekte nicht korrekt <strong>in</strong>itialisiert werden.<br />

Am Ende <strong>der</strong> Datei muss <strong>der</strong> Pfad zu mkntpwd stimmen. Bef<strong>in</strong>den sich LDAP- und<br />

Samba-Server nicht auf e<strong>in</strong>er Masch<strong>in</strong>e s<strong>in</strong>d für den <strong>Netzwerk</strong>zugriff des Samba auf LDAP<br />

natürlich noch IP und Port oben <strong>in</strong> <strong>der</strong> Datei anzugleichen. Generell fügt das Skript umfangreichere<br />

Informationen e<strong>in</strong>, als für e<strong>in</strong> re<strong>in</strong>es Samba-Backend benötigt würden. Zusätzlich<br />

s<strong>in</strong>d auch alle Informationen für <strong>Unix</strong>-Benutzer enthalten.<br />

Lei<strong>der</strong> s<strong>in</strong>d die Skripten je nach e<strong>in</strong>gesetzter L<strong>in</strong>ux-Distribution nicht ganz passend zu<br />

e<strong>in</strong>igen neueren LDAP-Versionen, so dass bei smbldap-populate.pl folgende o<strong>der</strong> ähnliche<br />

Fehlermeldung mehrfach auftreten kann:<br />

failed to add entry: no structural object class provided at<br />

./smbldap-populate2.pl l<strong>in</strong>e 323, l<strong>in</strong>e 8.<br />

Diese läßt sich <strong>in</strong> den Griff bekommen durch das <strong>E<strong>in</strong></strong>fügen zweier struktureller LDAP-<br />

Objektklassen <strong>in</strong> die Datei smbldap-populate.pl Zeilen 323 und folgende:<br />

dn: cn=Doma<strong>in</strong> Adm<strong>in</strong>s,$groupsdn<br />

objectClass: posixGroup<br />

+objectClass: top<br />

+objectClass: namedObject<br />

objectClass: sambaGroupMapp<strong>in</strong>g<br />

gidNumber: 512<br />

cn: Doma<strong>in</strong> Adm<strong>in</strong>s<br />

Das Ergebnis sieht dann so aus:<br />

l<strong>in</strong>ux2:/var/lib/samba/sb<strong>in</strong> # ./smbldap-populate.pl<br />

Us<strong>in</strong>g built<strong>in</strong> directory structure<br />

2 www.idealx.org - Version 0.8.5, die 0.8.4 funktioniert nicht korrekt


12.7. SAMBA UND LDAP 199<br />

add<strong>in</strong>g new entry: dc=my-doma<strong>in</strong>,dc=site<br />

add<strong>in</strong>g new entry: ou=user,dc=my-doma<strong>in</strong>,dc=site<br />

add<strong>in</strong>g new entry: ou=group,dc=my-doma<strong>in</strong>,dc=site<br />

add<strong>in</strong>g new entry: ou=computer,dc=my-doma<strong>in</strong>,dc=site<br />

add<strong>in</strong>g new entry: uid=Adm<strong>in</strong>istrator,ou=user,dc=my-doma<strong>in</strong>,dc=site<br />

add<strong>in</strong>g new entry: uid=nobody,ou=user,dc=my-doma<strong>in</strong>,dc=site<br />

add<strong>in</strong>g new entry: cn=Doma<strong>in</strong> Adm<strong>in</strong>s,ou=group,dc=my-doma<strong>in</strong>,dc=site<br />

add<strong>in</strong>g new entry: cn=Doma<strong>in</strong> Users,ou=group,dc=my-doma<strong>in</strong>,dc=site<br />

add<strong>in</strong>g new entry: cn=Doma<strong>in</strong> Guests,ou=group,dc=my-doma<strong>in</strong>,dc=site<br />

add<strong>in</strong>g new entry: cn=Adm<strong>in</strong>istrators,ou=group,dc=my-doma<strong>in</strong>,dc=site<br />

add<strong>in</strong>g new entry: cn=Users,ou=group,dc=my-doma<strong>in</strong>,dc=site<br />

add<strong>in</strong>g new entry: cn=Guests,ou=group,dc=my-doma<strong>in</strong>,dc=site<br />

add<strong>in</strong>g new entry: cn=Power Users,ou=group,dc=my-doma<strong>in</strong>,dc=site<br />

add<strong>in</strong>g new entry: cn=Account Operators,ou=group,dc=my-doma<strong>in</strong>,dc=site<br />

add<strong>in</strong>g new entry: cn=Server Operators,ou=group,dc=my-doma<strong>in</strong>,dc=site<br />

add<strong>in</strong>g new entry: cn=Pr<strong>in</strong>t Operators,ou=group,dc=my-doma<strong>in</strong>,dc=site<br />

add<strong>in</strong>g new entry: cn=Backup Operators,ou=group,dc=my-doma<strong>in</strong>,dc=site<br />

add<strong>in</strong>g new entry: cn=Replicator,ou=group,dc=my-doma<strong>in</strong>,dc=site<br />

add<strong>in</strong>g new entry: cn=Doma<strong>in</strong> Computers,ou=group,dc=my-doma<strong>in</strong>,dc=site<br />

Nach erfolgreichem Durlauf von smbldap-populate.pl muss <strong>der</strong> LDAP-Server neu gestartet<br />

werden: rcldap restart. Als nächstes benötigt <strong>der</strong> LDAP-Server e<strong>in</strong> Conta<strong>in</strong>er-Objekt<br />

für IDMAP-Informationen. Dieser ist überlicherweise nicht vorhanden und muss per Hand<br />

erzeugt werden. Dazu legen Sie e<strong>in</strong>e Datei idmap.ldif mit folgendem Inhalt an:<br />

dn: ou=Idmap,dc=my-doma<strong>in</strong>,dc=site<br />

objectClass: top<br />

objectClass: organizationalUnit<br />

ou: Idmap<br />

Diese Datei liegt im sogenannten LDIF vor - e<strong>in</strong> Austauschformat zwischen LDAP-Datenbanken.<br />

Mit dem Kommando<br />

ldapadd -x -D "cn=Manager,dc=my-doma<strong>in</strong>,dc=site"-w GeheiM -f idmap.ldif<br />

fügt man den <strong>E<strong>in</strong></strong>trag <strong>der</strong> LDAP-Datenbasis h<strong>in</strong>zu. Zur Kontrolle ob <strong>der</strong> LDAP-Server<br />

korrekt läuft und auf Requests antwortet, kann das Kommandozeilentool ldapsearch verwendet<br />

werden. Es funktioniert analog zu ldapadd zum Auslesen <strong>der</strong> Datenbank.<br />

l<strong>in</strong>ux2:/var/lib/samba/sb<strong>in</strong> # ldapsearch -x -b "dc=my-doma<strong>in</strong>,dc=site"<br />

# extended LDIF<br />

#<br />

# LDAPv3<br />

# base with scope sub<br />

# filter: (objectclass=*)<br />

# request<strong>in</strong>g: ALL<br />

#<br />

# my-doma<strong>in</strong>.site<br />

dn: dc=my-doma<strong>in</strong>,dc=site<br />

objectClass: dcObject<br />

objectClass: organization<br />

dc: my-doma<strong>in</strong><br />

o: my-doma<strong>in</strong><br />

[ ... ]<br />

# Idmap, my-doma<strong>in</strong>.site


200 KAPITEL 12. SAMBA<br />

dn: ou=Idmap,dc=my-doma<strong>in</strong>,dc=site<br />

objectClass: top<br />

objectClass: organizationalUnit<br />

ou: Idmap<br />

# search result<br />

search: 2<br />

result: 0 Success<br />

# numResponses: 21<br />

# numEntries: 20<br />

Es sollte e<strong>in</strong>e ziemlich lange Liste liefern. Dann wird es Zeit sich um den Name Service<br />

Switch zu kümmern, so dass dieser auch LDAP-Benutzer auflösen kann. An<strong>der</strong>nfalls kann<br />

Ihr System Samba-Usern ke<strong>in</strong>e System-User zuordnen.<br />

/etc/nsswitch.conf<br />

passwd: compat<br />

group: compat<br />

passwd_compat: ldap<br />

group_compat: ldap<br />

[ ... ]<br />

# o<strong>der</strong> alternativ<br />

passwd: files ldap<br />

group: files ldap<br />

Die <strong>E<strong>in</strong></strong>stellungen <strong>in</strong> dieser Datei als auch die LDAP-Client-Konfiguration kann ebenfalls<br />

mit YaST2 vorgenommen werden (Abb. yast2-ldap-client Erreichbar <strong>in</strong> YaST2 über <strong>Netzwerk</strong>dienste<br />

LDAP-Client).<br />

# /etc/ldap.conf<br />

host 127.0.0.1<br />

base ou=user,dc=my-doma<strong>in</strong>,dc=site<br />

ldap_version 3<br />

ssl no<br />

nss_map_attribute uniqueMember member<br />

pam_filter objectclass=posixAccount<br />

nss_base_passwd ou=user,dc=my-doma<strong>in</strong>,dc=site<br />

nss_base_shadow ou=user,dc=my-doma<strong>in</strong>,dc=site<br />

nss_base_group ou=group,dc=my-doma<strong>in</strong>,dc=site<br />

Wenn alles geklappt hat, liefert getent nun auch die Samba-Accounts und Gruppen:<br />

l<strong>in</strong>ux2:/var/lib/samba/sb<strong>in</strong> # getent passwd<br />

[ ... ]<br />

Adm<strong>in</strong>istrator:x:998:512:Netbios Doma<strong>in</strong> Adm<strong>in</strong>istrator:/home:/b<strong>in</strong>/false<br />

nobody:x:999:514:nobody:/dev/null:/b<strong>in</strong>/false<br />

l<strong>in</strong>ux2:/var/lib/samba/sb<strong>in</strong> # getent group<br />

[ ... ]<br />

Doma<strong>in</strong> Adm<strong>in</strong>s:x:512:Adm<strong>in</strong>istrator<br />

Doma<strong>in</strong> Users:x:513:<br />

Doma<strong>in</strong> Guests:x:514:


12.7. SAMBA UND LDAP 201<br />

Adm<strong>in</strong>istrators:x:544:<br />

[ ... ]<br />

Nun wäre es nur noch e<strong>in</strong> kle<strong>in</strong>er Schritt auch den Zugriff auf die L<strong>in</strong>uxmasch<strong>in</strong>e mittels<br />

PAM-LDAP e<strong>in</strong>zurichten. Dieses würde aber den Rahmen des hier Beschriebenen sprengen.<br />

Auf diesem Wege können Adm<strong>in</strong>istratoren jedoch e<strong>in</strong> ”s<strong>in</strong>gle-password” realisieren. Bisher<br />

waren nur Systembenutzer automatisch angelegt worden. Mit den entsprechenden Tools<br />

können nun weitere h<strong>in</strong>gezufügt werden:<br />

l<strong>in</strong>ux2:/var/lib/samba/sb<strong>in</strong> # ./smbldap-useradd.pl -m -a test1<br />

l<strong>in</strong>ux2:/var/lib/samba/sb<strong>in</strong> # ./smbldap-passwd.pl test1<br />

Chang<strong>in</strong>g password for test1<br />

New password :<br />

Retype new password :<br />

l<strong>in</strong>ux2:/var/lib/samba/sb<strong>in</strong> # ./smbldap-usermod.pl -u 0 Adm<strong>in</strong>istrator<br />

l<strong>in</strong>ux2:/var/lib/samba/sb<strong>in</strong> # ./smbldap-passwd.pl Adm<strong>in</strong>istrator<br />

Chang<strong>in</strong>g password for test1<br />

New password :<br />

Retype new password :<br />

Der Adm<strong>in</strong>istrator hat vorerst noch e<strong>in</strong>e UID ungleich null. Das än<strong>der</strong>t man mit smbldapusermod.pl<br />

wie im Beispiel gezeigt. Für ihn brauchen Sie auch noch e<strong>in</strong> Passwort für den<br />

späteren Domänenbeitritt. Mittels - <strong>der</strong> im smb.conf Beispiel auskommentierten - ”username<br />

map” kann <strong>der</strong> Adm<strong>in</strong>istrator auch auf den <strong>Unix</strong>-Adm<strong>in</strong> ”root” abgebildet werden. Diese<br />

Nutzer stehen sofort auch unter L<strong>in</strong>ux zur Verfügung, wie getent passwd o<strong>der</strong> id test1 3<br />

zeigen. Dass <strong>der</strong> User auch für die W<strong>in</strong>dowswelt sichtbar wird, zeigt:<br />

l<strong>in</strong>ux2:/var/lib/samba/sb<strong>in</strong> # pdbedit -Lv test1<br />

Search<strong>in</strong>g for:[(&(objectClass=sambaDoma<strong>in</strong>)(sambaDoma<strong>in</strong>Name=SMB-LDAP))]<br />

smbldap_open_connection: connection opened<br />

Search<strong>in</strong>g for:[(&(objectClass=sambaDoma<strong>in</strong>)(sambaDoma<strong>in</strong>Name=SMB-LDAP))]<br />

smbldap_open_connection: connection opened<br />

<strong>in</strong>it_sam_from_ldap: Entry found for user: test1<br />

<strong>Unix</strong> username: test1<br />

NT username: test1<br />

Account Flags: [U ]<br />

User SID: S-1-5-21-3516781642-1962875130-3438800523-3000<br />

Primary Group SID: S-1-5-21-3516781642-1962875130-3438800523-513<br />

Full Name: System User<br />

Home Directory: \\MYSMBLDAP\homes<br />

HomeDir Drive: H:<br />

Logon Script: test1.cmd<br />

Profile Path: \\MYSMBLDAP\profiles\test1<br />

Doma<strong>in</strong>: SMB-LDAP<br />

Account desc: System User<br />

Workstations:<br />

Munged dial:<br />

Logon time: 0<br />

Logoff time: Fri, 13 Dec 1901 21:45:51 GMT<br />

Kickoff time: Fri, 13 Dec 1901 21:45:51 GMT<br />

3 siehe hierzu auch den Teil zur Benutzerverwaltung mit LDAP


202 KAPITEL 12. SAMBA<br />

Password last set: Tue, 23 Nov 2004 01:49:59 GMT<br />

Password can change: 0<br />

Password must change: Fri, 07 Jan 2005 01:49:59 GMT<br />

Last bad password : 0<br />

Bad password count : 0<br />

Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF<br />

Nun könnte <strong>der</strong> Adm<strong>in</strong> noch e<strong>in</strong>e Gruppe ”testgroup” wie im e<strong>in</strong>führenden Beispiel des<br />

letzten Abschnitts anlegen: smbldap-groupadd.pl -a testgroup. Hatte man schon das<br />

Problem, dass smbldap-polulate.pl gepatcht werden musste, bleibt es e<strong>in</strong>em für smbldap<br />

tools.pm nicht erspart: Ab Zeile 283 müssen zwei Zuweisungen h<strong>in</strong>zugefügt werden:<br />

objectClass => ’top’,<br />

objectClass => ’namedObject’,<br />

die die Objektklasse ”posixGroup” ergänzen. Treten weitere Probleme mit e<strong>in</strong>em <strong>der</strong> an<strong>der</strong>en<br />

Tools auf, liegt es häufig an den <strong>E<strong>in</strong></strong>stellungen zu den LDAP-Objekten. <strong>E<strong>in</strong></strong> letzter<br />

Test überprüft die korrekte Zuweisung <strong>der</strong> Gruppen: net groupmap list.<br />

Damit sollte nun das Setup abgeschlossen und e<strong>in</strong> PDC mit verän<strong>der</strong>tem Backend aufgesetzt<br />

worden se<strong>in</strong>. Nun können Sie die Schritte wie im Abschnitt ”Samba als PDC”<br />

beschrieben wie<strong>der</strong>holen. Die Domäne heisst nun etwas an<strong>der</strong>s, um den Unterschied herauszustellen.<br />

Für den W<strong>in</strong>dows-Client än<strong>der</strong>t sich nicht viel (Abb. smbldap-doma<strong>in</strong> ”<strong>E<strong>in</strong></strong>fügen<br />

e<strong>in</strong>er W<strong>in</strong>dows-XP Masch<strong>in</strong>e <strong>in</strong> e<strong>in</strong>e Domäne mit Samba/LDAP-Backend” und ”Anmeldung<br />

an <strong>der</strong> neuen Domäne” Abb. xp-sambatestnetz).<br />

12.7.4 Fazit von Samba-LDAP-Aktionen<br />

Der Aufwand für e<strong>in</strong>e solche Aktion ist deutlich höher als ohne Verwendung von LDAP, da<br />

e<strong>in</strong>e ganze Reihe von Schritten durchzuführen s<strong>in</strong>d. Wegen <strong>der</strong> höheren Komplexität schleichen<br />

sich schneller Fehler e<strong>in</strong>. <strong>E<strong>in</strong></strong> Adm<strong>in</strong> braucht schon e<strong>in</strong>e Menge Geduld, um eventuell<br />

nicht passende Skripten anzupassen o<strong>der</strong> Software-Bugs zu umschiffen. Nicht jede Komb<strong>in</strong>ation<br />

von Samba und LDAP-Skripten funktioniert. Bei vermutlich je<strong>der</strong> Distribution ist mit<br />

händischer Nach- und Anpassungsarbeit zu rechnen. Belohnt wird <strong>der</strong> Adm<strong>in</strong>istrator am<br />

Ende jedoch von e<strong>in</strong>er komfortablen Lösung zum bequemen Management e<strong>in</strong>er W<strong>in</strong>dows-<br />

Domäne ohne hierfür teure Microsoft-Server-Lizenzen beschaffen zu müssen. Fast nebenbei<br />

fällt e<strong>in</strong> elegantes ”s<strong>in</strong>gle-password” für W<strong>in</strong>dows- und L<strong>in</strong>uxmasch<strong>in</strong>en ab. Zusätzlich kann<br />

LDAP dazu benutzt werden zentrale Adressbücher bereitzustellen o<strong>der</strong> e<strong>in</strong>e generelle Verwaltung<br />

bestimmter IT-Ressourcen zu realisieren.


Kapitel 13<br />

Ressourcenverwaltung<br />

13.1 <strong>E<strong>in</strong></strong>leitung<br />

In sehr grossen Netzen mit vielen gleichartigen Masch<strong>in</strong>en und vielen Benutzern, die sich<br />

an fast allen Masch<strong>in</strong>en anmelden können, ist die klassische dezentrale Verwaltung von<br />

Benutzern und Resourcen nicht mehr leistbar.<br />

13.2 NIS<br />

13.2.1 Zielsetzung<br />

Wenn e<strong>in</strong> lokales <strong>Netzwerk</strong> betrieben wird, besteht e<strong>in</strong> Ziel üblicherweise dar<strong>in</strong>, allen Benutzern<br />

e<strong>in</strong>e Umgebung zur Verfügung zu stellen, die überall gleich konfiguriert ist. Die Benutzer<br />

sollen e<strong>in</strong> e<strong>in</strong>heitliches Homeverzeichnis vorf<strong>in</strong>den und überall den gleichen Account<br />

verwenden, für den das gleiche Passwort gültig ist. Hierzu s<strong>in</strong>d die lebenswichtigen Daten<br />

wie Account-Informationen zwischen allen Hosts zu synchronisieren. Darüberh<strong>in</strong>aus lassen<br />

sich auch weitere Dateien synchronisieren, wie die /etc/hosts, /etc/services, /etc/groups ...<br />

Deshalb entwickelte Sun vor e<strong>in</strong>iger Zeit NIS, das Network Information System. NIS bietet<br />

e<strong>in</strong>fache Datenbank-Zugriffse<strong>in</strong>richtungen, die verwendet werden können, um Informationen,<br />

wie sie <strong>in</strong> den Dateien passwd und groups enthalten s<strong>in</strong>d, an alle Hosts im <strong>Netzwerk</strong><br />

zu verteilen.<br />

NIS basiert auf RPC (Remote Procedure Call und besteht aus e<strong>in</strong>em Server, e<strong>in</strong>er<br />

Bibliothek für die Client-Seite und verschiedenen adm<strong>in</strong>istrativen Tools. Bekannt wurde<br />

NIS unter dem Namen Yellow Pages (”Gelbe Seiten”), kurz YP, <strong>der</strong> heute immer noch<br />

häufig verwendet wird. An<strong>der</strong>erseits ist ”Yellow Pages” e<strong>in</strong> e<strong>in</strong>getragenes Warenzeichen,<br />

so daß Sun den Namen fallen ließ. Da <strong>der</strong> Begriff aber gut merkbar war, bleiben manche<br />

Namen e<strong>in</strong>fach hängen, und so lebt YP als Präfix für die Namen <strong>der</strong> meisten NIS-Befehle<br />

wie ypserv, ypb<strong>in</strong>d, ypset etc. weiter.<br />

13.2.2 NIS-Datenbanken<br />

NIS hält se<strong>in</strong>e Datenbank-Informationen <strong>in</strong> sogenannten Maps (etwa: Zuordnungen), die<br />

Key/Value-Paare <strong>in</strong> Hashtables speichern. Die Maps werden auf e<strong>in</strong>em zentralen Host vorgehalten,<br />

auf dem <strong>der</strong> NIS-Server läuft. Clients können die Informationen dann von diesem<br />

Server über verschiedene RPC-Calls abrufen.<br />

Die Maps selbst werden normalerweise aus Master-Textdateien wie /etc/hosts o<strong>der</strong><br />

/etc/passwd generiert. Aus manchen Dateien werden mehrere Maps generiert, jeweils e<strong>in</strong>e<br />

pro Suchschlüssel. Zum Beispiel können Sie die Datei hosts nach e<strong>in</strong>em Hostnamen ebenso<br />

203


204 KAPITEL 13. RESSOURCENVERWALTUNG<br />

wie nach e<strong>in</strong>er IP-Adresse durchsuchen. Entsprechend werden zwei NIS-Maps daraus erzeugt:<br />

hosts.byname und hosts.byaddr. Im folgenden wird e<strong>in</strong>e Aufstellung <strong>der</strong> gängigen<br />

Maps sowie <strong>der</strong> Dateien, aus denen sie generiert werden, gezeigt:<br />

13.2.3 NIS-Server<br />

13.2.4 NIS-Client<br />

Master-Datei Mapfile(s)<br />

/etc/hosts hosts.byname, hosts.byaddr<br />

/etc/networks networks.byname, networks.byaddr<br />

/etc/passwd passwd.byname, passwd.byuid<br />

/etc/group group.byname, group.bygid<br />

/etc/services services.byname, services.bynumber<br />

/etc/rpc rpc.byname, rpc.bynumber<br />

/etc/protocols protocols.byname, protocols.bynumber<br />

/etc/aliases mail.aliases<br />

Die Konfigurationsdatei für NIS ist yp.conf.<br />

# Syntax:<br />

# ypserver <br />

ypserver 134.76.60.23<br />

Tabelle 13.1: NIS-Maps<br />

Der NIS-Doma<strong>in</strong>-Str<strong>in</strong>g enthalten <strong>in</strong> <strong>der</strong> DHCP-Variablen ”option-doma<strong>in</strong> ”dxs”;” wird<br />

mittels des Kommandos ”doma<strong>in</strong>name name <strong>der</strong> nis doma<strong>in</strong>” e<strong>in</strong>getragen. Alternativ kann<br />

dieser <strong>E<strong>in</strong></strong>trag auch direkt nach /proc/sys/kernel/doma<strong>in</strong>name geschrieben werden.<br />

13.3 Hierarchische Datenbank: LDAP<br />

13.3.1 Intro<br />

In verteilten Umgebungen werden Informationen über Personen, Anwendungen, Dateien,<br />

Drucker und an<strong>der</strong>e, über das Netz zugängliche Ressourcen oft <strong>in</strong> e<strong>in</strong>er speziellen Datenbank,<br />

e<strong>in</strong>em sogenannten Directory gespeichert. <strong>E<strong>in</strong></strong> Directory Service ist e<strong>in</strong> Name Service,<br />

<strong>der</strong> neben <strong>der</strong> Zuordnung Name-Objekt auch Metadaten enthält.<br />

LDAP ist e<strong>in</strong> Kommunikationsprotokoll, das den Zugriff auf und die Aktualisierung von<br />

Directory Informationen regelt. Es ist e<strong>in</strong> offener Industriestandard und e<strong>in</strong>e vere<strong>in</strong>fachte<br />

Alternative zum X.500 Standard. Die <strong>Netzwerk</strong>kommunikation wird mittels TCP/IP standardmäßig<br />

auf Port 389 abgewickelt. Es kann Bestandteil von Browsern, wie z.B. Netscape<br />

se<strong>in</strong>. Ursprünglich wurde die Entwicklung von Netscape vorangetrieben, um den eigenen<br />

Kunden e<strong>in</strong> übergreifendes Directory für Mail- und Webanwendungen anbieten zu können.<br />

Das Protokoll arbeitet im klassischen Client-Server-Modell und verwendet Str<strong>in</strong>gs zur Datendarstellung.<br />

X.500 wurde 1988 von <strong>der</strong> CCITT spezifiziert als ”e<strong>in</strong>e Menge offener Systeme, die<br />

geme<strong>in</strong>sam e<strong>in</strong>e Datenbank halten, <strong>in</strong> <strong>der</strong> Informationen über Objekte <strong>der</strong> realen Welt<br />

abgelegt s<strong>in</strong>d”. Die CCITT spezifiziert im wesentlichen drei Protokolle: DAP (Directory<br />

Access Protocol), das zum Zugriff auf die Informationen dient, DSP (Directory Service<br />

Protocol), mit dem die Kommunikation zwischen Servern durchgeführt wird, und DISP


13.3. HIERARCHISCHE DATENBANK: LDAP 205<br />

(Directory Information Shadow<strong>in</strong>g Protocol). Allerd<strong>in</strong>gs setzt X.500 auf e<strong>in</strong>em vollständigen<br />

ISO/OSI-Stack auf, was e<strong>in</strong>en durchschlagenden Erfolg unmöglich machte.<br />

X.500 kann als vollständig bezeichnet werden: Nichts, was nicht <strong>in</strong> ihm gespeichert werden<br />

könnte. Das Verzeichnis stellt e<strong>in</strong>e Objektdatenbank dar. Zu speichernde Informationen<br />

werden <strong>in</strong> Objektklassen beschrieben: Attributnamen, Typen und <strong>der</strong>en Wertebereich.<br />

Wesentliche Nachteile s<strong>in</strong>d <strong>der</strong> hohe Implementationsaufwand und <strong>der</strong> ”schwergewichtige”<br />

Zugriff: die Kommunikation zwischen Client und Server erzeugt e<strong>in</strong>e recht hohe Netzlast, die<br />

e<strong>in</strong>er allgegenwärtigen Nutzung h<strong>in</strong><strong>der</strong>lich ist - denn schließlich spielt e<strong>in</strong> Verzeichnisdienst<br />

erst mit <strong>der</strong> allgeme<strong>in</strong>en Verwendung se<strong>in</strong>e Stärken aus. LDAP schlägt e<strong>in</strong>e Brücke.<br />

13.3.2 Was kann mit LDAP abgebildet werden<br />

LDAP speichert se<strong>in</strong>e Informationen <strong>in</strong> e<strong>in</strong>er Baumhierarchie. Diese Hierarchie kann diverse<br />

Informationen enthalten. <strong>E<strong>in</strong></strong>en Überblick verschafft RFC 2307, <strong>in</strong> dem mögliche Inhalte<br />

<strong>der</strong> LDAP Hierarchie spezifiziert s<strong>in</strong>d:<br />

• Benutzer<br />

• Gruppen<br />

• IP-Dienste<br />

• IP-Protokolle<br />

• RPC’s<br />

• NIS-<strong>Netzwerk</strong>gruppen<br />

• Boot-Informationen<br />

• <strong>E<strong>in</strong></strong>hängepunkte für Dateisysteme<br />

• IP-Hosts und <strong>Netzwerk</strong>e<br />

• RFC 822 konforme Mail-Aliase<br />

Hat man Daten <strong>in</strong> Datenbanken, so ist es wichtig, diese Informationen zu strukturieren.<br />

Beson<strong>der</strong>s, wenn viele verschiedene Clients auf die Datenbank zugreifen wollen, zum Beispiel<br />

Netscape, Outlook und an<strong>der</strong>e, muss die Struktur genau def<strong>in</strong>iert se<strong>in</strong>. Wenn e<strong>in</strong> Mailclient<br />

e<strong>in</strong>e eMail-Adresse braucht, muss er wissen, wie er diese bekommt.<br />

<strong>E<strong>in</strong></strong>e zentrale Benutzerverwaltung setzt das Vorhandense<strong>in</strong> e<strong>in</strong>er geeigneten Authentifizierungs<strong>in</strong>frastruktur<br />

auf je<strong>der</strong> Masch<strong>in</strong>e voraus. Hierfür wurde ursprünglich von SUN<br />

vor <strong>in</strong>zwischen knapp 15 Jahren das Network Information System (NIS) entwickelt, welches<br />

lange Zeit den Standard e<strong>in</strong>er verteilten Benutzerauthentifizierung und -verwaltung<br />

im <strong>Unix</strong>-Umfeld darstellte. Dieses wird <strong>in</strong> e<strong>in</strong>em eigenen Abschnitt kurz erklärt.<br />

Mit den heute üblichen heterogenen Umgebungen, <strong>der</strong>en vielfältigen Authentifizierungsanfor<strong>der</strong>ungen<br />

(z.B. die Anmeldung an e<strong>in</strong>em Radius-Server für Modem- o<strong>der</strong> ISDN-<strong>E<strong>in</strong></strong>wahl)<br />

und den gestiegenen Sicherheitsfor<strong>der</strong>ungen konnte NIS nicht mehr mithalten. Neben<br />

den <strong>in</strong>zwischen recht umfänglichen Daten, die die Verwaltung e<strong>in</strong>es Benutzers erfo<strong>der</strong>t,<br />

kommen weitere Wünsche nach e<strong>in</strong>er zentralisierten Organisation von Rechner-Pools h<strong>in</strong>zu.<br />

Diese Daten sollen meist ebenfalls geeignet abgelegt und komfortabel zugänglich gemacht<br />

werden. Solche Aufgaben übernehmen ab e<strong>in</strong>em bestimmten Umfang <strong>der</strong> Anfor<strong>der</strong>ungen<br />

Datenbanken.


206 KAPITEL 13. RESSOURCENVERWALTUNG<br />

13.3.3 Das Datenmodell<br />

Bevor e<strong>in</strong>e Datenbank mit Inhalten bestückt wird, sollte sich <strong>der</strong> Adm<strong>in</strong>istrator mit ihrer<br />

Funktionsweise grob vertraut machen. Das betrifft den Aufbau und die Ablage <strong>der</strong> Daten sowie<br />

das zugrundeliegende Kommunikationsmodell. Es gibt immer e<strong>in</strong>e e<strong>in</strong>zige Wurzel “root”<br />

e<strong>in</strong>es Directories. Diese kann später we<strong>der</strong> verschoben noch verän<strong>der</strong>t werden. Unterhalb<br />

von Root kann entwe<strong>der</strong> e<strong>in</strong> Country-Objekt ’c’ o<strong>der</strong> o<strong>der</strong> e<strong>in</strong>e Organisation ’o’ angelegt<br />

werden. <strong>E<strong>in</strong></strong> Country-Objekt muss nicht, darf aber nur e<strong>in</strong>mal existieren. Unterhalb von<br />

Country o<strong>der</strong> Root muss e<strong>in</strong> Organisationsobjekt ’o’ stehen. Davon kann es mehrere geben.<br />

Unterhalb von ’o’ folgen Blattobjekte, die <strong>E<strong>in</strong></strong>träge o<strong>der</strong> Organisationsuntere<strong>in</strong>heiten ’ou’.<br />

<strong>E<strong>in</strong></strong>zelne <strong>E<strong>in</strong></strong>träge werden vielfach durch ihren Common Name ’cn’ bezeichnet.<br />

Alternativ zur beschriebenen Hierarchie hat sich die Bezeichnung durch Doma<strong>in</strong> Components<br />

durchgesetzt. Die Wurzel wird beg<strong>in</strong>nend mit <strong>der</strong> Toplovel-Doma<strong>in</strong> des Doma<strong>in</strong><br />

Name Service bezeichnet, <strong>in</strong> den darunterliegenden Hierachien folgen Second-Level-Doma<strong>in</strong><br />

und vergleichbar mit den Organizational Units Sublevel-Doma<strong>in</strong>-Namen.<br />

Jedes Objekt im Verzeichnis muss e<strong>in</strong>en e<strong>in</strong>deutigen Namen, den “Dist<strong>in</strong>guished Name”<br />

’dn’ haben. Der ’dn’ setzt sich aus den ’dn’ von <strong>der</strong> Wurzel aus zusammen, häufig<br />

wird <strong>der</strong> Common Name zur Benennung verwendet. <strong>E<strong>in</strong></strong>träge <strong>in</strong> e<strong>in</strong>em Objekt werden als<br />

Attribute bezeichnet. <strong>E<strong>in</strong></strong> Attribut ist <strong>der</strong> bereits angesprochene Common Name. Für e<strong>in</strong>e<br />

e<strong>in</strong>fache Benutzerverwaltung benötigt e<strong>in</strong> L<strong>in</strong>ux-Sytem, wenn <strong>der</strong> Common Name den Realnamen<br />

e<strong>in</strong>er Person o<strong>der</strong> Dienstes bezeichnet, noch e<strong>in</strong>en e<strong>in</strong>deutigen Str<strong>in</strong>g, welcher die<br />

User-ID bezeichnet, e<strong>in</strong>e e<strong>in</strong>deutige Benutzer- und Gruppennummer, e<strong>in</strong> Homeverzeichnis,<br />

e<strong>in</strong>e Log<strong>in</strong>shell und eventuell e<strong>in</strong> Passwort. Zusätzliche Daten, wie Telefonnummer, Emailadresse,<br />

persönliche Webseite, Büro und weiteres können gespeichert werden, wenn aus <strong>der</strong><br />

Datenbank auch die Adressbücher <strong>der</strong> Mitarbeiter gefüttert werden sollen.<br />

Ist <strong>der</strong> übergeordnete Conta<strong>in</strong>er für das jeweilige Objekt bereits bestimmt, genügt zur<br />

Angabe auch e<strong>in</strong> “Relative Dist<strong>in</strong>guished Name” ’rdn’. Der Dist<strong>in</strong>guished Name kann mit<br />

dem Primärschlüssel e<strong>in</strong>er relationalen Datenbank verglichen werden.<br />

Je<strong>der</strong> Directory-<strong>E<strong>in</strong></strong>trag beschreibt e<strong>in</strong> Objekt, welches e<strong>in</strong>e Person, e<strong>in</strong>e Verwaltungse<strong>in</strong>heite<br />

o<strong>der</strong> auch e<strong>in</strong> Server, Drucker usw. se<strong>in</strong> kann. Je<strong>der</strong> <strong>E<strong>in</strong></strong>trag hat e<strong>in</strong>en ausgezeichneten<br />

bzw. herausgestellten Namen, den dist<strong>in</strong>guished name abgekürzt dn. <strong>E<strong>in</strong></strong> <strong>E<strong>in</strong></strong>trag kann<br />

e<strong>in</strong>e Reihe weiterer Attribute besitzen, die e<strong>in</strong>en Typ und e<strong>in</strong>en bzw. mehrere Werte haben.<br />

Syntax Bedeutung<br />

b<strong>in</strong> Daten im B<strong>in</strong>ärformat, Bil<strong>der</strong>, Ausführbare Dateien<br />

ces CaseSensitive, Textfel<strong>der</strong><br />

cis CaseInSensitive, Textfel<strong>der</strong><br />

tel Telefonnummer<br />

dn Dist<strong>in</strong>guished Name<br />

Tabelle 13.2: Attribute im LDAP<br />

Auf Basis dieser Attribute s<strong>in</strong>d allgeme<strong>in</strong>e <strong>E<strong>in</strong></strong>tragsschemata def<strong>in</strong>ierbar. Hierbei implementiert<br />

LDAP folgendes Namensmodell: Je<strong>der</strong> ausgezeichnete Name (dn) besteht aus e<strong>in</strong>er<br />

Sequenz von Teilen, die als relativ ausgezeichnete Namen bezeichnet werden. Alle <strong>E<strong>in</strong></strong>träge<br />

s<strong>in</strong>d hierarchisch e<strong>in</strong>geordnet. <strong>E<strong>in</strong></strong> Beispiel e<strong>in</strong>es dn:<br />

cn=Sandra Buchf<strong>in</strong>g, ou=Informatik,o=Universität Freiburg,c=DE.<br />

Diese Informationen bzw. Teilbäume können dann über mehrere Server verteilt se<strong>in</strong>.<br />

Es gibt viele Def<strong>in</strong>itionen, an die man sich halten muss, soll am Ende auch etwas funktionieren.<br />

Bei LDAP werden Objekte mit Eigenschaften verwendet. Jedes Objekt hat zunächst


13.3. HIERARCHISCHE DATENBANK: LDAP 207<br />

Attribute Alias Syntax Beschreibung Beispiel<br />

CommonName cn cis Name e<strong>in</strong>es <strong>E<strong>in</strong></strong>trages<br />

Sandra Buchf<strong>in</strong>k<br />

surname sn cis Nachname<br />

Person<br />

e<strong>in</strong>er Buchf<strong>in</strong>k<br />

TelephoneNumber tel Telefonnummer 01-12345<br />

organizationalUnit ou cis Name e<strong>in</strong>er Abteilung<br />

Informatik<br />

Organization o cis Name <strong>der</strong> Organisa- Universität Freitionburg<br />

Country c cis Name des Landes Deutschland, DE<br />

Owner dn Ausgezeichneter cn=Sandra Buch-<br />

Name des <strong>E<strong>in</strong></strong>f<strong>in</strong>k, o=Universität<br />

tragbesitzers Freiburg,c=DE<br />

Tabelle 13.3: Beispiel<br />

e<strong>in</strong>en e<strong>in</strong>deutigen Namen, an dem es von allen an<strong>der</strong>en unterschieden werden kann (“dist<strong>in</strong>guished<br />

name”, kurz: DN). Die Eigenschaften e<strong>in</strong>es Objekts hängen davon ab, zu welcher<br />

Klasse es gehört (es kann sogar zu mehreren Klassen gehören).<br />

Klassen von Objekten Es s<strong>in</strong>d nun Klassen für Personen def<strong>in</strong>iert. Zu e<strong>in</strong>er Person<br />

(”person”) gehören zw<strong>in</strong>gend objectClass (die Objektklasse selbst), sn (<strong>der</strong> Nachname)<br />

und cn (commonName, etwa: üblicher Name, hier wird üblicherweise Vor- und Nachname<br />

verwendet). Zusätzlich gibt es optionale Attribute, die nicht unbed<strong>in</strong>gt angegeben werden<br />

müssen. Diese s<strong>in</strong>d hier description (beliebige Beschreibung), seeAlso (verweist auf e<strong>in</strong> an<strong>der</strong>es<br />

Objekt), telephoneNumber (Telefonnummer), userPassword (e<strong>in</strong> Password). Da häufig<br />

noch mehr Attribute mit e<strong>in</strong>er Person verknüpft s<strong>in</strong>d, gibt es auch e<strong>in</strong>e Objektklasse organizationalPerson.<br />

Diese hat die gleichen gefor<strong>der</strong>ten Eigenschaften wie Person, aber erlaubt<br />

viele optionale Eigenschaften, wie zum Beispiel Fel<strong>der</strong> <strong>der</strong> Adresse und e<strong>in</strong>e FAX-Nummer.<br />

Es gibt noch mehr Klassen, zum Beispiel newPilotPerson (die als optionale Eigenschaft e<strong>in</strong>e<br />

eMail-Adresse mail e<strong>in</strong>führt) und natürlich Klassen für Organisationen/Firmen, Abteilungen,<br />

Bil<strong>der</strong>, Dokumente, Geräte und so weiter.<br />

Eigenschaften von Klassen Wenn man also irgendwo e<strong>in</strong>e Person im Verzeichnis hat,<br />

ist klar, dass diese e<strong>in</strong> cn haben muss, und e<strong>in</strong>e Telefonnummer haben kann (und dass diese<br />

genau telephoneNumber heißt). Soll e<strong>in</strong> Programm e<strong>in</strong>e eMail-Addresse suchen, muss es nur<br />

nachschauen, ob es e<strong>in</strong> Attribut mail gibt. Es kann eben nicht se<strong>in</strong>, dass diese Eigenschaft<br />

email o<strong>der</strong> an<strong>der</strong>s heißt. mail ist vorgeschrieben, und nichts an<strong>der</strong>es.<br />

An diesem Beispiel kann man zeigen, dass e<strong>in</strong>e natürliche Person zu mehreren Klassen<br />

gehört: person, organizationalPerson und newPilotPerson. <strong>E<strong>in</strong></strong>e weitere Klasse ist top.<br />

Im Pr<strong>in</strong>zip gehört so ziemlich jedes Objekt auch zur Klasse top, die lediglich vorschreibt,<br />

dass die Eigenschaft objectClass gesetzt se<strong>in</strong> muss (was bei allen Personenklassen ohneh<strong>in</strong><br />

gefor<strong>der</strong>t ist).<br />

Durch das Verwenden <strong>der</strong> Klassen def<strong>in</strong>iert man, welche Eigenschaften vorhanden se<strong>in</strong><br />

müssen, und welche vorhanden se<strong>in</strong> können. <strong>E<strong>in</strong></strong>e Person darf zum Beispiel ke<strong>in</strong>e Farbtiefe<br />

haben, e<strong>in</strong> Bild h<strong>in</strong>gegen schon. Verwendet man mehrere Klassen, so muss das entsprechende<br />

Objekt alle von m<strong>in</strong>destens e<strong>in</strong>er Klasse gefor<strong>der</strong>ten Eigenschaften haben, und kann alle<br />

<strong>in</strong>sgesamt erlaubten Eigenschaften haben.


208 KAPITEL 13. RESSOURCENVERWALTUNG<br />

Typen von Eigenschaften Den Eigenschaften s<strong>in</strong>d Typen zugeordnet. Es gibt Typen,<br />

die e<strong>in</strong>e Zeichenkette enthalten, und an<strong>der</strong>e, die e<strong>in</strong>e Telefonnummer enthalten. Diese Typen<br />

def<strong>in</strong>ieren weiterh<strong>in</strong>, wie Werte verglichen (und damit sortiert und gesucht) werden.<br />

Zeichenketten beispielsweise kann man abhängig von Groß- und Kle<strong>in</strong>schreibung vergleichen<br />

o<strong>der</strong> auch nicht. Bei Telefonnummer spielen gewisse Füllzeichen möglicherweise ke<strong>in</strong>e<br />

Rolle. Passwörter h<strong>in</strong>gegen müssen genau übere<strong>in</strong>stimmen.<br />

Es gibt nun also Objekte (die zu bestimmten Klassen gehören). Diese werden nun an<strong>der</strong>en<br />

Objekten untergeordnet (beziehungsweise werden an<strong>der</strong>en Objekte viele zugeordnet,<br />

dies ist die richtige Reihenfolge). Diese baumartige Struktur kann man (mit etwas Phantasie)<br />

auch <strong>in</strong> <strong>der</strong> Realität f<strong>in</strong>den: In Län<strong>der</strong>n gibt es Firmen, <strong>in</strong> Firmen gibt es Abteilungen<br />

und <strong>in</strong> Abteilungen letztlich Personen. So wird das <strong>in</strong> LDAP auch gesehen. Die Baumstruktur<br />

wird hier “Directory Information Tree” genannt, kurz DIT. Es gibt Län<strong>der</strong> (also<br />

Objekte <strong>der</strong> Klasse country [Land]) mit u.A. <strong>der</strong> Eigenschaft c (kurz für country), Firmen<br />

(organisations mit <strong>der</strong> Eigenschaft o), Abteilungen (Organisations <strong>E<strong>in</strong></strong>heit, organisationalUnit<br />

mit <strong>der</strong> Eigenschaft ou). Hierbei enthalten diese Objekte normalerweise viele weitere<br />

Eigenschaften; e<strong>in</strong>e Firma hat zum Beispiel e<strong>in</strong>e Postanschrift.<br />

Schema <strong>E<strong>in</strong></strong> Schema ist e<strong>in</strong>e Sammlung von Strukturdef<strong>in</strong>itionen. Dazu gehören die Beschreibungen<br />

vieler Klassen und <strong>der</strong> verwendeten Typen. Es gibt verschiedene Schemata,<br />

und es ist möglich, eigene zu def<strong>in</strong>ieren (o<strong>der</strong> bestehende zu erweitern) was jedoch nicht <strong>in</strong>teroperabel<br />

mit an<strong>der</strong>en Diensten se<strong>in</strong> muss. Das liegt außerhalb <strong>der</strong> Betrachtungen dieses<br />

Textes.<br />

Der LDAP-Server speichert se<strong>in</strong>e Informationen <strong>in</strong> e<strong>in</strong>er baumartigen Struktur. Diese<br />

wird auch “Directory Information Tree” genannt, kurz DIT.<br />

Root<br />

dn: dc=local<br />

dn: dc=wg,dc=local<br />

rdn: ou=user rdn: ou=group<br />

dn: uid=test01,ou=user,dc=wg,dc=local (rdn: uid=test01)<br />

dn: uid=test02,ou=user,dc=wg,dc=local (rdn: uid=test02)<br />

dn: uid=...<br />

rdn: ou=devices<br />

Abbildung 13.1: Aufbau <strong>der</strong> LDAP-Datenstruktur für die Beispielkonfiguration<br />

Zum Speichern benutzt <strong>der</strong> LDAP-Server Objekte, die er mit Attributen versehen kann.<br />

Dadurch kann man die Struktur flexibel an die eigenen Bedürfnisse anpassen. Das RFC<br />

2256 spezifiziert die Standard-Objekte des LDAP-Servers. Man wird zwar von niemandem<br />

gezwungen, diese Vorgaben auch zu benutzen. Um aber e<strong>in</strong>e möglichst große Konformität<br />

zu erzielen, sollte man diese Vorgaben e<strong>in</strong>halten.


13.4. LDAP PRAKTISCH 209<br />

13.3.4 Das Protokoll<br />

LDAP ist e<strong>in</strong> Kommunikationsprotokoll, das den Zugriff auf und die Aktualisierung von<br />

Directory Informationen regelt. Es ist e<strong>in</strong> offener Industriestandard und e<strong>in</strong>e vere<strong>in</strong>fachte<br />

Alternative zum X.500 Standard. Die <strong>Netzwerk</strong>kommunikation wird mittels TCP/IP standardmäßig<br />

auf Port 389 abgewickelt. Es kann Bestandteil von Browsern, wie z.B. Netscape<br />

se<strong>in</strong>. Ursprünglich wurde die Entwicklung von Netscape vorangetrieben, um den eigenen<br />

Kunden e<strong>in</strong> übergreifendes Directory für Mail- und Webanwendungen anbieten zu können.<br />

Das Protokoll arbeitet im klassischen Client-Server-Modell und verwendet Str<strong>in</strong>gs zur Datendarstellung.<br />

Das Protokoll def<strong>in</strong>iert <strong>in</strong>sgesamt neun Operationen:<br />

1. b<strong>in</strong>d - Verb<strong>in</strong>den mit e<strong>in</strong>em LDAP-Server<br />

2. authenticate - Anmeldung mit e<strong>in</strong>er bestimmten ID, sonst erfolgt e<strong>in</strong>e anonyme B<strong>in</strong>dung<br />

(welche üblicherweise den niedrigsten Privilegienlevel hat)<br />

3. unb<strong>in</strong>d - Verb<strong>in</strong>dung mit dem Server geregelt beenden<br />

4. abandon - Verb<strong>in</strong>dung mit dem Server (ungeregelt) abbrechen<br />

5. add - H<strong>in</strong>zufügen von Objekten und Attributen<br />

6. search - Suchen<br />

7. modify - Än<strong>der</strong>n von Objekten und Attributen<br />

8. compare - Vergleich<br />

9. delete - Löschen von Objekten o<strong>der</strong> Attributen<br />

Die ersten vier Operationen dienen zum Verb<strong>in</strong>den, Abmelden und wechseln des Benutzerlevels.<br />

Mit verschiedenen Benutzerleveln s<strong>in</strong>d üblicherweise verschiedene Zugriffsrechte<br />

verknüpft. Der Datenbank-Adm<strong>in</strong>istrator, <strong>der</strong> mit rootdn <strong>in</strong> <strong>der</strong> Konfigurationsdatei angegeben<br />

wird, hat immer alle Rechte.<br />

LDAP erlaubt die Vergabe von Zugriffsrechten auf bestimmte <strong>E<strong>in</strong></strong>träge und Attribute<br />

se<strong>in</strong>er Datenbasis. ’None’ erteilt ke<strong>in</strong>e Rechte, ’compare’ erlaubt Vergleiche. Es liefert<br />

wahr o<strong>der</strong> falsch für den Passwort-Check zurück, so muss das Passwort zum Vergleich die<br />

Datenbank nie verlassen. ’search’ gestattet das Suchen. ’read’ für Lesen ist die Komb<strong>in</strong>ation<br />

von ’compare’ und ’search’, ’write’ erlaubt das Schreiben und ’delete’ das Löschen von<br />

Attributen und <strong>E<strong>in</strong></strong>trägen.<br />

13.4 LDAP praktisch<br />

13.4.1 Server- und Clientprogramme unter L<strong>in</strong>ux<br />

Es existieren e<strong>in</strong>e ganze Reihe von verfügbaren Produkten, die hierarchische Verzeichnisdienste<br />

nach dem LDAP-Standard def<strong>in</strong>ieren. Wie bei fast allen offenen Standards existiert<br />

mit dem OpenLDAP e<strong>in</strong>e freie Implementierung, welche unter <strong>der</strong> GPL zur Verfügung steht.<br />

Der Daemon unter L<strong>in</strong>ux heisst slapd und f<strong>in</strong>det sich je nach Distribution unterhalb<br />

des Diensteverzeichnisses /usr/sb<strong>in</strong>. Die zentrale Konfigurationsdatei des LDAP-Servers<br />

slapd.conf bef<strong>in</strong>det sich üblicherweise unterhalb von /etc/openldap. Die Datenbankdateien


210 KAPITEL 13. RESSOURCENVERWALTUNG<br />

landen üblicherweise unterhalb von /var/lib/ldap. Dieses Verzeichnis wird <strong>in</strong> <strong>der</strong> slapd.conf<br />

spezifiziert und kann dort entsprechend geän<strong>der</strong>t werden.<br />

Mit dem LDAP-Paket werden e<strong>in</strong>e Reihe von Userspace-Utilities mit<strong>in</strong>stalliert. Die beiden<br />

Programme slapadd und slapcat eignen sich für direkte Transformation des LDIF-<br />

Formats <strong>in</strong> das Datenbankformat und umgekehrt. Dazu wird ke<strong>in</strong> laufen<strong>der</strong> Server benötigt.<br />

Für Operationen auf <strong>der</strong> LDAP-Datenbank f<strong>in</strong>den sich die Werkzeuge ldapsearch, ldapadd,<br />

ldapdelete und ldapmodify. Diese implementieren die im Abschnitt zum Protokoll<br />

genannten Operationen.<br />

13.4.2 <strong>E<strong>in</strong></strong>e e<strong>in</strong>fache Beispielkonfiguration<br />

Damit e<strong>in</strong> erster kle<strong>in</strong>er <strong>E<strong>in</strong></strong>druck gewonnen werden kann wie LDAP funktioniert, folgt e<strong>in</strong><br />

e<strong>in</strong>faches Beispiel für e<strong>in</strong>e kle<strong>in</strong>e Benutzerverwaltung. Dazu wird e<strong>in</strong> LDAP-Server auf <strong>der</strong><br />

Masch<strong>in</strong>e e<strong>in</strong>gerichtet, auf <strong>der</strong> sich die beiden Benutzer test01 und test02 anmelden sollen.<br />

Dieses Setup erfor<strong>der</strong>t ke<strong>in</strong>e verschlüsselten Verb<strong>in</strong>dungen, da die gesamte Kommunikation<br />

über das Loopback-Interface 1 abgewickelt wird.<br />

Die Serverkonfigurationsdatei /etc/openldap/slapd.conf könnte wie folgt aussehen:<br />

# LDAP Server Konfigurationsdatei: /etc/openldap/slapd.conf<br />

<strong>in</strong>clude /etc/openldap/schema/core.schema<br />

<strong>in</strong>clude /etc/openldap/schema/cos<strong>in</strong>e.schema<br />

<strong>in</strong>clude /etc/openldap/schema/nis.schema<br />

pidfile /var/run/slapd/slapd.pid<br />

argsfile /var/run/slapd/slapd.args<br />

access to attr=userpassword<br />

by anonymous auth<br />

by self write<br />

access to attr=objectclass,entry,mail,cn,sn,log<strong>in</strong>Shell,userPassword<br />

by self write<br />

by * read<br />

access to attr=objectclass,entry,uid,mail,cn,sn,uidNumber,gidNumber,\<br />

homeDirectory,log<strong>in</strong>Shell<br />

by * read<br />

access to *<br />

by users read<br />

by anonymous auth<br />

database ldbm<br />

directory /var/lib/ldap<br />

suffix "dc=wg,dc=local"<br />

rootdn "cn=Manager,dc=wg,dc=local"<br />

rootpw nicht-weitersagen<br />

Nachdem die Konfigurationsdatei angelegt, die Existenz des Datenverzeichnisses und<br />

dessen Rechte überrüft wurden, kann <strong>der</strong> Dienst e<strong>in</strong>fach e<strong>in</strong>mal gestartet werden:<br />

1 Interfacename: lo, IP-Adresse: 127.0.0.1


13.4. LDAP PRAKTISCH 211<br />

/usr/lib/openldap/slapd -f /etc/openldap/slapd.conf -h ldap://127.0.0.1:389<br />

-u ldap -g ldap<br />

In <strong>der</strong> Log-Datei /var/log/message kann <strong>der</strong> Erfolg <strong>der</strong> Aktion überprüft werden. Hier<br />

landen Meldungen zu Fehlern <strong>in</strong> <strong>der</strong> Konfigurationsdatei.<br />

Die Datei für die <strong>E<strong>in</strong></strong>richtung <strong>der</strong> Clientkommandos und das PAM-Modul:<br />

/etc/openldap/ldap.conf sollte die folgenden Zeilen enthalten:<br />

# LDAP Client Konfigurationsdatei: /etc/openldap/ldap.conf<br />

BASE dc=wg,dc=local<br />

URI ldap://127.0.0.1:389<br />

Nun verb<strong>in</strong>det sich das Suchkommando ldapsearch -x schon mit <strong>der</strong> Datenbank. Es<br />

liefert jedoch noch ke<strong>in</strong>e Daten zurück, solange die Datenbank noch nicht gefüllt wurde. Am<br />

schnellsten geht die Bestückung <strong>der</strong> Datenbank durch das Anlegen e<strong>in</strong>er Datei im LDAP-<br />

Austauschformat LDIF (Lightwight Directory Interchange Format). Die Objekte werden<br />

von <strong>der</strong> Wurzel aus folgend def<strong>in</strong>iert und e<strong>in</strong>getragen:<br />

# LDIF-Datei zur Def<strong>in</strong>ition von zwei Beispielnutzern: user.ldif<br />

dn: dc=wg, dc=local<br />

objectClass: organization<br />

o: wg<br />

dn: ou=user, dc=wg, dc=local<br />

ou: user<br />

objectclass: organizationalUnit<br />

dn: ou=group, dc=wg, dc=local<br />

ou: group<br />

objectclass: organizationalUnit<br />

dn: cn=user, ou=group, dc=wg, dc=local<br />

objectClass: posixGroup<br />

objectClass: top<br />

cn: user<br />

userPassword: crypt<br />

gidNumber: 100<br />

dn: uid=test01, ou=user, dc=wg, dc=local<br />

uid: test02<br />

cn: Test-User Nr. 1<br />

sn: Test-User 1<br />

objectclass: person<br />

objectclass: posixAccount<br />

objectclass: shadowAccount<br />

objectclass: top<br />

userPassword: secret<br />

shadowLastChange: 11472<br />

shadowMax: 99999<br />

shadowWarn<strong>in</strong>g: 7<br />

uidNumber: 1001


212 KAPITEL 13. RESSOURCENVERWALTUNG<br />

gidNumber: 100<br />

homeDirectory: /home/test02<br />

log<strong>in</strong>Shell: /b<strong>in</strong>/ksh<br />

dn: uid=test02, ou=user, dc=wg, dc=local<br />

uid: test02<br />

cn: Test-User Nr. 2<br />

sn: Test-User 2<br />

objectclass: person<br />

objectclass: posixAccount<br />

objectclass: shadowAccount<br />

objectclass: top<br />

userPassword: topsecret<br />

shadowLastChange: 11472<br />

shadowMax: 99999<br />

shadowWarn<strong>in</strong>g: 7<br />

uidNumber: 1002<br />

gidNumber: 100<br />

homeDirectory: /home/test02<br />

log<strong>in</strong>Shell: /b<strong>in</strong>/bash<br />

Die Übertragung des LDIFs <strong>in</strong> die laufende Datenbank geschieht mittels des Kommandos:<br />

ldapadd -c -x -D ”cn=Manager,dc=wg,dc=local” -W -f user.ldif. Hier f<strong>in</strong>det<br />

man den Datenbank-Manager-Account wie<strong>der</strong>, <strong>der</strong> <strong>in</strong> <strong>der</strong> Serverkonfigurationsdatei angegeben<br />

wurde. Beim Aufruf des Kommandos folgt die Frage nach dem zugehörigen Passwort.<br />

Nun liefert ldapsearch -x bereits e<strong>in</strong>iges mehr. Die Daten, die zu sehen s<strong>in</strong>d, s<strong>in</strong>d<br />

diejenigen, welche für den anonymen Zugriff freigeben s<strong>in</strong>d. Soll <strong>der</strong> vollständige Datensatz<br />

angezeigt werden, gibt man die Datenbank-Manager-Credentials mit: ldapsearch -x -<br />

D ”cn=Manager,dc=wg,dc=local” -w nicht-weitersagen. Dabei fällt auf, dass die<br />

Ausgabe im bereits bekannten LDIF-Format erfolgt.<br />

Der nächste Schritt ist nun die <strong>E<strong>in</strong></strong>richtung <strong>der</strong> PAM-Authentifizierung gegen die frisch<br />

e<strong>in</strong>gerichtete LDAP-Datenbank. Dazu wird als Beispiel das PAM-Modul für den SSH-Log<strong>in</strong><br />

angepasst:<br />

# /etc/pam.d/sshd<br />

auth required pam_nolog<strong>in</strong>.so<br />

auth sufficient pam_ldap.so<br />

auth required pam_unix2.so use_first_pass # set_secrpc<br />

account required pam_unix2.so<br />

password required pam_pwcheck.so<br />

password required pam_ldap.so use_authtok<br />

password required pam_unix2.so use_first_pass use_authtok<br />

session required pam_unix2.so<br />

session required pam_limits.so<br />

session required pam_env.so<br />

session optional pam_mail.so<br />

Weiterh<strong>in</strong> muss nun noch dem Name Service Switch die alternative zu den klassischen<br />

Dateien passwd und shadow mitgeteilt werden:<br />

# /etc/nsswitch.conf


13.4. LDAP PRAKTISCH 213<br />

[ ... ]<br />

passwd: files ldap<br />

group: files ldap<br />

[ ... ]<br />

Anschliessend benötigt <strong>der</strong> Name Service Cach<strong>in</strong>g Daemon (nscd) eventuell noch e<strong>in</strong>en<br />

Neustart und e<strong>in</strong> e<strong>in</strong>facher Test mit e<strong>in</strong>em SSH-Log<strong>in</strong>-Versuch kann erfolgen. Dieses sollte<br />

nun funktionieren, jedoch steht noch ke<strong>in</strong> Homeverzeichnis zur Verfügung.<br />

Die Liste <strong>der</strong> mittels LDAP zur Verfügung gestellten Benutzerkennungen kann mittels<br />

getent angezeigt werden. Diese <strong>E<strong>in</strong></strong>träge ersche<strong>in</strong>en nach den Daten aus <strong>der</strong> /etc/passwd.<br />

13.4.3 Absicherung durch SSL<br />

Wenn die Datenkommunikation über das Loopback-Interface direkt auf <strong>der</strong> Masch<strong>in</strong>e stattf<strong>in</strong>det,<br />

ist die Sicherheit <strong>der</strong> übertragenen Daten ausreichend gewährleistet. An<strong>der</strong>s sieht<br />

es aus, wenn LDAP-Pakete über e<strong>in</strong> Ethernet gehen. Deshalb kann e<strong>in</strong>e LDAP-Verb<strong>in</strong>dung<br />

analog zu e<strong>in</strong>er HTTP-Verb<strong>in</strong>dung den Secure-Socket-Layer (SSL) verwenden. Wegen <strong>der</strong><br />

notwendigen Zertifikats- und Schlüsselerstellung bzw. -verwaltung gestaltet sich dieses etwas<br />

aufwändiger.<br />

Der schnellste Weg g<strong>in</strong>ge über die Generierung e<strong>in</strong>es selbstunterschriebenen Serverzertifikats.<br />

Da jedoch e<strong>in</strong>e Reihe von Fehlern auftreten können und LDAP selbstunterschriebene<br />

Zertifikate bemängelt, wird von diesem Weg abgeraten.<br />

Besitzt man bereits e<strong>in</strong> von e<strong>in</strong>er Certificate Authority (CA) unterschriebenes Serverzertifikat,<br />

kann man den nächsten Schritt überspr<strong>in</strong>gen. Da diese Zertifikate Geld kosten<br />

und <strong>in</strong> regelmäßigen Abständen verlängert werden müssen, besitzen meistens nur Betreiber<br />

großer Webserver solche. Das OpenSSL-Paket liefert die Lösung für dieses Problem mit -<br />

e<strong>in</strong> Shell-Skript führt durch die <strong>E<strong>in</strong></strong>richtung e<strong>in</strong>er eigenen CA.<br />

Dazu wird e<strong>in</strong> eigenes Verzeichnis angelegt, z.B. /etc/LocalCA. In diesem Verzeichnis<br />

startet <strong>der</strong> Aufruf von /usr/share/ssl/misc/CA.sh -newca (<strong>der</strong> angegebene absolute<br />

Pfad kann je nach Distribution variieren) die <strong>E<strong>in</strong></strong>richtung <strong>der</strong> CA:<br />

CA certificate filename (or enter to create)<br />

Mak<strong>in</strong>g CA certificate ...<br />

Us<strong>in</strong>g configuration from /etc/ssl/openssl.cnf<br />

Generat<strong>in</strong>g a 1024 bit RSA private key<br />

...........++++++<br />

...........................................................++++++<br />

writ<strong>in</strong>g new private key to ’./demoCA/private/./cakey.pem’<br />

Enter PEM pass phrase:<br />

Verify<strong>in</strong>g password - Enter PEM pass phrase:<br />

-----<br />

You are about to be asked to enter <strong>in</strong>formation that will be <strong>in</strong>corporated<br />

<strong>in</strong>to your certificate request.<br />

What you are about to enter is what is called a Dist<strong>in</strong>guished Name or a DN.<br />

There are quite a few fields but you can leave some blank<br />

For some fields there will be a default value,<br />

If you enter ’.’, the field will be left blank.<br />

-----<br />

Country Name (2 letter code) [AU]:DE


214 KAPITEL 13. RESSOURCENVERWALTUNG<br />

State or Prov<strong>in</strong>ce Name (full name) [Some-State]:BaWue<br />

Locality Name (eg, city) []:Freiburg<br />

Organization Name (eg, company) [Internet Widgits Pty Ltd]:WG<br />

Organizational Unit Name (eg, section) []:WG-LDAP<br />

Common Name (eg, YOUR name) []:wg.local<br />

Email Address []:.<br />

Für den Date<strong>in</strong>amen kann mit Enter e<strong>in</strong>fach e<strong>in</strong> Defaultwert übernommen werden, alle<br />

an<strong>der</strong>en Abfragen können wie oben gezeigt ausgefüllt und mit entsprechenden Werten<br />

übernommen werden. Das Passwort zur Absicherung <strong>der</strong> Schlüssel sollte sich für später<br />

gemerkt werden. Im def<strong>in</strong>ierten Verzeichnis f<strong>in</strong>den sich unter demoCA/cacert.pem und demoCA/private/cakey.pem<br />

das Zertifikat unserer CA und <strong>der</strong> private Schlüssel.<br />

Im nächsten Schritt wird das Serverzertifikat generiert: openssl req -newkey rsa:1024<br />

-nodes -keyout newreq.pem -out newreq.pem<br />

Us<strong>in</strong>g configuration from /etc/ssl/openssl.cnf<br />

Generat<strong>in</strong>g a 1024 bit RSA private key<br />

............................++++++<br />

..........................................................++++++<br />

writ<strong>in</strong>g new private key to ’newreq.pem’<br />

-----<br />

You are about to be asked to enter <strong>in</strong>formation that will be <strong>in</strong>corporated<br />

<strong>in</strong>to your certificate request.<br />

What you are about to enter is what is called a Dist<strong>in</strong>guished Name or a DN.<br />

There are quite a few fields but you can leave some blank<br />

For some fields there will be a default value,<br />

If you enter ’.’, the field will be left blank.<br />

-----<br />

Country Name (2 letter code) [AU]:DE<br />

State or Prov<strong>in</strong>ce Name (full name) [Some-State]:BaWue<br />

Locality Name (eg, city) []:Freiburg<br />

Organization Name (eg, company) [Internet Widgits Pty Ltd]:WG<br />

Organizational Unit Name (eg, section) []:WG-LDAP<br />

Common Name (eg, YOUR name) []:wg.local<br />

Email Address []:.<br />

Please enter the follow<strong>in</strong>g ’extra’ attributes<br />

to be sent with your certificate request<br />

A challenge password []:<br />

An optional company name []:.<br />

Im großen und ganzen wie<strong>der</strong>holen sich die Abfragen <strong>der</strong> CA-Erstellung. Die zusätzlichen<br />

Attribute können leer gelassen werden. Dieses geschieht durch die Angabe e<strong>in</strong>es Punktes<br />

”.”. Als Ergebnis existiert nun e<strong>in</strong>e Datei newreq.pem im aktuellen Verzeichnis.<br />

Nun muss <strong>der</strong> neuerzeugte Schlüssel noch von unserer CA signiert werden. Hierzu kommt<br />

das bereits von <strong>der</strong> CA-Erstellung bekannte Skript zum <strong>E<strong>in</strong></strong>satz:<br />

/usr/share/ssl/misc/CA.sh -sign<br />

Us<strong>in</strong>g configuration from /etc/ssl/openssl.cnf<br />

Enter PEM pass phrase:<br />

Check that the request matches the signature


13.4. LDAP PRAKTISCH 215<br />

Signature ok<br />

The Subjects Dist<strong>in</strong>guished Name is as follows<br />

countryName :PRINTABLE:’DE’<br />

stateOrProv<strong>in</strong>ceName :PRINTABLE:’BaWue’<br />

localityName :PRINTABLE:’Freiburg’<br />

organizationName :PRINTABLE:’WG’<br />

organizationalUnitName:PRINTABLE:’WG-LDAP’<br />

commonName :PRINTABLE:’wg.local’<br />

Certificate is to be certified until Jun 16 09:07:05 2004 GMT (365 days)<br />

Sign the certificate? [y/n]:y<br />

1 out of 1 certificate requests certified, commit? [y/n]y<br />

Write out database with 1 new entries<br />

Data Base Updated<br />

Certificate:<br />

Data:<br />

Version: 3 (0x2)<br />

Serial Number: 1 (0x1)<br />

Signature Algorithm: md5WithRSAEncryption<br />

Issuer: C=DE, ST=BaWue, L=Freiburg, O=WG, OU=WG-LDAP, CN=wg.local<br />

Validity<br />

Not Before: Jun 17 09:07:05 2003 GMT<br />

Not After : Jun 16 09:07:05 2004 GMT<br />

Subject: C=DE, ST=BaWue, L=Freiburg, O=WG, OU=WG-LDAP, CN=wg.local<br />

Subject Public Key Info:<br />

Public Key Algorithm: rsaEncryption<br />

RSA Public Key: (1024 bit)<br />

Modulus (1024 bit):<br />

00:a4:03:ef:1b:5d:20:2b:bd:03:f7:ce:9e:5a:f2:<br />

f4:58:9a:f1:7f:9c:20:fc:ab:a7:b6:b7:41:4c:7f:<br />

14:e8:79:20:ba:1c:c6:1a:26:ad:d1:28:6e:60:99:<br />

c7:99:1f:3d:7c:9c:77:6a:f9:5a:63:f7:b1:e7:94:<br />

dc:10:66:8b:a6:8f:11:4d:17:7b:98:85:ce:a4:bc:<br />

e9:1c:24:f8:ee:eb:3e:c7:50:7f:68:53:be:b5:7a:<br />

e8:cb:d3:db:34:31:eb:04:67:96:8c:e5:6c:d0:7b:<br />

e7:cb:21:0a:a3:97:7c:e3:9c:73:53:1d:8e:c1:6d:<br />

61:58:9c:c6:f5:df:94:f9:63<br />

Exponent: 65537 (0x10001)<br />

X509v3 extensions:<br />

X509v3 Basic Constra<strong>in</strong>ts:<br />

CA:FALSE<br />

Netscape Comment:<br />

OpenSSL Generated Certificate<br />

X509v3 Subject Key Identifier:<br />

95:5F:39:05:C4:99:9A:FC:83:26:B2:F8:8E:2E:55:CC:D6:65:C2:9F<br />

X509v3 Authority Key Identifier:<br />

keyid:DC:B2:AA:81:3C:96:A4:1D:8A:8C:BE:A8:79:85:62:22:BF: \<br />

F1:3B:FF


216 KAPITEL 13. RESSOURCENVERWALTUNG<br />

DirName:/C=DE/ST=BaWue/L=Freiburg/O=WG/OU=WG-LDAP/CN=wg.\<br />

local serial:00<br />

Signature Algorithm: md5WithRSAEncryption<br />

64:2f:46:48:e2:2b:e9:d4:99:47:5e:35:69:d2:1c:8f:33:c5:<br />

[ ... e<strong>in</strong>ige weitere Zeilen ... ]<br />

7c:9f:b2:ee:da:dc:26:fc:08:6f:2e:e6:07:4c:72:b0:88:89:<br />

d8:3a<br />

-----BEGIN CERTIFICATE-----<br />

MIIDJTCCAo6gAwIBAgIBATANBgkqhkiG9w0BAQQFADBiMQswCQYDVQQGEwJERTEO<br />

MAwGA1UECBMFQmFXdWUxETAPBgNVBAcTCEZyZWlidXJnMQswCQYDVQQKEwJXRzEQ<br />

[ ... etliche Zeilen ... ]<br />

1qZZj7c5u5UJHrngC/fRUr5nCgI0fJ+y7trcJvwIby7mB0xysIiJ2Do=<br />

-----END CERTIFICATE-----<br />

Signed certificate is <strong>in</strong> newcert.pem<br />

Damit liegt nun mit newcert.pem das Server Zertifikat unterschrieben von <strong>der</strong> eigenen CA<br />

mit dem privaten Schlüssel newreq.pem vor. Nun ist alles soweit vorbereitet und das Zertifikat<br />

kann <strong>in</strong> das entsprechende Verzeichnis für den Zugriff des LDAP-Servers verschoben<br />

werden.<br />

Dazu wird das Verzeichnis /etc/openldap/certificates erzeugt und die Zertifikate dort<br />

h<strong>in</strong>e<strong>in</strong>kopiert o<strong>der</strong> -bewegt.<br />

cp demoCA/cacert.pem /etc/openldap/certificates/cacert.pem<br />

mv newcert.pem /etc/openldap/certificates/servercrt.pem<br />

mv newreq.pem /etc/openldap/certificates/serverkey.pem<br />

chmod 400 /etc/openldap/certificates/serverkey.pem<br />

chown -R ldap.ldap /etc/openldap/certificates<br />

Das letzte Kommando übergibt dem LDAP-Nutzer die Rechte für das Verzeichnis, da<br />

sonst <strong>der</strong> Serverschlüssel vom LDAP-Daemon nicht gelesen werden kann. In e<strong>in</strong>em solchen<br />

Fall öffnet <strong>der</strong> Server ke<strong>in</strong>en SSL-Port und h<strong>in</strong>terläßt e<strong>in</strong>e Fehlermeldung <strong>in</strong> <strong>der</strong> Log-Datei.<br />

Nun müssen noch drei Zeilen am Anfang <strong>der</strong> Server-Konfigurationsdatei slapd.conf e<strong>in</strong>gefügt<br />

werden:<br />

TLSCertificateFile /etc/openldap/certificates/servercrt.pem<br />

TLSCertificateKeyFile /etc/openldap/certificates/serverkey.pem<br />

TLSCACertificateFile /etc/openldap/certificates/cacert.pem<br />

Der Aufruf des LDAP-Daemon sieht nun etwas an<strong>der</strong>s aus: /usr/lib/openldap/slapd<br />

-f /etc/openldap/slapd.conf -h ldaps://10.8.4.254:636 -u ldap -g ldap<br />

Zum e<strong>in</strong>en wird mittels ldaps://10.8.4.254:636 das abgesicherte Protokoll gewählt und<br />

zum an<strong>der</strong>en kann nun <strong>der</strong> Server für die netzweite Benutzung zur Verfügung gestellt werden.<br />

Damit wie e<strong>in</strong>gangs gezeigt die LDAP-Client-Programme wie<strong>der</strong> bequem funktionieren,<br />

wird e<strong>in</strong>e Anpassung <strong>der</strong> ldap.conf erfor<strong>der</strong>lich:<br />

BASE ou=user,dc=wg,dc=local<br />

URI ldaps://10.8.4.254:636<br />

SASL_SECPROPS noactive<br />

TLS hard<br />

TLS_REQCERT allow


13.4. LDAP PRAKTISCH 217<br />

Nun liefert <strong>der</strong> Aufruf <strong>der</strong> Kommandos ldapsearch -x o<strong>der</strong> getent passwd wie<strong>der</strong> die<br />

e<strong>in</strong>gangs gezeigten Ausgaben. Dabei beschränkt sich dieses nicht mehr auf den Server selbst,<br />

son<strong>der</strong>n kann von je<strong>der</strong> beliebigen Masch<strong>in</strong>e im <strong>Netzwerk</strong> geschehen, wenn die Dateien<br />

ldap.conf und nsswitch.conf entsprechend e<strong>in</strong>gerichtet wurden.


218 KAPITEL 13. RESSOURCENVERWALTUNG


Kapitel 14<br />

Drucken im Netz<br />

14.1 <strong>E<strong>in</strong></strong>leitung<br />

Zum Drucken unter <strong>Unix</strong> gibt es verschiedene Ans”atze:<br />

• BSD-System<br />

• System V<br />

• CUPS<br />

Das BSD-System ist historisch gesehen das ”alteste und war lange bei SUN-Systemen<br />

im <strong>E<strong>in</strong></strong>satz. Das System V Drucksystem sollte mehr den Bed”urfnisse grosser Unternehmen<br />

gerecht werden, ist aber sehr kompliziert. Cups (Common UNIX Pr<strong>in</strong>t<strong>in</strong>g System) versucht<br />

die beiden Ans”atze zu verb<strong>in</strong>den und implementiert das Internet Pr<strong>in</strong>t<strong>in</strong>g Protocol, das<br />

als neuer Standard entwickelt wurde.<br />

14.1.1 Anfor<strong>der</strong>ungen<br />

Folgende Anfor<strong>der</strong>ungen werden an e<strong>in</strong> Drucksystem gestellt? Zum e<strong>in</strong>en sollten alle lokal<br />

anschließbaren Drucker funktionieren:<br />

• USB<br />

• Parallel<br />

• Seriell<br />

• Irda<br />

• Bluetooth<br />

Zum an<strong>der</strong>en sollten alle Drucker im Netz verwendbar se<strong>in</strong>:<br />

• Ethernet-Drucker<br />

• Lokale Drucker an an<strong>der</strong>en LINUX/UNIX/MAC-Systemen<br />

• Lokale Drucker an W<strong>in</strong>dows-Systemen<br />

Desweitern sollte e<strong>in</strong> Drucker m”oglichst viele Dateiformate annehmen und direkt verarbeiten<br />

k”onnen. Hier besteht e<strong>in</strong> wesentlicher Unterschied zu MS-W<strong>in</strong>dows-Systemen. Dort<br />

gibt es nur das Programm pr<strong>in</strong>t im Kommandomodus, das direkt Textdateien ausdruckt.<br />

Das Kommando lpr unter L<strong>in</strong>ux war urspr”unglich auch nur f”ur Textdateien ausgelegt,<br />

wurde aber durch Erweiterung um Filter flexibel. (s. Kap. 14.2.4)<br />

219


220 KAPITEL 14. DRUCKEN IM NETZ<br />

14.1.2 Grundlagen<br />

Das L<strong>in</strong>uxdrucksystem basiert auf e<strong>in</strong>em Filtermechanismus, an dessen Anfang das Dokument,<br />

am Ende das Device (z. B. /dev/lp0 = parallele Schnittstelle) steht.<br />

Das Druckkommando ist lpr (L<strong>in</strong>e Pr<strong>in</strong>ter). Mit lpr textdatei wird e<strong>in</strong>e Textdatei<br />

auf den Standarddrucker gedruckt. Mit export PRINTER=color wird <strong>der</strong> Standarddrucker<br />

auf color gesetzt. Falls man e<strong>in</strong>en an<strong>der</strong>en als den Standarddrucker verwenden möchte,<br />

kann kann man den gewünschten Drucker beim Aufruf mitangeben: lpr -Pdruckername<br />

textdatei<br />

Aber was genau passiert nach e<strong>in</strong>em solchen Aufruf? Beim Aufruf von lpr werden die<br />

angegebenen Optionen <strong>in</strong>terpretiert und angewendet. Anschliessend sorgt lpr dafür, dass<br />

die Datei <strong>in</strong> das Spoolverzeichnis des angegebenen Druckers geschickt wird. Der Spooler<br />

(früher lpd, heute meist LPRng nimmt den Druckauftrag entgegen und gibt e<strong>in</strong>en Druckjob<br />

aus. In diesem Prozess werden die Ausgabeformate <strong>der</strong> jeweiligen Anwendung durch die<br />

Filter <strong>in</strong> e<strong>in</strong> Druckformat umgewandelt. Welches Druckformat <strong>der</strong> Drucker verwendet geht<br />

aus <strong>der</strong> PPD-Datei (PostScript Pr<strong>in</strong>ter Description) hervor. Die PPD-Datei ist e<strong>in</strong>e Textdatei,<br />

<strong>in</strong> <strong>der</strong> die anzuwendenden Filter gelistet s<strong>in</strong>d. Die PPD-Dateien werden meist schon<br />

beim Installieren des Betriebssystems zur Verfügung gestellt. Auch CUPS stellt e<strong>in</strong>e Reihe<br />

von PPD-Dateien zur Verfügung. Die Arbeit <strong>der</strong> Filter besteht dar<strong>in</strong>, das Ausgabeformat<br />

automatisch zu erkennen und e<strong>in</strong> geeignetes Konvertierungsprogramm aufzurufen, um die<br />

Datei <strong>in</strong> PostScript umzuwandeln.<br />

Nachdem <strong>der</strong> Spooler den Druckauftrag entgegengenommen hat und die Filter die Datei<br />

<strong>in</strong> das Druckformat umgewandelt haben, bef<strong>in</strong>det sich <strong>der</strong> Druckjob <strong>in</strong> <strong>der</strong> Warteschlage,<br />

<strong>der</strong> sogenannten Queue. Mit dem Befehl lpq kann man sich alle Druckjobs ausgeben lassen.<br />

Der Drucker bekommt die Druckjobs aus <strong>der</strong> Queue und druckt den PostScript-Code.<br />

Hierzu bedarf es e<strong>in</strong>es Raster-Image-Prozessors (RIP), <strong>der</strong> für die Ausgabe des PostScript-<br />

Codes sorgt. Bei PostScript-fähigen Druckern ist <strong>der</strong> RIP im Drucker <strong>in</strong>tegriert, bei nicht-<br />

PostScript-kompatiblen Druckern wird e<strong>in</strong> Post-Script-Interpreter benötigt, <strong>der</strong> aus den<br />

PostScript-Informationen e<strong>in</strong> Datenformat erzeugt, das vom jeweiligen Drucker verstanden<br />

wird. Dieser Interpreter wird durch den druckerspezifischen Treiber zur Verfügung gestellt.<br />

Die Funktionsweise des Treibers geht aber natürlich über das Erzeugen des richtigen Datenformates<br />

weit h<strong>in</strong>aus. Aufgabe des Treibers ist es, die zu druckende Datei mit all den<br />

Informationen zu ergänzen, die für die optimale Nutzung <strong>der</strong> Hardware nötig s<strong>in</strong>d.<br />

Diese Beschreibung <strong>der</strong> Funktionsweise des Drucksystems ist natürlich stark vere<strong>in</strong>facht.<br />

Anhand <strong>der</strong> genaueren Betrachtung des CUPS (Common <strong>Unix</strong> Pr<strong>in</strong>t System) werden<br />

die Zusammenhänge detailliert beschrieben werden. Unter den verschiedenen Systemen<br />

zur Konfiguration und Adm<strong>in</strong>istration des Drucksystems unter L<strong>in</strong>ux wird das CUPS am<br />

häufigsten verwendet. Es eignet sich sowohl für die Konfiguration von <strong>E<strong>in</strong></strong>zelplatz Rechnern/Druckern,<br />

als auch für komplizierte Systeme im <strong>Netzwerk</strong>.<br />

14.2 CUPS<br />

Im CUPS (Common <strong>Unix</strong> Pr<strong>in</strong>t<strong>in</strong>g System) übernimmt <strong>der</strong> cupsd die Aufgaben des lpd:<br />

Annehmen <strong>der</strong> Druckaufträge, ggf. Weiterleiten an die entsprechenden Filter, <strong>E<strong>in</strong></strong>reihen <strong>in</strong><br />

die Warteschlage und Aufruf des passenden Backends, das die fertigen Jobs <strong>in</strong> passen<strong>der</strong><br />

Form an den Drucker gibt. Der cupsd implementiert den neuen Standard IPP (Internet<br />

Pr<strong>in</strong>t<strong>in</strong>g Protocol) und stellt somit folgende zusätzliche Funktionalität zur Verfügung:<br />

• Authentifizierung von Benutzern


14.2. CUPS 221<br />

• Verschlüsselung <strong>der</strong> Druckdaten bei <strong>der</strong> Übertragung<br />

• Bekanntgabe verfügbarer Drucker im Netz<br />

IPP ist e<strong>in</strong> Protokoll <strong>der</strong> Anwendungsschicht und kann für verteiltes Drucken im Interund<br />

Intranet verwendet werden. Das Protokoll def<strong>in</strong>iert die Interaktion zwischen CUPS-<br />

Server und -Client und ermöglicht dem Client Abfragen von Drucker<strong>in</strong>formationen.<br />

14.2.1 Client-Server-Architektur<br />

Im CUPS ist je<strong>der</strong> Rechner, an den e<strong>in</strong> Drucker angeschlossen ist, e<strong>in</strong> Server. Rechner, die<br />

entfernte Drucker nutzen wollen, s<strong>in</strong>d Clients. <strong>E<strong>in</strong></strong> Standalone-Rechner, an dem e<strong>in</strong> Drucker<br />

angeschlossen ist, <strong>der</strong> mit CUPS verwaltet wird, ist sozusagen e<strong>in</strong> Client, <strong>der</strong> se<strong>in</strong> eigener<br />

Server ist.<br />

Je<strong>der</strong> Server ist selbst für die Aufbereitung <strong>der</strong> Druckjobs zuständig, d.h. je<strong>der</strong> Server<br />

muss sowohl die für das Druckformat des Druckers nötigen Filter, als auch den entsprechenden<br />

Treiber selber zur Verfügung stellen. Sämtliche gerätespezifischen Informationen gehen<br />

aus <strong>der</strong> PPD-Datei hervor (PostScript Pr<strong>in</strong>ter Description), die mit dem Druckertreiber<br />

mitgeliefert wird.<br />

Durch die Verwendung des IPP, lässt sich <strong>der</strong> CUPS Dämon wie e<strong>in</strong> Webserver ansprechen.<br />

CUPS-Rechner kommunizieren über den IPP-Port 631. Der Zugriff auf das Web<strong>in</strong>terface<br />

erfolgt folglich über den Browser durch den Aufrufhttp://localhost:631/. An diesen<br />

Port werden nicht nur die Druckdaten geschickt, son<strong>der</strong>n auch viele weitere Informationen.<br />

Da IPP auf HTTP 1.1 beruht, ist die Konfigurationsdatei /etc/cups/cupsd.conf <strong>der</strong><br />

httpd.conf sehr ähnlich. Die wichtigsten <strong>E<strong>in</strong></strong>stellungen werden <strong>in</strong> Kapitel 14.2.5 erläutert.<br />

<strong>E<strong>in</strong></strong>e weitere Beson<strong>der</strong>heit von CUPS s<strong>in</strong>d die Backends. Sie sorgen für den Versand von<br />

Druckdaten zu den Ausagbegeräten o<strong>der</strong> an<strong>der</strong>en Servern. Die CUPS-Backends ermöglichen<br />

die Verb<strong>in</strong>dung über verschiedene Schnittstellen und Protokolle mit dem Server. Für jedes<br />

Protokoll (parallel, seriell, USB o<strong>der</strong> Neztwerk) ist e<strong>in</strong> eigenes Backend zuständig. Die<br />

CUPS-Backends erlauben so, Druckjobs an alle herkömmlichen Drucker zu schicken.<br />

14.2.2 IPP<br />

Abbildung 14.1: Cupsdiagramm<br />

IPP ist e<strong>in</strong> Protokoll <strong>der</strong> Anwendunsschicht und wird <strong>in</strong> erster L<strong>in</strong>ie für verteiltes Drucken<br />

im Netz verwendet. Das Protokoll def<strong>in</strong>iert die Interaktion zwischen IPP-Client und IPP-<br />

Server, d.h. es wird def<strong>in</strong>iert, wie die Daten für die Steuerung des Druckvorgangs verwendet<br />

werden, wie die Daten kodiert und wie sie transportiert werden. Der Datentransport mit IPP<br />

ist generell verschlüsselt. Desweiteren def<strong>in</strong>iert IPP das s.g. Verzeichnisschema, über das e<strong>in</strong>


222 KAPITEL 14. DRUCKEN IM NETZ<br />

Verzeichnisserver nach verfügbaren Ausgabegeräten gefragt werden kann. Ausserdem bietet<br />

IPP die Möglichkeit, den Zugriff auf Drucker e<strong>in</strong>zuschränken.<br />

14.2.3 Funktionsweise<br />

Die Kommunikation zwischen Client und Server erfolgt gemäß dem bekannten Request-<br />

Response-Verfahren. Diese Anfragen und Antworten s<strong>in</strong>d durch ASCII Code def<strong>in</strong>iert und<br />

werden mittels des HTTP 1.1 Postmechanismus durchgeführt.<br />

<strong>E<strong>in</strong></strong> Request des Clients sieht wie folgt aus:<br />

ipp:druck.server/me<strong>in</strong>drucker/me<strong>in</strong>druckauftrag<br />

und führt dazu, dass <strong>der</strong> Client e<strong>in</strong>e Verb<strong>in</strong>dung zu Port 631 des Servers druck.server aufbaut<br />

und folgende Daten übermittelt:<br />

POST /me<strong>in</strong>drucker/me<strong>in</strong>druckauftrag<br />

HTTP/1.1<br />

Host: druck.server:631<br />

Content-type: application/ipp<br />

Transfer-Encod<strong>in</strong>g: chunked<br />

...<br />

“pr<strong>in</strong>ter-url”<br />

“ipp://druck.server/me<strong>in</strong>drucker/me<strong>in</strong>druckauftrag”<br />

...<br />

14.2.4 Filter<br />

Die Filter f<strong>in</strong>det man <strong>in</strong>/usr/lib/cups/filter/. Meist ersieht man schon aus dem Namen<br />

<strong>der</strong> Filter, welche Konvertierung er vornimmt. CUPS erkennt automatisch, welche Filtermechanismen<br />

angewendet werden müssen, d.h. welche Filter h<strong>in</strong>tere<strong>in</strong>an<strong>der</strong> angewandt werden<br />

müssen. Lediglich das Ausgabeformat muss man e<strong>in</strong>tragen, sofern man e<strong>in</strong> an<strong>der</strong>es Format<br />

als PostScript verwenden möchte. (PostScript ist standardmässig vordef<strong>in</strong>iert.)<br />

14.2.5 Konfiguration<br />

Die Konfiguration von CUPS kann - wie bereits erwähnt - über den Browser durch e<strong>in</strong>en<br />

Aufruf von http://localhost:631 geschehen. <strong>E<strong>in</strong></strong>e weitere Möglichkeit zur Kofiguration<br />

des CUPS bietet Yast2. Es gibt aber auch schicke Webfrontends, die speziell für die Konfiguration<br />

von CUPS entwickelt wurden. <strong>E<strong>in</strong></strong>e <strong>der</strong> bekanntesten Schnittstellen ist das KUPS<br />

(s. http://cups.sourceforge.net/kups/<strong>in</strong>dex.htm)<br />

Möchte man die Konfiguration von Hand machen, beschränkt sich dies fast ausschliesslich<br />

auf folgende Dateien:<br />

In /etc/cups:<br />

cupsd.conf und mime.types<br />

In /var/log/cups:<br />

error log page log access log (f. <strong>Netzwerk</strong>e)<br />

Die zwei wichtigsten Designentscheidungen bei <strong>der</strong> Konfiguration von CUPS s<strong>in</strong>d “Brows<strong>in</strong>g<br />

On” und “Browse Poll”.<br />

Sofern <strong>in</strong> <strong>der</strong> cupsd.conf e<strong>in</strong>es CUPS-Rechners “Brows<strong>in</strong>g On” gesetzt ist, stellt <strong>der</strong><br />

Rechener per UDP-Broadcast den Namen des Druckers, Status<strong>in</strong>formtionen und an<strong>der</strong>e<br />

Zusatz<strong>in</strong>formationen zur Verfügung. Hierbei sollte man nicht ausser Acht lassen, dass die<br />

Broadcasts (entsprechend <strong>der</strong> TCP/IP-Spezifikation) nur bis zum nächsten Router o<strong>der</strong>


14.3. ALTERNATIVEN 223<br />

Gateway weitergegeben werden. Wenn bei e<strong>in</strong>em bestimmten Client nur die Brows<strong>in</strong>g-<br />

Informationen e<strong>in</strong>es bestimmten Servers verwendet werden sollen, kann man das <strong>in</strong> <strong>der</strong><br />

Konfigurationdatei des Client durch <strong>E<strong>in</strong></strong>träge <strong>der</strong> folgenden Art erreichen: BrowseAllow<br />

134.76.82.10, BrowseDeny 134.76.82.11.<br />

Das Gegenstück zum Brows<strong>in</strong>g (per Broadcast) ist das Poll<strong>in</strong>g. In diesem Fall, warten die<br />

Clients nicht passsiv auf die Informationen über zur Verfügung stehende Drucker, son<strong>der</strong>n<br />

besorgen sich diese aktiv bei e<strong>in</strong>em bestimmten Server. Hierzu verwendet man e<strong>in</strong>e Angabe<br />

<strong>in</strong> Form von BrowsePoll 134.76.82.10:631, die dazu führt, dass <strong>der</strong> genannte Server<br />

nach verfügbaren Druckern gefragt wird, sobald gedruckt werden soll. Beim Poll<strong>in</strong>g gilt<br />

allerd<strong>in</strong>gs dieselbe <strong>E<strong>in</strong></strong>schränkung des Broadcasts: Es könne nur Server im gleichen LAN<br />

angesprochen werden.<br />

Die Lösung diesen Problems ist, e<strong>in</strong>en Router o<strong>der</strong> Gateway des eigenen LANs zum<br />

so.g. Browse-Relay zu machen.<br />

14.3 Alternativen<br />

Zu den heute gängigen Alternativen zu CUPS zählen:<br />

• TurboPr<strong>in</strong>t: <strong>E<strong>in</strong></strong> kommerzielles Drucksystem, mit dem man bestmögliche Druckqualität<br />

erreichen kann. Nähere Informationen unter www.turbopr<strong>in</strong>t.de<br />

• KDEPr<strong>in</strong>t: <strong>E<strong>in</strong></strong> Modul <strong>der</strong> KDE-Oberfläche unter L<strong>in</strong>ux. Es ermöglicht e<strong>in</strong>en e<strong>in</strong>fachen<br />

und <strong>in</strong>tuitiven Zugriff auf sämliche CUPS-Funktionalitäten. Nähere Informationen<br />

unter pr<strong>in</strong>t<strong>in</strong>g.kde.org


224 KAPITEL 14. DRUCKEN IM NETZ


Kapitel 15<br />

Wichtige <strong>Netzwerk</strong>kommandos<br />

15.1 Offene Dateien und <strong>Netzwerk</strong>verb<strong>in</strong>dungen<br />

Das Kommando lsof (ListOpenFiles) zeigt die geöffneten Dateien (zum Lesen o<strong>der</strong> Schreiben)<br />

an und die dazugehörenden Prozesse. Weiterh<strong>in</strong> werden offene Sockets (<strong>Netzwerk</strong>verb<strong>in</strong>dung<br />

mit Portadresse), sowie verwendete Pipes und Filesockets angezeigt.<br />

15.2 netstat<br />

netstat hat sich auf das Anzeigen offener Sockets, sowohl des Filesystems, als auch von<br />

<strong>Netzwerk</strong>verb<strong>in</strong>dungen spezialisiert. Die Ausgabe von netstat -a hat folgendes Aussehen,<br />

wobei die Protokolle TCP, UDP und unix (Socket im Filesystem) <strong>in</strong> dieser Reihenfolge<br />

sortiert aufgeführt werden.<br />

dirk@shuttle:~/ > netstat -a |more<br />

Active Internet connections (servers and established)<br />

Proto Recv-Q Send-Q Local Address Foreign Address State<br />

tcp 0 0 *:nfs *:* LISTEN<br />

tcp 0 0 *:mysql *:* LISTEN<br />

udp 0 0 *:who *:*<br />

udp 0 0 *:nfs *:*<br />

...<br />

Active UNIX doma<strong>in</strong> sockets (servers and established)<br />

Proto RefCnt Flags Type State I-Node Path<br />

unix 9 [ ] DGRAM 613 /dev/log<br />

unix 2 [ ACC ] STREAM LISTENING 3810 /tmp/.X11-unix/X0<br />

unix 2 [ ACC ] STREAM LISTENING 6332 /tmp/.ICE-unix/1051<br />

...<br />

Mit netstat -M kann man sich e<strong>in</strong>en Überblick verschaffen, welche <strong>Netzwerk</strong>verb<strong>in</strong>dungen<br />

gerade maskiert werden:<br />

root@server:/ # netstat -M<br />

IP masquerad<strong>in</strong>g entries<br />

prot expire source dest<strong>in</strong>ation ports<br />

tcp 0:40.46 1234.test.local 210.24.30.216 3592 -> 2183 (64155)<br />

tcp 0:45.64 1234.test.local 210.24.30.216 3593 -> 2187 (64156)<br />

tcp 0:49.43 1234.test.local 210.24.30.216 3594 -> 2188 (64157)<br />

225


226 KAPITEL 15. WICHTIGE NETZWERKKOMMANDOS<br />

tcp 1:03.12 1234.test.local 210.24.30.216 3596 -> 2195 (64159)<br />

tcp 0:54.57 1234.test.local 210.24.30.216 3595 -> 2192 (64158)<br />

...<br />

Wird die Option “-n” beim Aufruf des Kommandos aufgeführt, wird ke<strong>in</strong>e Namensauflösung<br />

durchgeführt, was die Anzeige stark beschleunigen kann, gerade bei IP-Nummern,<br />

die nicht im Nameserver bekannt s<strong>in</strong>d.<br />

netstat -r liefert die Kernel-Rout<strong>in</strong>gtabelle <strong>in</strong> ähnlicher Weise, wie sie auch vom Kommando<br />

route angezeigt wird. Wenn Sie netstat mit dem Flag -i aufrufen, gibt es die Statistiken<br />

für die gerade aktiven <strong>Netzwerk</strong>-Schnittstellen aus. Geben Sie außerdem das Flag<br />

-a mit an, werden alle im Kernel vorhandenen Schnittstellen ausgegeben, nicht nur die<br />

konfigurierten Schnittstellen. An <strong>der</strong> Konsole produziert netstat -i <strong>in</strong> etwa folgendes:<br />

root@server:/ # netstat -i<br />

Kernel Interface table<br />

Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR<br />

TX-DRP TX-OVR Flags<br />

lo 0 0 3185 0 0 0 3185 0<br />

0 0 BLRU<br />

eth0 1500 0 972633 17 20 120 628711 217<br />

0 0 BRU<br />

Die Spalten MTU und Met geben die aktuelle MTU und Metrik des Interface an. Die<br />

mit RX bzw. TX überschriebenen Spalten geben an, wie viele Pakete:<br />

• RX-OK/TX-OK fehlerfrei empfangen bzw. gesendet wurden<br />

• RX-ERR/TX-ERR wie viele beschädigt waren<br />

• RX-DRP/TX-DRP wie viele wegeworfen werden mußten<br />

• RX-OVR/TX-OVR wie viele aufgrund e<strong>in</strong>es Overruns verloreng<strong>in</strong>gen<br />

Die letzte Spalte zeigt wie<strong>der</strong> die Liste <strong>der</strong> Flags, die für die Schnittstelle gesetzt s<strong>in</strong>d. Das<br />

s<strong>in</strong>d e<strong>in</strong>buchstabige Versionen <strong>der</strong> langen Flagnamen, die ifconfig ausgibt:<br />

15.3 Systemprogramme<br />

15.3.1 Dämonen<br />

Buchstabe Bedeutung<br />

B BROADCAST<br />

L LOOPBACK<br />

M PROMISC<br />

O NOARP<br />

P POINTOPOINT<br />

R RUNNING<br />

U UP<br />

Tabelle 15.1: Bezeichner<br />

x<strong>in</strong>it, <strong>in</strong>it, r<strong>in</strong>ted, nfsd, smbd, nmbd, proftpd, httpd, dhcpd


15.4. NETZWERKKONFIGURATION 227<br />

15.4 <strong>Netzwerk</strong>konfiguration<br />

ifconfig, route, ip, p<strong>in</strong>g, nslookup, dig, tc, ifuser<br />

tcptraceroute<br />

ttcp (Throughput of UDP / TCP traffic)<br />

tcptrack (per connection bandwidth monitor)<br />

tcpstat tcpick, tcpflow,<br />

15.4.1 <strong>Netzwerk</strong>tests<br />

p<strong>in</strong>g traceroute mtr<br />

netdiag<br />

Net-Diagnostics (trafshow,strobe,netwatch,statnet,tcpspray,tcpblast) Netdiag conta<strong>in</strong>s<br />

a collection of small tools to analyze network traffic and configuration of remote hosts<br />

(strobe). It is of <strong>in</strong>valuable help if your system is show<strong>in</strong>g strange network behaviour and<br />

you want to f<strong>in</strong>d out what your network is do<strong>in</strong>g.<br />

nictools-nopci<br />

nictools-pci<br />

Diagnostic tools for many PCI ethernet cards These tools can help you to diagnostic<br />

problems with your ethernet cards or - <strong>in</strong> some cases - give those cards the f<strong>in</strong>al h<strong>in</strong>t, to work<br />

<strong>in</strong> your network. alta-diag : Diagnostic and setup for the Sundance ”Alta” NIC eepro100diag<br />

: Diagnostic and setup for the Intel EEPro100 Ethercards epic-diag : Diagnostics<br />

and EEPROM setup for the SMC EPIC-100 myson-diag : Diagnostic and setup for the<br />

Myson mtd803 Ethernet chip natsemi-diag : Diagnostic and setup for the NatSemi DP83815<br />

Ethernet chip ne2k-pci-diag : Diagnostics and EEPROM setup for PCI NE2000 clones<br />

ns820-diag : Diagnostic and setup for the NatSemi DP83820 Ethernet chip pcnet-diag :<br />

Diagnostic and setup for the AMD PCnet/PCI Ethernet chip rtl8139-diag : Diagnostics<br />

and EEPROM setup for RealTek RTL8129/8139 chips starfire-diag : Diagnostic and setup<br />

for the Adaptec Starfire DuraLAN tulip-diag : Diagnostic and setup for the Digital DC21x4*<br />

Ethercards chips via-diag : Diagnostic and setup for the VIA Rh<strong>in</strong>e vt86c100 and vt3043<br />

Ethernet chips vortex-diag : Diagnostics and EEPROM setup for the 3Com Vortex series<br />

w<strong>in</strong>bond-diag : Diagnostic and setup for the W<strong>in</strong>bond w89c840 ethercards yellowf<strong>in</strong>-diag:<br />

Diagnostic and setup for the Packet Eng<strong>in</strong>es Yellowf<strong>in</strong> chip<br />

Das Kommando p<strong>in</strong>g ist Teil je<strong>der</strong> L<strong>in</strong>ux-Distribution. Das Programm sendet e<strong>in</strong> spezielles<br />

Datagramm über das <strong>Netzwerk</strong> an e<strong>in</strong>en an<strong>der</strong>en Rechner. Wenn dieser e<strong>in</strong>geschaltet<br />

ist und es empfängt sendet er es wie<strong>der</strong> zurück und man weiß, dass Rechner und <strong>Netzwerk</strong><br />

<strong>in</strong> Ordnung s<strong>in</strong>d. In <strong>der</strong> e<strong>in</strong>fachsten Form sieht das so aus:<br />

dirk@randy2:~/vorlesung/lak> p<strong>in</strong>g log<strong>in</strong><br />

PING log<strong>in</strong> (132.230.1.143) from 132.230.9.124 : 56(84) bytes of data.<br />

64 bytes from log<strong>in</strong>3 (132.230.1.143): icmp_seq=1 ttl=63 time=4.44 ms<br />

64 bytes from log<strong>in</strong>3 (132.230.1.143): icmp_seq=2 ttl=63 time=0.219 ms<br />

64 bytes from log<strong>in</strong>3 (132.230.1.143): icmp_seq=3 ttl=63 time=0.217 ms<br />

64 bytes from log<strong>in</strong>3 (132.230.1.143): icmp_seq=4 ttl=63 time=0.218 ms<br />

^C<br />

--- log<strong>in</strong>.ruf.uni-freiburg.de p<strong>in</strong>g statistics ---<br />

4 packets transmitted, 4 received, 0% loss, time 3030ms<br />

rtt m<strong>in</strong>/avg/max/mdev = 0.217/1.275/4.448/1.831 ms


228 KAPITEL 15. WICHTIGE NETZWERKKOMMANDOS<br />

p<strong>in</strong>g sucht zunächst die richtige IP-Adresse zu dem angegebenen Rechnernamen heraus 1<br />

und sendet dann <strong>in</strong> regelmäßigen Abständen e<strong>in</strong> bestimmtes Datagramm an diese Adresse.<br />

Für jeden dieser icmp echo requests wird <strong>der</strong> an<strong>der</strong>e Rechner dann e<strong>in</strong> icmp echo reply<br />

als Antwort zurücksenden. Jede <strong>der</strong> Zeilen 64 bytes from ... stellt e<strong>in</strong>e solche empfangene<br />

Rückantwort dar. In je<strong>der</strong> Zeile ist auch die Adresse des Absen<strong>der</strong>s dieses Paketes angegeben,<br />

die Nummer des echo requests, auf den mit diesem Paket geantwortet wurde, die<br />

time to live (Lebensdauer) sowie die round trip time, das ist die Zeit <strong>in</strong> Millisekunden zwischen<br />

Absendung des request und Empfang des entsprechenden echo reply. Damit ist dies<br />

<strong>in</strong> gewissen Grenzen e<strong>in</strong> Maß für die Geschw<strong>in</strong>digkeit des <strong>Netzwerk</strong>es.<br />

p<strong>in</strong>g würde endlos weiter se<strong>in</strong>e Pakete senden, deshalb muß es abgebrochen werden.<br />

Dies geschieht durch gleichzeitiges Drücken <strong>der</strong> Tasten Control (Strg) und C. Danach gibt<br />

p<strong>in</strong>g noch e<strong>in</strong>e Statistik <strong>der</strong> gesendeten Pakete aus. In den letzten beiden Zeilen ist es: Die<br />

Anzahl <strong>der</strong> gesendeten, empfangenen, sowie unbeantworteten Pakete. Außerdem kürzeste,<br />

längste und mittlere Antwortzeit. <strong>E<strong>in</strong></strong>e hohe Verlustrate an Paketen deutet auf Probleme<br />

mit <strong>der</strong> Verb<strong>in</strong>dung h<strong>in</strong>, diese können durch schlechte Verb<strong>in</strong>dungen, überlastete Router<br />

o<strong>der</strong> Kollisionen im lokalen Ethernet verursacht werden. Man kann mit p<strong>in</strong>g die schadhafte<br />

Stelle lokalisieren, <strong>in</strong>dem man nache<strong>in</strong>an<strong>der</strong> alle Knotenpunkte <strong>der</strong> Verb<strong>in</strong>dung an-p<strong>in</strong>gt<br />

und nachsieht, ab welchem Punkt die Verlustrate stark ansteigt.<br />

Mit traceroute (auch bei je<strong>der</strong> Distribution dabei) kann man den Weg, den die Datagramme<br />

bei e<strong>in</strong>er Verb<strong>in</strong>dung zwischen zwei Rechnern zurücklegen, testen und anzeigen.<br />

Wie auch p<strong>in</strong>g verwendet traceroute dazu das icmp Protokoll. Es verwendet jedoch e<strong>in</strong>en<br />

Trick, um von je<strong>der</strong> durchlaufenen Knotenstelle e<strong>in</strong>e Rückmeldung zu bekommen, und das<br />

geht so: Das Feld time to live e<strong>in</strong>es icmp-Datagramms dient eigentlich dazu, zu verh<strong>in</strong><strong>der</strong>n,<br />

dass das Datenpaket ewig im Netz herumgeschickt wird, z.B. wenn es <strong>in</strong> e<strong>in</strong>e Rout<strong>in</strong>g-<br />

Endlosschleife gerät. Zu diesem Zweck verr<strong>in</strong>gert je<strong>der</strong> Router, <strong>der</strong> das Paket weiterleitet,<br />

den Zähler <strong>in</strong> diesem Datenfeld um e<strong>in</strong>s. Wird dabei <strong>der</strong> Wert Null erreicht, so wird <strong>der</strong><br />

Router, bei dem dies geschehen ist, e<strong>in</strong>e “icmp time to live expired Meldung” an den ursprünglichen<br />

Absen<strong>der</strong> des Datagramms senden um ihm mitzuteilen, dass das Datagramm<br />

‘abgelaufen’ ist. traceroute sendet nun nache<strong>in</strong>an<strong>der</strong> Datagramme ab, <strong>der</strong>en time to live<br />

(beg<strong>in</strong>nend bei e<strong>in</strong>s) jeweils um e<strong>in</strong>s erhöht wird. Indem es nun die e<strong>in</strong>gehenden “icmp<br />

time to live expired Meldungen” auswertet, kann es genau den Weg, den die Datagramme<br />

nehmen, verfolgen - bis <strong>der</strong> wirkliche Zielrechner erreicht ist. Das sieht dann so aus:<br />

dirk@test:~/vorlesung/lak> /usr/sb<strong>in</strong>/traceroute goe.net<br />

traceroute to goe.net (134.76.60.86), 30 hops max, 40 byte packets<br />

1 132.230.22.254 2.735 ms 5.013 ms 7.667 ms<br />

2 132.230.223.254 0.707 ms 0.832 ms 0.721 ms<br />

3 nsc-rz-gwn.fun.uni-freiburg.de (132.230.0.141) 0.386 ms 0.355 ms \<br />

0.307 ms<br />

4 Freiburg1.Belwue.DE (129.143.15.141) 0.576 ms 0.545 ms 0.496 ms<br />

5 Stuttgart1.BelWue.DE (129.143.1.7) 3.813 ms 4.605 ms 0.573 ms<br />

6 Stuttgart2.BelWue.DE (129.143.1.34) 4.523 ms 4.521 ms 4.520 ms<br />

7 Frankfurt1.BelWue.DE (129.143.1.26) 8.393 ms 8.335 ms 8.304 ms<br />

8 ffm-b2-geth0-1.telia.net (213.248.79.41) 8.592 ms 8.668 ms 8.713 ms<br />

9 ffm-b2-geth0-1.telia.net (213.248.68.33) 8.558 ms 8.531 ms 8.503 ms<br />

10 ffm-bb2-pos2-3-0.telia.net (213.248.64.177) 8.745 ms 8.692 ms 8.662 ms<br />

11 hbg-bb2-pos1-1-0.telia.net (213.248.65.2) 18.104 ms 18.057 ms 18.129 ms<br />

12 hbg-b1-pos1-0.telia.net (213.248.68.6) 18.047 ms 18.000 ms 17.993 ms<br />

13 dante-01616-hbg-b1.c.telia.net (213.248.103.98) 17.439 ms 17.800 ms \<br />

17.487 ms<br />

14 cr-hannover1.g-w<strong>in</strong>.dfn.de (188.1.18.178) 199.467 ms 199.447 ms \<br />

199.511 ms<br />

1 Voraussetzung ist natürlich, dass /etc/hosts und <strong>der</strong> Nameserver richtig konfiguriert s<strong>in</strong>d


15.4. NETZWERKKONFIGURATION 229<br />

15 ar-goett<strong>in</strong>gen1.g-w<strong>in</strong>.dfn.de (188.1.88.74) 20.239 ms 20.192 ms 20.162 ms<br />

16 c12012-<strong>in</strong>t.gwdg.de (134.76.249.201) 20.786 ms 20.738 ms 20.705 ms<br />

17 134.76.249.204 20.406 ms 20.352 ms 20.323 ms<br />

18 stud9.stud.uni-goett<strong>in</strong>gen.de (134.76.60.86) 20.806 ms 20.758 ms \<br />

20.730 ms<br />

Die erste Spalte gibt die ‘Entfernung’ an, also <strong>der</strong> wievielte Knoten (Hop) <strong>in</strong> <strong>der</strong> Verb<strong>in</strong>dung<br />

<strong>der</strong> bezeichnete Rechner ist. Dies entspricht dem <strong>E<strong>in</strong></strong>trag im time to live Feld des Datagramms,<br />

das vom angegebenen Rechner als expired gemeldet wurde. Der nächste <strong>E<strong>in</strong></strong>trag<br />

ist <strong>der</strong> Rechnername (falls dieser anhand <strong>der</strong> IP-Adresse herausgefunden werden kann) und<br />

dessen IP-Adresse. Dann kommen drei <strong>E<strong>in</strong></strong>träge mit den Antwortzeiten für drei aufe<strong>in</strong>an<strong>der</strong>folgende<br />

Datagramme an diesen Rechner. Der erste Punkt <strong>in</strong> <strong>der</strong> Verb<strong>in</strong>dung ist also<br />

<strong>der</strong> Rechner gw. Se<strong>in</strong>e Antwortzeiten s<strong>in</strong>d sehr kurz, die Verb<strong>in</strong>dung ist e<strong>in</strong> lokales Ethernet.<br />

Der nächste Router ist gw.uts - von dort kommen die Datagramme sehr viel langsamer<br />

zurück als von gw. Der Grund ist hier e<strong>in</strong>e sehr langsame Verb<strong>in</strong>dung über e<strong>in</strong>e Funkstrecke.<br />

Der nächste Knoten ist bereits <strong>der</strong> gesuchte Rechner, m<strong>in</strong>nie.vk1xwt. Auch hier kommen<br />

die Antworten nur sehr langsam. Dies liegt aber daran, dass die Antwortzeit jedes Rechners<br />

natürlich die Summe <strong>der</strong> Verb<strong>in</strong>dungszeiten aller dazwischenliegenden Teilstrecken ist. In<br />

diesem Falle also vom eigenen Rechner zu gw; von dort zu gw.uts; und schließlich von gw.uts<br />

zu m<strong>in</strong>nie.vk1xwt. Berücksichtigt man diese Aufsummierung <strong>der</strong> Zeiten, so sieht man, dass<br />

die letzte Verb<strong>in</strong>dung von gw.uts zu m<strong>in</strong>nie.vk1xwt ebenfalls sehr schnell ist. Diese beiden<br />

Rechner hängen also vermutlich auch an e<strong>in</strong>em lokalen, schnellen <strong>Netzwerk</strong>.<br />

Taucht bei e<strong>in</strong>em traceroute Aufruf h<strong>in</strong>ter den Zeiten e<strong>in</strong> !N auf so weist dies auf e<strong>in</strong><br />

nicht erreichbares <strong>Netzwerk</strong> h<strong>in</strong>. Es ist e<strong>in</strong> Zeichen dafür, dass e<strong>in</strong> Router nicht wußte, woh<strong>in</strong><br />

er das Datagramm weiterleiten soll. Er sendet dann e<strong>in</strong> network unreachable Datagramm<br />

an den Absen<strong>der</strong> zurück. Meist deutet es darauf h<strong>in</strong>, dass e<strong>in</strong>e Netzverb<strong>in</strong>dung (zeitweise)<br />

zusammengebrochen ist. Anhand <strong>der</strong> letzten angegebenen Adresse vor dieser Fehlermeldung<br />

kann man die defekte Stelle lokalisieren.<br />

Ebenfalls auftauchen kann e<strong>in</strong> !H als H<strong>in</strong>weis darauf, dass e<strong>in</strong> Rechner (Host) nicht<br />

erreicht werden konnte. Dies bedeutet i.A. dass man bis <strong>in</strong> das lokale <strong>Netzwerk</strong> des Zielrechners<br />

gelangt ist, dieser sich aber nicht meldet (weil er z.B. abgeschaltet ist).<br />

15.4.2 <strong>Netzwerk</strong>überwachung<br />

netstat, tcpdump, ethereal, nmap, ntop, iptraf, xnetload, arpwatch, fp<strong>in</strong>g, ipgrab<br />

tcpdump kann die gesamte Aktivität auf dem <strong>Netzwerk</strong> überwachen <strong>in</strong>dem es sämtlich<br />

Datagramme auf dem Weg <strong>in</strong> den eigen Rechner h<strong>in</strong>e<strong>in</strong> o<strong>der</strong> heraus abhört. Damit lassen<br />

sich vom erfahrenen Adm<strong>in</strong>istrator auch schwer zu identifizierende <strong>Netzwerk</strong>probleme lokalisieren.<br />

tcpdump dekodiert jedes abgefangene Datagramm und zeigt es - <strong>in</strong> e<strong>in</strong>er etwas<br />

kryptischen Form - als Text an. tcpdump bietet sich an, um Protokollfehler o<strong>der</strong> plötzliche<br />

Verb<strong>in</strong>dungsabbrüche aufzuspüren. Denn man kann damit sehen, was auf dem <strong>Netzwerk</strong><br />

passiert. Um es jedoch s<strong>in</strong>nvoll e<strong>in</strong>setzen zu können, bedarf es e<strong>in</strong>es tieferen Verständnisses<br />

<strong>der</strong> Protokolle und wie sie arbeiten. Doch es kann auch e<strong>in</strong>fach dazu benutzt werden,<br />

um sicherzustellen, dass z.B. Datagramme den eigenen Rechner wirklich über die richtige<br />

Schnittstelle verlassen o<strong>der</strong>, um zu überprüfen, ob irgendwelche Datagramme von außerhalb<br />

empfangen werden. <strong>E<strong>in</strong></strong>e typische Ausgabe von tcpdump sieht etwa so aus:<br />

test2:/root # tcpdump -i eth0<br />

tcpdump: listen<strong>in</strong>g on eth0<br />

18:25:50.646507 802.1d config 8000.00:20:da:e7:77:52.8087 root 8000.00:20:da:e7:\<br />

77:52


230 KAPITEL 15. WICHTIGE NETZWERKKOMMANDOS<br />

pathcost 0 age 0 max 20 hello 2 fdelay 15<br />

18:25:52.649154 802.1d config 8000.00:20:da:e7:77:52.8087 root 8000.00:20:da:e7:\<br />

77:52<br />

pathcost 0 age 0 max 20 hello 2 fdelay 15<br />

18:25:54.648119 802.1d config 8000.00:20:da:e7:77:52.8087 root 8000.00:20:da:e7:\<br />

77:52<br />

pathcost 0 age 0 max 20 hello 2 fdelay 15<br />

18:25:56.650810 802.1d config 8000.00:20:da:e7:77:52.8087 root 8000.00:20:da:e7:\<br />

77:52<br />

pathcost 0 age 0 max 20 hello 2 fdelay 15<br />

18:25:58.182266 132.230.9.254 > OSPF-ALL.MCAST.NET: OSPFv2-hello 44: rtrid 132.\<br />

230.200.141<br />

backbone dr 132.230.9.254 [ttl 1]<br />

18:25:58.183882 randy2.rz.uni-freiburg.de.32895 > dns0.fun.uni-freiburg.de.doma<strong>in</strong>:<br />

25558+ PTR? 254.9.230.132.<strong>in</strong>-addr.arpa. (44) (DF)<br />

18:25:58.186580 dns0.fun.uni-freiburg.de.doma<strong>in</strong> > randy2.rz.uni-freiburg.de.32895:<br />

25558 NXDoma<strong>in</strong>* 0/1/0 (137)<br />

18:25:58.187051 randy2.rz.uni-freiburg.de.32895 > dns0.fun.uni-freiburg.de.doma<strong>in</strong>:<br />

25559+ PTR? 5.0.0.224.<strong>in</strong>-addr.arpa. (40) (DF)<br />

18:25:58.189666 dns0.fun.uni-freiburg.de.doma<strong>in</strong> > randy2.rz.uni-freiburg.de.32895:<br />

25559 1/4/4 PTR [|doma<strong>in</strong>]<br />

18:25:58.207177 randy2.rz.uni-freiburg.de.32895 > dns0.fun.uni-freiburg.de.doma<strong>in</strong>:<br />

25560+ PTR? 141.200.230.132.<strong>in</strong>-addr.arpa. (46) (DF)<br />

18:25:58.210175 dns0.fun.uni-freiburg.de.doma<strong>in</strong> > randy2.rz.uni-freiburg.de.32895:<br />

25560 NXDoma<strong>in</strong>* 0/1/0 (141)<br />

18:25:58.210747 randy2.rz.uni-freiburg.de.32895 > dns0.fun.uni-freiburg.de.doma<strong>in</strong>:<br />

25561+ PTR? 200.200.230.132.<strong>in</strong>-addr.arpa. (46) (DF)<br />

18:25:58.213119 dns0.fun.uni-freiburg.de.doma<strong>in</strong> > randy2.rz.uni-freiburg.de.32895:<br />

25561* 1/2/2 (173)<br />

18:25:58.649731 802.1d config 8000.00:20:da:e7:77:52.8087 root 8000.00:20:da:e7:\<br />

77:52<br />

pathcost 0 age 0 max 20 hello 2 fdelay 15<br />

14 packets received by filter<br />

0 packets dropped by kernel<br />

Wenn tcpdump ohne Argumente gestartet wird, wird das <strong>Netzwerk</strong>-Device mit <strong>der</strong> kle<strong>in</strong>sten<br />

Nummer, das ke<strong>in</strong> Loopback-Device ist, überwacht. Es kann aber - wie im Beispiel -<br />

auch e<strong>in</strong> spezielles Device angegeben werden. tcpdump dekodiert dann jedes Datagramm<br />

das über diese Device übertragen wird und zeigt es <strong>in</strong> e<strong>in</strong>er lesbaren Form an. Der erste<br />

<strong>E<strong>in</strong></strong>trag ist - wie leicht zu ersehen - <strong>der</strong> Zeitpunkt, zu dem das Datagramm gesendet o<strong>der</strong><br />

empfangen wurde. Der weitere Inhalt <strong>der</strong> Zeile hängt dann von <strong>der</strong> Art des Datagramms ab.<br />

Die ersten beiden Zeilen im Beispiel zeigen, e<strong>in</strong>en arp request. tcpdump gibt dabei auch die<br />

genaue Art des icmp Datagramms an. Das Größer-Zeichen (¿) gibt die Richtung an, <strong>in</strong> <strong>der</strong><br />

das Datagramm übermittelt wurde (es zeigt vom Sen<strong>der</strong> zum Empfänger). Die restlichen<br />

Zeilen protokollieren den Aufbau e<strong>in</strong>er telnet Verb<strong>in</strong>dung von albert.vk2ktj zu gw.vk2ktj<br />

Die Zahl am Ende jeden Rechnernamens gibt die verwendete Socket Nummer an, zu<br />

diesem Zweck wertet tcpdump die Datei /etc/services aus.<br />

Beispiel:<br />

tcpdump -i eth1 host 1.2.3.4 and not port ssh<br />

Zwei Kommandos spielen mit tcpdump zusammen: Wenn man mit tcpdump -w capture.log<br />

e<strong>in</strong> Logfile <strong>in</strong> e<strong>in</strong>em speziellen B<strong>in</strong>ärformat geschrieben hat, kann man dieses<br />

später mit tcptrace o<strong>der</strong> tcpflow auswerten. Beispiel: tcptrace -n -r capture.log ><br />

session.file


Kapitel 16<br />

<strong>Netzwerk</strong>überwachung<br />

16.1 Überblick<br />

Inzwischen ist <strong>der</strong> Rechnerarbeitsplatz <strong>in</strong> Firmen und Organisationen zum Standard avanciert.<br />

Viele Dienste, wie <strong>der</strong> Druck- o<strong>der</strong> Fileserver, die Firewall, <strong>der</strong> Mail- und Webserver<br />

werden üblicherweise auch <strong>in</strong> kle<strong>in</strong>eren Firmennetzwerken angeboten. Die Zahl <strong>der</strong> Masch<strong>in</strong>en<br />

hat damit e<strong>in</strong>en so großen Umfang angenommen, dass sich nicht mehr durch e<strong>in</strong>faches<br />

”Draufgucken” ihre vielfältigen Aufgaben überwachen lassen.<br />

Mit diesem Wachstum <strong>der</strong> LANs (Local Area Networks) entsteht die Notwendigkeit sich<br />

e<strong>in</strong>en schnellen und umfassenden Überblick über den Zustand e<strong>in</strong>es Netzes und <strong>der</strong> angeschlossenen<br />

Masch<strong>in</strong>en verschaffen zu können. Deshalb existieren <strong>in</strong>zwischen e<strong>in</strong>ige, teilweise<br />

konkurrierende Protokolle zur Überwachung von Workstations und aktiven <strong>Netzwerk</strong>komponenten.<br />

Das am häufigsten verwendete Verfahren zur Überwachung und Konfiguration<br />

e<strong>in</strong>gesetzter Komponenten ist das Simple Network Management Protocol (SNMP).<br />

<strong>E<strong>in</strong></strong>e Reihe ernsthafter Leute hat sich e<strong>in</strong>e Reihe wichtiger Gedanken für e<strong>in</strong> ernsthaftes<br />

Problem gemacht und SNMP erfunden: Wie kann e<strong>in</strong>e Organisation Hun<strong>der</strong>te o<strong>der</strong> Tausende<br />

(wenn nicht noch mehr) aktiver <strong>Netzwerk</strong>komponenten und Masch<strong>in</strong>en sowie das<br />

zugrunde liegende <strong>Netzwerk</strong> beobachten und steuern?<br />

SNMP basiert auf <strong>der</strong> TCP/IP Protokoll-Suite. Es etabliert durch se<strong>in</strong>e starke Standardisierung<br />

e<strong>in</strong> e<strong>in</strong>heitliches Modell zur Kontrolle und Verwaltung von <strong>Netzwerk</strong>en. <strong>E<strong>in</strong></strong><br />

wesentlicher Vorteil dieses Protokolls liegt neben se<strong>in</strong>er weiten Verbreitung <strong>in</strong> <strong>der</strong> flexiblen<br />

Erweiterbarkeit. SNMP erlaubt die schnelle und e<strong>in</strong>fache Übertragung von Datenpaketen<br />

zur Zustandsbeschreibung von <strong>Netzwerk</strong>geräten. Jedoch genügt es <strong>in</strong> e<strong>in</strong>igen Fällen nicht,<br />

festzustellen, dass e<strong>in</strong> bestimmter Dienst aktiv ist, <strong>in</strong>dem man überprüft, ob <strong>der</strong> entsprechende<br />

Prozess <strong>in</strong> <strong>der</strong> Liste laufen<strong>der</strong> Programme auftaucht. Es geht nicht darum, e<strong>in</strong>e<br />

Innenansicht e<strong>in</strong>er Masch<strong>in</strong>e festzustellen, son<strong>der</strong>n den Zustand zu überprüfen, wie er sich<br />

aus Sicht des Benutzers darstellt. Vielfach ist erst dann e<strong>in</strong>e Aussage s<strong>in</strong>nvoll, wenn e<strong>in</strong><br />

Testzugriff über das <strong>Netzwerk</strong> erfolgreich durchgeführt wurde. Für diese Art des Monitor<strong>in</strong>g<br />

bieten sich Web-, FTP- und Mailserver sowie Authentifizierungsdienste an, da nur so<br />

e<strong>in</strong>e Nutzbarkeit aus Sicht des Users emuliert werden kann.<br />

16.2 SNMP - Das Simple Network Mangement Protocol<br />

16.2.1 Überblick<br />

Das Konzept von SNMP be<strong>in</strong>haltet e<strong>in</strong>e verteilte Management Architektur. Das Managementproblem<br />

wird <strong>in</strong> zwei Teile aufgespalten und es werden für jeden Teil separate Stan-<br />

231


232 KAPITEL 16. NETZWERK ÜBERWACHUNG<br />

dards def<strong>in</strong>iert. Der erste Teil befaßt sich mit dem Austausch von Informationen. SNMP<br />

basierende <strong>Netzwerk</strong>managementlösungen arbeiten im Client-Server-Modell. Anwendungen<br />

welche zum Sammeln von Daten o<strong>der</strong> zur Steuerung von Geräten dienen, werden Agenten<br />

genannt. Der Management Host kann diese Daten von den Agenten abfragen. Das Protokoll<br />

bestimmt zum e<strong>in</strong>en, wie die Client-Software funktioniert und die Austauschformate zwischen<br />

Management Host und Agenten aussehen, sowie die Form <strong>der</strong> Namen und Adressen.<br />

Zum zweiten wird festgelegt, welche Daten e<strong>in</strong> gemanagtes Gerät vorhalten muss, wie diese<br />

benannt s<strong>in</strong>d und welche Syntax zum Ausdruck bestimmter Werte und Zustände verwendet<br />

wird. SNMP verfolgt e<strong>in</strong>en m<strong>in</strong>imalistischen Ansatz: Das Set <strong>der</strong> zugelassenen Operationen<br />

ist sehr beschränkt, e<strong>in</strong> paar Befehle verschaffen die gesamte Funktionalität.<br />

SNMP wurde von <strong>der</strong> IETF <strong>in</strong> etlichen RFC’s standardisiert (ua. 1155, 1157, 1212,<br />

1213, 1441-46, 1450). Hier<strong>in</strong> wurde festgelegt, dass SNMP mittels des verb<strong>in</strong>dungs- und<br />

quittungslosen Unified Data Protocol (UDP) kommuniziert. Der Austausch zwischen Agent<br />

und Monitor erfolgt dabei standardmäßig auf Port 161. Die Management Station kann Daten<br />

von den zu überwachenden Agenten (zyklisch) pollen, welche als Server fungieren. Die<br />

MIB-Informationen können dann grafisch aufbereitet, dargestellt o<strong>der</strong> an<strong>der</strong>s verarbeitet<br />

werden. Die Host s<strong>in</strong>d jedoch auch <strong>in</strong> <strong>der</strong> Lage, gewisse Ereignisse mittels sogenannter Traps<br />

(”Falltüren”) an die Management Station über Port 162 zu melden. Der Informationsaustausch<br />

zwischen den Agenten und dem Überwachungs-Client läuft im H<strong>in</strong>tergrund ab und<br />

versucht die <strong>Netzwerk</strong>belastung ger<strong>in</strong>g zu halten.<br />

SNMP liegt <strong>in</strong>zwischen <strong>in</strong> <strong>der</strong> dritten Version (SNMPv3) vor, jedoch s<strong>in</strong>d die Unterschiede<br />

zu den Vorgängern ger<strong>in</strong>g und die meisten Befehle und Strukturen abwärts kompatibel.<br />

16.3 Die Datendef<strong>in</strong>ition<br />

<strong>E<strong>in</strong></strong> überwachtes Objekt muss bestimmte Zustands- und Kontrolldaten vorhalten, da sie<br />

vom Manager abgefragt werden können. Dazu gehören bei Routern sicherlich die Rout<strong>in</strong>gtabellen,<br />

sowie e<strong>in</strong>kommen<strong>der</strong> und ausgehen<strong>der</strong> Datenverkehr. Switches werden bestimmte<br />

Portstatistiken zu transferierten Paketmengen und dabei aufgetretenen Fehlern vorhalen;<br />

e<strong>in</strong> Drucker kann die Zahl <strong>der</strong> ausgeworfenen Seiten und die Länge <strong>der</strong> Druckerwarteschlange<br />

bereithalten. Obwohl dem Manager <strong>der</strong> Zugriff auf diese Daten erlaubt wird, sagt SNMP<br />

nichts Genaueres darüber aus, welche Informationen auf welchem Gerätetyp erhältlich s<strong>in</strong>d.<br />

Stattdessen def<strong>in</strong>iert e<strong>in</strong> weiterer Standard die Details. In <strong>der</strong> Management Information Base<br />

(MIB) werden die Informationen vermerkt, sowie welche Bedeutung sie haben, welche<br />

Operationen auf ihnen ausgeführt werden können und welche Werte sie annehmen können.<br />

So hat e<strong>in</strong> Paketzähler für e<strong>in</strong>en Switchport e<strong>in</strong>en Integerwert, <strong>der</strong> nur lesbar ist und nicht<br />

verän<strong>der</strong>t werden kann. <strong>E<strong>in</strong></strong>e Variable, die den Zustand desselben Ports beschreibt (ob dieser<br />

e<strong>in</strong>- o<strong>der</strong> abgeschaltet ist) wird den Zustandswert enthalten und les-/schreibbar se<strong>in</strong>.<br />

Der Vorteil MIBs unabhängig von SNMP zu def<strong>in</strong>ieren, liegt dar<strong>in</strong>, dass Hersteller<br />

von <strong>Netzwerk</strong>komponenten neue Variablen e<strong>in</strong>führen können. <strong>E<strong>in</strong></strong> Benutzer kann dieselbe<br />

<strong>Netzwerk</strong>managementsoftware, wie für die bekannten MIBs verwenden. Natürlich wird ke<strong>in</strong><br />

Gerät die Daten liefern, die <strong>in</strong> ihm unbekannten MIBs def<strong>in</strong>iert s<strong>in</strong>d. Trotzdem bleibt die<br />

Sprache und das Protokoll von SNMP gleich.<br />

Zu Zeiten von SNMPv1 und v2 waren alle Daten <strong>in</strong> e<strong>in</strong>er e<strong>in</strong>zigen MIB festgelegt.<br />

SNMPv3 erlaubt verschiedene MIBs zu def<strong>in</strong>ieren. In <strong>der</strong> System-MIB (MIB-II) s<strong>in</strong>d grundlegende<br />

Verwaltungsdaten abgelegt, wovon e<strong>in</strong>ige <strong>in</strong> <strong>der</strong> Tabelle gezeigt s<strong>in</strong>d. Die MIB-II<br />

wird von den meisten Herstellern unterstützt. Darüberh<strong>in</strong>aus def<strong>in</strong>iert je<strong>der</strong> Anbieter von<br />

netzwerkfähiger Hardware weitere MIBs, z.B. die Host-MIB (MIB für Endgeräte).


16.3. DIE DATENDEFINITION 233<br />

MIB Informationen zu/über<br />

system Überwachtes Gerät, Standort, Eigentümer, Software, Uptime, Ansprechpartner<br />

...<br />

<strong>in</strong>terfaces <strong>E<strong>in</strong></strong>gebaute reale und virtuelle <strong>Netzwerk</strong><strong>in</strong>terfaces: Mehrere bei<br />

Routern und Switches, meistens e<strong>in</strong>es bei Rechnern, Druckern ...<br />

ip IP-Daten, wie Rout<strong>in</strong>gtabelle, Paketzähler ...<br />

tcp TCP-Daten, wie offene Verb<strong>in</strong>dungen, Paketzähler<br />

udp UDP-Daten, wie offene Ports, Paketzähler<br />

snmp Statistiken und Zähler des SNMP-Agenten<br />

host Statistiken und Daten klassischer Workstations, wie Speicher,<br />

Festplatten, Zahl <strong>der</strong> Nutzer ...<br />

Tabelle 16.1: <strong>E<strong>in</strong></strong>ige Standard-MIBs<br />

16.3.1 Der SNMP-Namensraum und die Management Information Bases<br />

Der SNMP-Datenraum ist großzügig und universell erweiterbar angelegt. Große Teile s<strong>in</strong>d<br />

für zukünftige Ergänzungen reserviert und für die evtl. Migration mit an<strong>der</strong>en baumartigen<br />

Datenstrukturen freigehalten.<br />

<strong>E<strong>in</strong></strong> weiterer Standard def<strong>in</strong>iert das Regelwerk zum Festlegen und Identifizieren <strong>der</strong> MIB<br />

Variablen. Dieses grundlegende Format heißt SMI (Structure of Management Information).<br />

Um das Protokoll e<strong>in</strong>fach zu halten, legt SMI e<strong>in</strong>ige Restriktionen zu den <strong>in</strong> den MIBs<br />

erlaubten Variablen fest, bestimmt <strong>der</strong>en Benennung und die Def<strong>in</strong>ition von Variablentypen.<br />

Hierzu gehören z.B. <strong>der</strong> Zähler (Counter, Integervariable im Bereich von 0..2ˆ32-1)<br />

o<strong>der</strong> die IP-Adresse (4 Oktets). Die Datentypen können wie<strong>der</strong>um zu Tabellen o<strong>der</strong> Folgen<br />

komb<strong>in</strong>iert werden.<br />

Zur Bennenung <strong>der</strong> MIB-Variablen und <strong>der</strong>en Referenzierung verwendet SMI den ASN.1-<br />

Standard (Abstract Syntax Notation <strong>der</strong> ISO). Dieses ist e<strong>in</strong>e formale Sprache mit zwei<br />

Ausprägungen: <strong>E<strong>in</strong></strong>em kompakten masch<strong>in</strong>en-lesbaren Teil für die Verwendung im Kommunikationsprotokoll<br />

und e<strong>in</strong>er für Menschen lesbaren Form <strong>der</strong> Daten zur Beschreibung<br />

<strong>in</strong> Dokumenten. ASN.1 for<strong>der</strong>t dabei e<strong>in</strong>e sehr hohe Präzision (z.B. die Angabe des Wertebereichs<br />

e<strong>in</strong>er Variablen), um e<strong>in</strong>e gute Interoperabilität zu gewährleisten.<br />

Die Variablen <strong>der</strong> MIBs s<strong>in</strong>d <strong>in</strong> e<strong>in</strong>er baumartigen Struktur abgelegt, dem Object Identifier<br />

Namespace, welcher von ISO und ITU verwaltet wird. Der Aufbau ähnelt e<strong>in</strong> wenig dem<br />

vom Doma<strong>in</strong> Name System o<strong>der</strong> Dateisystemen bekannten. Der Namensraum ist global, d.h.<br />

alle e<strong>in</strong>getragenen Zweige s<strong>in</strong>d e<strong>in</strong>deutig. Subnamensräume können jedoch delegiert werden,<br />

so dass nicht je<strong>der</strong> neue <strong>E<strong>in</strong></strong>trag bei den o.g. Organisationen beantragt werden muss.<br />

Die Wurzel des Bauses ist unbenannt, danach folgen die managenden Organisationen<br />

(ISO, ITU und ISO+ITU geme<strong>in</strong>sam). Das Trennzeichen zwischen den Hierarchieebenen<br />

ist <strong>der</strong> Punkt. Angesprochen werden kann je<strong>der</strong> Host über e<strong>in</strong>e Nummer, wobei zur Vere<strong>in</strong>fachung<br />

des Zugriffes auch Namen erlaubt s<strong>in</strong>d. Diese dienen jedoch wie beim DNS eher<br />

<strong>der</strong> Bequemlichkeit; sie s<strong>in</strong>d ke<strong>in</strong>e Eigenschaften des Hierarchiebaumes und werden nicht<br />

bei <strong>der</strong> Client-Server-Kommunikation verwendet.<br />

Der für SNMP <strong>in</strong>teressanteste Teil des Namensraums wird mittels <strong>der</strong> sogenannten<br />

MIBs aufgespannt. Sie def<strong>in</strong>ieren die unterschiedlichen Daten-Doma<strong>in</strong>s, die mittels SNMP<br />

abgefragt werden können. Sie be<strong>in</strong>halten das Schema <strong>der</strong> abfragbaren Informationen und<br />

die<br />

Übersetzung <strong>der</strong> OIDs <strong>in</strong> ihre jeweiligen Namen. Dabei s<strong>in</strong>d die obersten Ebenen<br />

des Datenbaumes für die Def<strong>in</strong>ition <strong>der</strong> Berechtigungen an e<strong>in</strong>zelne Gruppen reserviert.<br />

Der spannen<strong>der</strong>e Abschnitt des SMI-Baumes startet mit OID 1.3.6.1, welcher den Namen


234 KAPITEL 16. NETZWERK ÜBERWACHUNG<br />

”iso.org.dod.<strong>in</strong>ternet” trägt. Hier f<strong>in</strong>den sich die System-, Interface-, TCP/IP, hostspezifische<br />

und weitere (herstellerdef<strong>in</strong>ierte) MIBs.<br />

Ansehen kann man sich die MIBs mit e<strong>in</strong>em Texteditor, komfortabel wird es jedoch<br />

erst mit grafischen Tools. Cheops und TK<strong>in</strong>ed haben e<strong>in</strong>gebaute Funktionen um MIBs<br />

zu visualisieren, richtig komfortabel wird es mit Mbrowser (siehe [7]), welcher auf Net-<br />

SNMP aufsetzt und e<strong>in</strong> GTK-GUI verwendet. Mit mbrowser lassen sich auch die Standard-<br />

SNMP-Kommandos, wie get, set, walk absetzen, die weiter unten <strong>in</strong> ihrer Kommandozeilenausführung<br />

besprochen werden.<br />

16.3.2 Die SNMP-Agenten<br />

Je<strong>der</strong> e<strong>in</strong>zelne Knoten im Netz - <strong>Netzwerk</strong>komponenten o<strong>der</strong> auch Endgeräte, welche sich<br />

mittels SNMP verwalten lassen, verfügen über e<strong>in</strong>en Management Agenten. Dieser stellt Informationen<br />

<strong>in</strong> strukturierter Form zur Verfügung. Anhand dieser erfolgt die Überwachung<br />

und Konfiguration des jeweiligen Gerätes. Die Datenstruktur wird als Management Information<br />

Base (MIB) bezeichnet. Die Agenten s<strong>in</strong>d üblicherweise als Softwarelösung <strong>in</strong> den<br />

Netzknoten und Endgeräten umgesetzt. Diese Implementation erfolgt bei den Anbietern<br />

aktiver <strong>Netzwerk</strong>komponenten meistens herstellerspezifisch. Auf e<strong>in</strong>er L<strong>in</strong>ux- bzw. <strong>Unix</strong>-<br />

Workstation stehen dafür mehrere Implementationen zur Verfügung. Die Lösungen reichen<br />

von C++-Implementationen, wie dem Open-SNMP, die <strong>in</strong> C geschriebene Toolsuite des<br />

CMU bzw. Net-SNMP, Bibliotheken die TCL/TK zu Grunde legen, wie ”scotty” bis h<strong>in</strong> zu<br />

Java- o<strong>der</strong> Perl-basierten Umsetzungen. Ihre Funktionalität unterscheidet sich <strong>in</strong> den von<br />

den Agenten unterstützten MIBs sowie den Werkzeugen zur Erlangung und Visualisierung<br />

<strong>der</strong> Daten.<br />

16.3.3 Der Kommunikations-Code <strong>der</strong> Agenten<br />

Nun s<strong>in</strong>d die Datentypen und die Struktur <strong>der</strong> zur Verfügung stehenden Daten def<strong>in</strong>iert.<br />

Jetzt sollen diese zwischen dem Agenten und dem Management System ausgetauscht werden.<br />

Hierzu s<strong>in</strong>d vier grundlegende Operationen und ihre Erweiterungen def<strong>in</strong>iert:<br />

Jede Bitte um e<strong>in</strong>en Satz von Daten muss e<strong>in</strong>en vollständigen Pfad für die erwünschte<br />

Information be<strong>in</strong>halten. Das Schreiben und Lesen von Fel<strong>der</strong>n auf e<strong>in</strong>em Knoten <strong>der</strong> SMI-<br />

Hierarchie erfolgt mit set und get. Mittels get-next lassen Tabellen<strong>in</strong>formationen schrittweise<br />

anfor<strong>der</strong>n. Die Berechtigung zum Lesen bzw. Schreiben <strong>der</strong> e<strong>in</strong>zelnen OIDs erfolgt bei<br />

SNMPv1 bzw. v2 mittels ”Communitystr<strong>in</strong>g” und die Angabe <strong>der</strong> zum Lesen berechtigten<br />

Hosts o<strong>der</strong> <strong>Netzwerk</strong>e.<br />

Die Funktion ”set” ist nicht ganz unkritisch, da es die e<strong>in</strong>e Steuerung von Geräten<br />

erlaubt, wie z.B. das Abschalten von Ports auf Switches o<strong>der</strong> Routern. Dieses ist jedoch<br />

unter Sicherheitsaspekten nicht unproblematisch, da die Daten meistens unverschlüsselt<br />

übertragen werden und erst die Spezifikation von SNMPv3 komplexere Authentifizierung<br />

erlaubt.<br />

<strong>E<strong>in</strong></strong>e Trap (Kommando trap) geht den umgekehrten Weg. Sie erlaubt es Benachrichtigung<br />

unabhängig von e<strong>in</strong>er Anfrage des Clients an diesen zu übermitteln. Dieses kann<br />

für das Auftreten bestimmter Ereignisse o<strong>der</strong> Bed<strong>in</strong>gungen festgelegt werden, läßt sich jedoch<br />

nicht für beliebige Fel<strong>der</strong> def<strong>in</strong>ieren. Standard-Traps s<strong>in</strong>d z.B. die Information zum<br />

Start des Servers, Traps, die Ausfälle o<strong>der</strong> Wie<strong>der</strong>belebungen von <strong>Netzwerk</strong>verb<strong>in</strong>dungen<br />

kundgeben und e<strong>in</strong>ige Authentifizierungsprobleme. Der Mechanismus zur Def<strong>in</strong>ition von<br />

Trap-Nachrichten hängt von <strong>der</strong> jeweiligen Server-Implementierung ab. Switches und Router<br />

kennen an<strong>der</strong>e und meistens weitaus mehr verschiedene Traps als Endgeräte, die jedoch


16.4. SNMP-IMPLEMENTIERUNGEN UNTER LINUX 235<br />

meistens nicht genormt s<strong>in</strong>d. Auf e<strong>in</strong>er L<strong>in</strong>ux-Workstation ist es schließlich e<strong>in</strong>facher an<strong>der</strong>e<br />

Konzepte als SNMP-Traps zur Behandlung von Ausnahmesituationen umzusetzen.<br />

16.4 SNMP-Implementierungen unter L<strong>in</strong>ux<br />

Wie bereits kurz erwähnt stehen unter L<strong>in</strong>ux e<strong>in</strong>ige Implementierungen von SNMP zur<br />

Verfügung. Jedoch soll sich <strong>der</strong> Artikel auf die aus Sicht des Autors beste und vollständigste<br />

Umsetzung beziehen: Net-SNMP. Nachdem die Entwicklung des bisher im L<strong>in</strong>uxumfeld<br />

recht weit verbreiteten Paketes <strong>der</strong> Carnegie Mellon University (CMU) etwas e<strong>in</strong>geschlafen<br />

ist, genießt das Projekt ”Net-SNMP” zunehmende Beachtung. Es ist aus e<strong>in</strong>em Projekt<br />

<strong>der</strong> University of California <strong>in</strong> Davis hervorgegangen. Das Paket steht unter <strong>der</strong> GPL und<br />

kann über die Projekthomepage (siehe [] netsnmp.org) bezogen werden. In den meisten<br />

Fällen wird man es nicht mehr selbst kompilieren müssen, da es Bestandteil vieler L<strong>in</strong>uxdistributionen<br />

ist. Gründe es selbst zu übersetzen, könnten <strong>in</strong> notwendigen Bugfixes o<strong>der</strong><br />

experimentellen neuen Features liegen.<br />

Das Net-SNMP-Paket be<strong>in</strong>haltet e<strong>in</strong>e C-Bibliothek mit den wesentlichen Funktionen,<br />

den Agenten (SNMP-Server, d.h. snmpd) und Programme zur Datenbeschaffung, welche<br />

die vier Standardkommandos ”get”, ”get-next” und ”trap” enthalten. Die Syntax und die<br />

Namen <strong>der</strong> Standardkommandos s<strong>in</strong>d festgelegt, die <strong>der</strong> von verschiedenen SNMP-Paketen<br />

mitgelieferten Programme jedoch nicht! Bei <strong>der</strong> Vorstellung des Monitor<strong>in</strong>g-Tools Nagios<br />

im zweiten Teil sieht man, das dieses e<strong>in</strong>e eigene SNMP-Umsetzung mitbr<strong>in</strong>gt. Auch Programm<br />

MRTG zur Darstellung <strong>der</strong> Auslastung von <strong>Netzwerk</strong><strong>in</strong>terfaces (siehe []) beziehen<br />

ihre Daten vom SNMP-Agenten, verwenden aber die Aufrufe aus ihrer eigenen Bibliothek.<br />

Net-SNMP implementiert die Funktionalität von SNMPv3 und is modular mittels AgentX<br />

erweiterbar.<br />

16.5 Kommandos zur Datenbeschaffung<br />

Das Beste zum Ausprobieren <strong>der</strong> verschiedenen SNMP-Kommandos ist e<strong>in</strong>e Masch<strong>in</strong>e o<strong>der</strong><br />

<strong>Netzwerk</strong>komponente im eigenen Subnetz. Der ”Communitystr<strong>in</strong>g” zur Authentifizierung<br />

gegenüber dem Agenten sollte bekannt und die eigene IP-Nummer als zugelassen auf <strong>der</strong><br />

entsprechenden Masch<strong>in</strong>e e<strong>in</strong>getragen se<strong>in</strong>. Handelt es sich beim beobachteten Gerät um<br />

e<strong>in</strong>en Net-SNMP-Agenten, werden diese Informationen im Bereich [A]-[D] (siehe Beispiel<br />

weiter unten) <strong>der</strong> Konfigurationsdatei angegeben.<br />

snmpget target-host community sysDescr.0<br />

liefert z.B. die Beschreibung des Gerätes:<br />

system.sysDescr.0 = 3Com SuperStack II<br />

snmpget target-ip community .1.3.6.1.2.1.1.1.0<br />

liefert das identische Ergebnis.<br />

Die Kommandos von Net-SNMP gehorchen dabei folgen<strong>der</strong> Syntax:<br />

Programmname [Optionen...] {} [ ...]<br />

Die Object ID kann immer als Nummer und so als Def<strong>in</strong>ition <strong>in</strong> e<strong>in</strong>er <strong>in</strong>stallierten MIB<br />

angegeben, als Name angegeben werden. Mittels <strong>der</strong> Optionen lassen sich die SNMP-Version<br />

(1,2 o<strong>der</strong> 3) für die Anfrage angeben sowie Spezifika für e<strong>in</strong>zelne Versionen setzen. Daüberh<strong>in</strong>aus<br />

kann bestimmt werden, wie die <strong>E<strong>in</strong></strong>- und Ausgabe und die Darstellung <strong>der</strong> MIB<br />

formatiert werden soll o<strong>der</strong> Debug<strong>in</strong>formationen generiert werden. Snmpget, snmpgetnext<br />

und die abgeleiteten Tools wird man selten direkt e<strong>in</strong>setzen. Sie eignen sich für Tests und


236 KAPITEL 16. NETZWERK ÜBERWACHUNG<br />

e<strong>in</strong>fache Shellskripten. Für die visuelle Darstellung z.B. <strong>der</strong> Auslastung e<strong>in</strong>zelner Ports e<strong>in</strong>es<br />

L<strong>in</strong>uxrouters o<strong>der</strong> e<strong>in</strong>es Switch kommt MRTG (Multi Router Traffic Grapher, siehe Kap.<br />

16.8) <strong>in</strong> Frage, da hier neben dem momentanen Zustand auch Zeitreihen gut darzustellen<br />

s<strong>in</strong>d.<br />

Mit dem Programm snmptranslate läßt sich vergleichbar mit ”nslookup” im Doma<strong>in</strong><br />

Name System e<strong>in</strong>e Übersetzung zwischen Nummer und Name auslesen. Darüberh<strong>in</strong>aus bekommt<br />

man weitere Informationen, z.B. e<strong>in</strong>e Beschreibung <strong>der</strong> Variablen und ihren Typ<br />

angezeigt.<br />

Kasten:<br />

Ausgabe des Kommandos ”snmptranslate -Td -OS system.sysDescr”<br />

.1.3.6.1.2.1.1.1<br />

sysDescr OBJECT-TYPE<br />

-- FROM SNMPv2-MIB, RFC1213-MIB<br />

-- TEXTUAL CONVENTION DisplayStr<strong>in</strong>g<br />

SYNTAX OCTET STRING (0..255)<br />

DISPLAY-HINT "255a"<br />

MAX-ACCESS read-only<br />

STATUS current<br />

DESCRIPTION "A textual description of the entity. This value should<br />

<strong>in</strong>clude the full name and version identification of the<br />

system’s hardware type, software operat<strong>in</strong>g-system, and<br />

network<strong>in</strong>g software."<br />

::= { iso(1) org(3) dod(6) <strong>in</strong>ternet(1) mgmt(2) mib-2(1) system(1) 1 }<br />

Programme, wie snmpnetstat, snmpstatus o<strong>der</strong> snmpdf vere<strong>in</strong>fachen wichtige Standardanfragen,<br />

z.B. nach offenen TCP-Verb<strong>in</strong>dungen und UDP-Ports, dem Gerätetyp und se<strong>in</strong>en<br />

Interfaces o<strong>der</strong> dem freien Speicherplatz. Hier s<strong>in</strong>d im Gegensatz zu snmpget, snmpgetnext,<br />

snmptable ke<strong>in</strong>e OIDs anzugeben.<br />

Da es recht aufwändig ist, sich mittels snmpget o<strong>der</strong> snmpgetnext e<strong>in</strong>en umfassenden<br />

Überblick über den Baum verfügbarer Daten e<strong>in</strong>es Endgerätes o<strong>der</strong> <strong>Netzwerk</strong>knotens zu<br />

verschaffen, br<strong>in</strong>gt snmpwalk Erleichterung. Dieses Programm erlaubt es den gesamten<br />

Datenbaum e<strong>in</strong>es Agenten sukzessive abzufragen o<strong>der</strong> Unterbäume vollständig abzulaufen.<br />

Letzteres geschieht über die Angabe e<strong>in</strong>es Teils des OID. Je länger <strong>der</strong> Object Identifier<br />

wird, desto genauer wird <strong>der</strong> abzufragende Teil des Baumes e<strong>in</strong>gegrenzt und kürzer wird<br />

die Ausgabe.<br />

16.6 Konfiguration des UCD-SNMP<br />

16.6.1 Der Kopf def<strong>in</strong>iert die Zugriffs-Policies<br />

Der Server ”snmpd”, welcher als Softwareagent auf <strong>der</strong> zu beobachtenden Masch<strong>in</strong>e läuft<br />

wird mittels /etc/ucdsnmpd.conf gesteuert und üblicherweise durch e<strong>in</strong> Runlevel-Skript <strong>in</strong><br />

/etc/<strong>in</strong>it.d gestartet.<br />

Die ersten vier Abschnitte ([A]-[D]) <strong>der</strong> Konfigurationsdatei dienen <strong>der</strong> Authentifizierung,<br />

wobei jeweils zu überlegen ist, welche Hosts welche Daten pollen dürfen. In den<br />

meisten Fällen genügt e<strong>in</strong>e Beschränkung auf das lokale Subnetz, wobei jedoch auch aus-<br />

schließlich die Management Station (also <strong>der</strong> Rechner, von dem die<br />

Überwachung läuft)<br />

e<strong>in</strong>getragen werden kann. Der Agent kann mehrere unterschiedliche Access-Regeln def<strong>in</strong>ieren.<br />

<strong>E<strong>in</strong></strong>e solche Regel besteht aus e<strong>in</strong>er MIB, die alle Bereiche <strong>der</strong> MIB enthält, auf welche


16.6. KONFIGURATION DES UCD-SNMP 237<br />

e<strong>in</strong> Zugriff für die Nutzergruppe gestattet ist. Festgelegt wird weiterh<strong>in</strong> <strong>der</strong> Zugriffsmodus,<br />

welcher im Beispiel für Anfragen aus dem <strong>Netzwerk</strong> nur lesend erfolgen darf.<br />

Die Gesamtheit <strong>der</strong> Verwaltungsrechte wird <strong>in</strong> e<strong>in</strong>em Community Profile zusammengefaßt.<br />

Anhand des vom Client mitgelieferten Community Passworts (hier immer mit ”community”<br />

bezeichnet) bestimmt <strong>der</strong> Agent, ob MIB Objekte für die aktuelle Anfrage sichtbar<br />

s<strong>in</strong>d o<strong>der</strong> modifiziert werden dürfen. Wird das eigene LAN als unsicher e<strong>in</strong>geschätzt, kann<br />

e<strong>in</strong>e Authentifizierung nach SNMPv3 e<strong>in</strong>gestellt werden. Die Steuerung erfolgt mit den<br />

Kommandos snmpusm für die Benutzer- und snmpvacm für Zugriffsrechteverwaltung. Jedoch<br />

s<strong>in</strong>d Probleme mit Clients zu erwarten, welche nicht SNMPv3 beherrschen.<br />

Ohne weitere Konfiguration stellt Net-SNMP die meisten <strong>der</strong> üblichen Variablen <strong>der</strong><br />

Standard-MIB unter L<strong>in</strong>ux zur Verfügung. Abschnitt [E] erlaubt das Setzen <strong>der</strong> Standardvariablen<br />

Location- und Kontakt OID. Wer e<strong>in</strong>en näheren Blick auf die unterschiedlichen<br />

MIBs werfen möchte, kann unterhalb des Verzeichnisses /usr/share/mibs/(ietf) bzw.<br />

/usr/share/snmp/mibs nachsehen. Zum Standard gehören auch die <strong>Netzwerk</strong><strong>in</strong>formationen<br />

zu den konfigurierten Interfaces, Daten zu ARP, ICMP, TCP, jeweils <strong>in</strong>klusive <strong>der</strong> Anzahl<br />

<strong>der</strong> transferierten Pakete <strong>in</strong> verschiedenen Kategorien.<br />

16.6.2 Parameter <strong>der</strong> ”Enterprise”-Erweiterungen<br />

Über den Standard h<strong>in</strong>aus schafft Net-SNMP e<strong>in</strong>e Schnittstelle, festzustellen, ob bestimmte<br />

Prozesse laufen. Die MIB bef<strong>in</strong>det sich im ”Enterprises” Unterbaum (1.3.6.1.4.1) und wird<br />

mit <strong>der</strong> ID 2021 als UCD-SNMP-MIB e<strong>in</strong>gehangen. Die Prozesstabelle wie<strong>der</strong>um f<strong>in</strong>det<br />

sich unterhalb <strong>der</strong> ID 2, zusammengesetzt numerisch unterhalb 1.3.6.1.4.1.2021.2. In <strong>der</strong><br />

Konfiguationsdatei wird nach dem Schlüsselwort ”proc” das zu überwachende Programm<br />

und dann die Zahl <strong>der</strong> m<strong>in</strong>imal und maximal erlaubten Instanzen e<strong>in</strong>getragen werden.<br />

Abgefragt werden kann diese Tabelle z.B. mit:<br />

snmptable target-host community .1.3.6.1.4.1.2021.2<br />

welches als Ausgabe <strong>in</strong> Abhängigkeit <strong>der</strong> gezeigten Konfigurationsdatei folgendes produziert:<br />

SNMP table: enterprises.ucdavis.prTable<br />

prIndex prNames prM<strong>in</strong> prMax prCount<br />

1 automount 2 2 2<br />

2 X 1 2 1<br />

3 kdm 1 1 2<br />

4 ypb<strong>in</strong>d 1 4 4<br />

5 sshd 1 10 1<br />

6 axnet 0 1 1<br />

7 rwhod 0 1 1<br />

8 cron 0 1 1<br />

9 x<strong>in</strong>etd 0 1 1<br />

10 chooser 0 1 0<br />

16.6.3 Erweiterung durch externe Skripten und Programme<br />

Abschnitt [G] beschäftigt sich mit e<strong>in</strong>em speziellen, weil flexiblen Zweig des Unterbaumes<br />

”enterprises.ucdavis” (hier 1.3.6.1.4.1.2021.8). Hier wird dem Agenten erlaubt e<strong>in</strong> externes<br />

Skript auszuführen und das Resultat zurückzumelden. Dieser Bereich wird nicht fest vorgegeben,<br />

son<strong>der</strong>n kann vom Adm<strong>in</strong>istrator <strong>in</strong> <strong>der</strong> Konfigurationsdatei def<strong>in</strong>iert werden. Jede<br />

weitere Zeile erzeugt e<strong>in</strong>en weiteren Indexe<strong>in</strong>trag <strong>in</strong> die MIB-Tabelle.<br />

snmpwalk target-host public enterprises.ucdavis.extTable.extEntry.extResult


238 KAPITEL 16. NETZWERK ÜBERWACHUNG<br />

liefert e<strong>in</strong>e Ergebnisliste zurück, wobei die Ergebnisse die Shell-Variable des Rückgabewertes<br />

($?) repräsentieren:<br />

enterprises.ucdavis.extTable.extEntry.extResult.1 = 34<br />

enterprises.ucdavis.extTable.extEntry.extResult.2 = 33<br />

enterprises.ucdavis.extTable.extEntry.extResult.3 = 28<br />

enterprises.ucdavis.extTable.extEntry.extResult.4 = 0<br />

enterprises.ucdavis.extTable.extEntry.extResult.5 = 0<br />

enterprises.ucdavis.extTable.extEntry.extResult.6 = 0<br />

enterprises.ucdavis.extTable.extEntry.extResult.7 = 252<br />

enterprises.ucdavis.extTable.extEntry.extResult.8 = 253<br />

enterprises.ucdavis.extTable.extEntry.extResult.9 = 254<br />

enterprises.ucdavis.extTable.extEntry.extResult.10 = 255<br />

enterprises.ucdavis.extTable.extEntry.extResult.11 = 153<br />

Dieses Ergebnis läßt sich auch mit dem Kommando ”snmpbulkget -v2c ...” erziehlen,<br />

wobei mit <strong>der</strong> Option ”-v2c” e<strong>in</strong>e Session nach SNMPv2c zwischen dem Client und dem<br />

Agent generiert wird.<br />

Die MIB (bzw. e<strong>in</strong> Teilzweig dieser) wurde im vorliegenden Fall dazu e<strong>in</strong>gesetzt, externe<br />

Shellskripten auszuführen, welche wie<strong>der</strong>um das /proc-Device des Kernels auslesen und<br />

die evtl. erhaltenen Daten über den Returnwert zurückgeben. Die Erweiterung hier dazu<br />

benutzt, Informationen des System Management Busses (SMB, spezieller Bus mo<strong>der</strong>ner<br />

Ma<strong>in</strong>boards zur Steuerung und Überwachung von Komponenten) zu CPU-Temperatur und<br />

Drehzahl <strong>der</strong> verschiedenen Lüfter auszuwerten:<br />

List<strong>in</strong>g des Bash-Skriptes:<br />

# script for read<strong>in</strong>g lm_sensor <strong>in</strong>formation from procfs to pass<br />

# them via net-snmp<br />

#<br />

case "$1" <strong>in</strong><br />

*temp*)<br />

EXIT=( ‘cat /proc/sys/dev/sensors/*/$1 2>/dev/null|| echo 20‘ )<br />

EXIT3=${EXIT[2]}<br />

EXIT=${EXIT3%.*}<br />

if test ! $EXIT ; then EXIT=25 ; fi<br />

;;<br />

*fan*)<br />

EXIT=( ‘cat /proc/sys/dev/sensors/*/$1 2>/dev/null|| echo 200‘ )<br />

EXIT=${EXIT[1]}<br />

;;<br />

esac<br />

exit $EXIT<br />

<strong>E<strong>in</strong></strong>e <strong>E<strong>in</strong></strong>schränkung besteht jedoch im maximalen Return-Wert, welcher 255 nicht überschreiten<br />

kann. Vorsicht ist auch geboten, wenn man versucht, temporäre Daten auf <strong>der</strong><br />

Festplatte zwischenzuspeichern, da diese potentiellen Angreifern e<strong>in</strong>en <strong>E<strong>in</strong></strong>stieg erlauben<br />

könnten. Den Weg <strong>der</strong> Daten bis zur Anzeige im Monitor<strong>in</strong>g-Tool kann man sich so veranschaulichen:<br />

16.7 Überwachung weiterer Parameter<br />

Der anschließende Abschnitt ([H]) def<strong>in</strong>iert das Verhalten e<strong>in</strong>es weiteren Astes <strong>in</strong> <strong>der</strong> UCD-<br />

SNMP-MIB. Mit den Object Identifiers diesen Bereiches läßt sich <strong>der</strong> verbleibende Festspeicherplatz<br />

nach Lage im Dateisystembaum beobachten. Der Zahlenwert def<strong>in</strong>iert die untere


16.7.<br />

ÜBERWACHUNG WEITERER PARAMETER 239<br />

Grenze, ab <strong>der</strong> e<strong>in</strong>e Warnmeldung <strong>in</strong> die Ergebnistabelle e<strong>in</strong>getragen wird. Das nächste Beispielkommando<br />

liefert die z.B. prozentuale Belegung <strong>der</strong> als ”Rootfilesystem” gemounteten<br />

Festplatte:<br />

dirk@l<strong>in</strong>ux:~/kurs> snmpget target-host public .1.3.6.1.4.1.2021.9.1.9.1<br />

enterprises.ucdavis.dskTable.dskEntry.dskPercent.1 = 37<br />

Das Programm snmpgetnext kann man benutzen, um den zweiten Wert <strong>der</strong> Liste (die<br />

prozentuale Auslastung von /tmp) zu erhalten. Auch [I] konfiguriert e<strong>in</strong>en Unterbaum<br />

<strong>der</strong> UCD-SNMP-MIB: Die LoadTable (1.3.6.1.4.1.2021.10). Die Ganzzahlwerte nach dem<br />

Schlüsselwort geben die Maximalwerte an, bis zu denen ke<strong>in</strong> Warne<strong>in</strong>trag analog zur Dateisystembelegung<br />

generiert wird.<br />

Die vorhergehenden Beispiele bezogen sich auf die Net-SNMP-Implementation, e<strong>in</strong>e Zusammenarbeit<br />

mit an<strong>der</strong>en Komponenten ist natürlich angestrebt und klappt entsprechend.<br />

Z.B. lässt sich mit dem Befehl:<br />

dirk@l<strong>in</strong>ux:~/kurs> snmpset 10.10.1.1 private <strong>in</strong>terfaces.ifTable.ifEntry.<br />

ifAdm<strong>in</strong>Status.101 i down<br />

<strong>der</strong> Port Nummer 1 auf e<strong>in</strong>er 3COM SuperStack3 abschalten. Analog funktioniert dieses<br />

auch mit e<strong>in</strong>em Cisco C3500X, wobei die Portnummern hier von 1 - n durchnummeriert<br />

s<strong>in</strong>d (n statt 101, wie im obigen Beispiel).<br />

16.7.1 Weitergehende Ergänzungen<br />

Wem die e<strong>in</strong>zeilige Ausgabe nur des Rückgabewertes <strong>in</strong> Abschnitt [G] nicht genügte, f<strong>in</strong>det<br />

se<strong>in</strong>e Vorstellungen evtl. <strong>in</strong> [J] gelöst. Mit diesem MIB-Bereich ist es möglich mehrzeilige<br />

Ausgaben zuzulassen, die als entsprechende Tabellene<strong>in</strong>träge zurückgeliefert werden.<br />

In <strong>der</strong> Beispielkonfigurationsdatei werden die OIDs (1.3.6.1.4.1.2021.51 - 53) def<strong>in</strong>iert.<br />

Diese generieren verschiedene Ausgaben zur Hardwareausstattung und angemeldeten lokalen<br />

Benutzern <strong>der</strong> Masch<strong>in</strong>e aus dem Aufruf von externen Programmen. Auf diese Weise<br />

kann Informationsbeschaffung auf SNMP abgebildet werden, welches dann e<strong>in</strong> <strong>E<strong>in</strong></strong>loggen<br />

auf dem Zielsystem unnötig macht. <strong>E<strong>in</strong></strong>e Konfigurationszeile ist so aufgebaut, dass nach<br />

dem Schlüsselwort ”exec” die OID des Objektes angegeben wird, gefolgt vom Namen des<br />

Objekts, dem Aufruf des korrespondierenden externen Programms o<strong>der</strong> Skriptes <strong>in</strong>klusive<br />

eventueller Optionen.<br />

<strong>E<strong>in</strong></strong>e ganze Reihe weiterer Laufzeit<strong>in</strong>formationen ließe sich auf diesem Wege beschaffen.<br />

Jedoch gibt es e<strong>in</strong>ige <strong>E<strong>in</strong></strong>schränkungen bezüglich <strong>der</strong> verwendeten Datenfel<strong>der</strong> (nur Text-<br />

Fel<strong>der</strong> o<strong>der</strong> Return-Codes bis zum maximalen Wert von 255 s<strong>in</strong>d erlaubt), so dass nach<br />

e<strong>in</strong>er Testphase (z.B. <strong>der</strong> Auswertung <strong>der</strong> Meldungen des SMB) über e<strong>in</strong>e feste <strong>E<strong>in</strong></strong>b<strong>in</strong>dung<br />

als Modul nachgedacht werden sollte. <strong>E<strong>in</strong></strong>e Anleitung, wie e<strong>in</strong> Modul für den UCD-SNMP<br />

zu schreiben ist und wie die dazugehörige MIB designt werden muss, f<strong>in</strong>det sich auf <strong>der</strong><br />

Projekt-Homepage.<br />

In <strong>der</strong> Tutorial-Sektion f<strong>in</strong>det sich die Beschreibung e<strong>in</strong>es Toolkits, welches das Programmieren<br />

eigener Erweiterungen mittels C erlaubt. Enthalten s<strong>in</strong>d <strong>in</strong> <strong>der</strong> Schritt-für-<br />

Schrittanleitung e<strong>in</strong> Makefile, <strong>der</strong> Beispiel-Code e<strong>in</strong>er SNMP-Applikation und e<strong>in</strong>e Tutorial-<br />

MIB mit Hea<strong>der</strong>datei und e<strong>in</strong>e C-Sourcedatei. Hea<strong>der</strong> und C-Source s<strong>in</strong>d zum größten Teil<br />

mit mib2c erstellt worden, was e<strong>in</strong>en guten Ausgangspunkt für eigene Versuche liefert. Beim<br />

Neuübersetzen des Agenten kann das experimentelle Modul e<strong>in</strong>gefügt werden.<br />

Auf diesem Wege könnte <strong>der</strong> Umweg über das oben beschriebene Shellskript zugunsten<br />

e<strong>in</strong>er festen Implementierung abgelöst werden. Damit würden sich weiterh<strong>in</strong> die Beschränkungen<br />

<strong>der</strong> Variablen aufheben lassen, da man <strong>der</strong>en Deklaration mittels MIB selbst<br />

<strong>in</strong> <strong>der</strong> Hand hat.


240 KAPITEL 16. NETZWERK ÜBERWACHUNG<br />

16.7.2 Parameter <strong>der</strong> Host-Ressource-Erweiterungen<br />

Wurden die SNMP-Bibliotheken und <strong>der</strong> Agent mit <strong>der</strong> Unterstützung für die HOST-<br />

RESOURCES-MIB übersetzt, stehen weitere Informationen zur Verfügung.<br />

Unterhalb des Datenbaumes .1.3.6.1.2.1.25, wird diese MIB e<strong>in</strong>gehängt und (unter <strong>der</strong> Voraussetzung,<br />

dass die Werte beschafft werden können) werden die Variablen ausgegeben.<br />

Siehe Tabelle 14.4<br />

Beispielkonfiguration, List<strong>in</strong>g von /etc/ucdsnmpd.conf:<br />

# [A] Access Control<br />

com2sec local localhost public<br />

com2sec mynetwork 172.16.30.0/22 public<br />

com2sec mynetwork 10.0.0.0/8 public<br />

# [B] Second, map the security names <strong>in</strong>to group names:<br />

group MyRWGroup v1 local<br />

group MyRWGroup v2c local<br />

group MyRWGroup usm local<br />

group MyROGroup v1 mynetwork<br />

group MyROGroup v2c mynetwork<br />

group MyROGroup usm mynetwork<br />

# [C] Third, create a view for us to let the groups have rights to:<br />

view all <strong>in</strong>cluded .1<br />

# [D] F<strong>in</strong>ally, grant the 2 groups access to the 1 view with different<br />

# write permissions:<br />

# context sec.model sec.level match read write notif<br />

access MyROGroup "" any noauth exact all none none<br />

access MyRWGroup "" any noauth exact all all none<br />

# [E] System contact <strong>in</strong>formation<br />

syslocation Internet-AG Universitaet Goett<strong>in</strong>gen<br />

syscontact <br />

# [F] Process checks.<br />

proc automount 2 2<br />

proc X 2 1<br />

proc kdm 1 1<br />

proc ypb<strong>in</strong>d 4 1<br />

proc sshd 10 1<br />

proc axnet 1 0<br />

proc rwhod 1 0<br />

proc cron 1 0<br />

proc x<strong>in</strong>etd 1 0<br />

proc chooser 1 0<br />

# [G] Executables/scripts<br />

exec sensors /b<strong>in</strong>/sh /usr/share/snmp/sensors temp1<br />

exec sensors /b<strong>in</strong>/sh /usr/share/snmp/sensors temp2<br />

exec sensors /b<strong>in</strong>/sh /usr/share/snmp/sensors temp3<br />

exec sensors /b<strong>in</strong>/sh /usr/share/snmp/sensors fan1<br />

exec sensors /b<strong>in</strong>/sh /usr/share/snmp/sensors fan2<br />

exec sensors /b<strong>in</strong>/sh /usr/share/snmp/sensors fan3<br />

exec empty /b<strong>in</strong>/echo 252<br />

exec empty /b<strong>in</strong>/echo 253


16.8. MRTG ALS FRONTEND ZUR ANZEIGE VON ZEITREIHEN 241<br />

exec empty /b<strong>in</strong>/echo 254<br />

exec empty /b<strong>in</strong>/echo 255<br />

exec user_activity /b<strong>in</strong>/sh /usr/share/snmp/uabic<br />

# [H] disk checks<br />

disk / 100000<br />

disk /tmp 20000<br />

# [I] load average checks<br />

load 5 4 4<br />

# [J] Extensible sections<br />

exec .1.3.6.1.4.1.2021.51 users /usr/b<strong>in</strong>/who<br />

exec .1.3.6.1.4.1.2021.52 pci_devices /sb<strong>in</strong>/lspci<br />

exec .1.3.6.1.4.1.2021.53 cpu<strong>in</strong>fo /b<strong>in</strong>/cat /proc/cpu<strong>in</strong>fo<br />

16.8 MRTG als Frontend zur Anzeige von Zeitreihen<br />

Der Multi Router Traffic Grapher ist nun e<strong>in</strong>e Anwendung, welche es ermöglicht auf Basis<br />

von SNMP <strong>Netzwerk</strong>geräte zu überwachen. Zur Visualisierung erzeugt MRTG HTML-Code.<br />

In diesen Code werden PNG-Grafiken e<strong>in</strong>gebunden, welche die Belastung e<strong>in</strong>er bestimmten<br />

<strong>E<strong>in</strong></strong>heit (<strong>Netzwerk</strong><strong>in</strong>terface, Zahl <strong>der</strong> Benutzer, Load <strong>der</strong> Masch<strong>in</strong>e) visualisieren. MRTG<br />

erzeugt diese Grafen fortlaufend mit jedem Aufruf des Programms.<br />

Das Tool basiert auf e<strong>in</strong>em Perl-Skript, das das Simple Network Management Protocol<br />

(SNMP) benutzt, um die Daten von den <strong>Netzwerk</strong>komponenten o<strong>der</strong> Endgeräten zu pollen.<br />

<strong>E<strong>in</strong></strong> C-Programm protokolliert die Werte mit, um erzeugt daraus Auslastungsstatistiken und<br />

Auslastunggrafen. In Ergänzung zur <strong>der</strong> detaillierten, täglichen Ansicht, erzeugt MRTG<br />

Grafen, die den Duchsatz <strong>der</strong> letzten sieben Tage, <strong>der</strong> letzten vier Wochen und <strong>der</strong> letzten<br />

zwölf Monate wie<strong>der</strong>geben. Dies ist möglich, da MRTG allen Daten, die es aus dem Router<br />

ausließt, <strong>in</strong> e<strong>in</strong>e Log-Datei schreibt. Für die Beobachtung längerer Zeiträume bietet sich<br />

e<strong>in</strong>e Komb<strong>in</strong>ation mit dem RRD-Tool an. Dieses ist e<strong>in</strong>e spezielle Datenbank, welche ihre<br />

<strong>E<strong>in</strong></strong>träge im Round-Rob<strong>in</strong>-Verfahren speichert.<br />

MRTG speichert die Informationen über die zu üeberwachenden Systeme <strong>in</strong> <strong>der</strong> Datei<br />

mrtg.cfg. In dem MRTG-Paket bef<strong>in</strong>det sich e<strong>in</strong> Perl-Skript, welches das Erzeugen e<strong>in</strong>er<br />

Konfigurationsdatei erheblich vere<strong>in</strong>facht: cfgmaker. Falls man MRTG selbst übersetzt<br />

hat, f<strong>in</strong>det man cfgmaker <strong>in</strong> dem Unterverzeichnis ./run. <strong>E<strong>in</strong></strong> Aufruf zur Erzeugung <strong>der</strong><br />

Konfigurationsdatei könnte so aussehen:<br />

cfgmaker --global ’WorkDir: /www/mrtg’ --output /etc/mrtg.cfg --global \<br />

’Options[_]: bits,growright’ @<br />

List<strong>in</strong>g e<strong>in</strong>er Beispielkonfigurationsdatei mrtg.cfg:<br />

######################################################################<br />

# Multi Router Traffic Grapher -- Sample Configuration File<br />

######################################################################<br />

# This file is for use with mrtg<br />

# Global configuration<br />

WorkDir: /var/www/mrtg<br />

WriteExpires: Yes<br />

Title[^]: Traffic Analysis for


242 KAPITEL 16. NETZWERK ÜBERWACHUNG<br />

# 2048kBit leased l<strong>in</strong>e<br />

# ----------------<br />

#Title[leased]: a 2048kBit leased l<strong>in</strong>e<br />

#PageTop[leased]: Our 2048kBit l<strong>in</strong>k to the rest of the <strong>in</strong>ternet<br />

#Target[leased]: 1:public@router.my.doma<strong>in</strong><br />

#MaxBytes[leased]: 200000<br />

16.9 <strong>E<strong>in</strong></strong>ige abschließende Worte zu SNMP<br />

Während SNMP recht e<strong>in</strong>fach und flexibel e<strong>in</strong>zusetzen ist, hat es jedoch auch e<strong>in</strong>ige Nachteile.<br />

Das Sicherheitsmodell <strong>der</strong> Version 1 und 2 ist schwach. Verwendet man SNMP zum<br />

Setzen von Variablen kann leicht etwas schief gehen, so dass man z.B. den Switchport<br />

abschaltet über den man mit dem <strong>Netzwerk</strong> verbunden ist. Schwierig wird es auch aufkommende<br />

objektorientierte Ansätze, wie die Beschreibung mittels XML <strong>in</strong> SNMP umzusetzen.<br />

SNMP war lange Zeit die Spezialität weniger <strong>Netzwerk</strong>adm<strong>in</strong>istratoren und Programmierer,<br />

so dass das Wissen darüber immer noch nicht sehr weit verbreitet ist. Inzwischen wurde<br />

die erdrückende Vormacht <strong>der</strong> Kommandozeile durch e<strong>in</strong>e Reihe grafischer Erweiterungen<br />

aufgelöst, so dass auch SNMP-Neul<strong>in</strong>gen e<strong>in</strong> zügiger <strong>E<strong>in</strong></strong>stieg gel<strong>in</strong>gen kann.<br />

Trotz <strong>der</strong> genannten Probleme ist SNMP aus Sicht des Autors das beste Protokoll<br />

zur <strong>Netzwerk</strong>überwachung. Es ist universal, bandbreitenschonend und wirklich plattform<br />

unabhängig. Die Hersteller von <strong>Netzwerk</strong>komponenten setzen weiterh<strong>in</strong> auf SNMP, alle<br />

neuen Gerätetypen die herauskommen, wie z.B. Access-Po<strong>in</strong>ts für Wireless LAN, verfügen<br />

über e<strong>in</strong>e entsprechende Schnittstelle. SNMP <strong>in</strong> <strong>der</strong> dritten Version, wie es vor e<strong>in</strong>iger<br />

Zeit spezifiziert wurde, erlaubt bessere Authentifizierungsverfahren und Verschlüsselung <strong>der</strong><br />

Daten. Darüberh<strong>in</strong>aus ist es mittels Modularisierung über Sub-Agenten flexibler geworden.<br />

Die Popularität von L<strong>in</strong>ux und die <strong>in</strong>zwischen mit Net-SNMP und an<strong>der</strong>en frei zur<br />

Verfügung stehenden Implementationen haben ihren Betrag zur Verbreitung von SNMP erbracht.<br />

Alle großen L<strong>in</strong>ux Distributionen enthalten e<strong>in</strong>e ganze Reihe von SNMP Software,<br />

mit <strong>der</strong> sich viele anstehende Probleme bereits lösen lassen. <strong>E<strong>in</strong></strong> attraktives Tool zur Visualisierung<br />

spezieller SNMP-Variablen, wie die Auslastung e<strong>in</strong>es Endgerätes o<strong>der</strong> e<strong>in</strong>zelner<br />

Schnittstellen von <strong>Netzwerk</strong>knoten, wurde mit MRTG bereits vorgestellt. NetSa<strong>in</strong>t, welches<br />

neben an<strong>der</strong>en Überwachungsfunktionen SNMP zum Sammeln <strong>der</strong> Daten e<strong>in</strong>bezieht, soll<br />

im zweiten Teil dieses Artikels besprochen werden.<br />

16.10 Weiterführende Literatur<br />

[1] Homepage des Net-SNMP: http://netsnmp.sourceforge.net<br />

[2] Scotty-SNMP-Bibliothek: http://wwwsnmp.cs.utwente.nl/ schoenw/scotty<br />

[3] MRTG-Homepage: http://www.mrtg.org<br />

[4] Projektbericht zur Überwachung großer <strong>Netzwerk</strong>e an <strong>der</strong> Universität Gött<strong>in</strong>gen -<br />

http://www.stud.uni-goett<strong>in</strong>gen.de/ dsuchod/dgsvgr<br />

[5] Cheops <strong>der</strong> Klassiker: http://www.marko.net/cheops<br />

[6] Cheops Next-Generation: http://cheops-ng.sourceforge.net<br />

[7] MIB-Browser: http://goldplated.atlcartel.com/mbrowse.html<br />

[8] Douglas E. Comer, TCP/IP


16.10. WEITERFÜHRENDE LITERATUR 243<br />

OID Datentyp Beschreibung<br />

Standard-OIDs (MIB-<br />

II)<br />

system.sysDescr text Geräte<strong>in</strong>formation: Hersteller, Name des Modells,<br />

Version <strong>der</strong> SOftware o.ä.<br />

system.sysLocation text Aufstellungsort des Gerätes<br />

system.sysUpTime <strong>in</strong>t Millisekunden seit dem Start des Agenten<br />

system.syscontact text Kontakt zum Adm<strong>in</strong> des Gerätes<br />

system.sysName text Name <strong>der</strong> Masch<strong>in</strong>e; üblicherweise <strong>der</strong> DNS-<br />

Name<br />

<strong>in</strong>terfaces.ifNumber <strong>in</strong>t Zahl <strong>der</strong> vorhandenen <strong>Netzwerk</strong>schnittstellen<br />

<strong>in</strong>terfaces.ifTable table Array <strong>der</strong> verschiedenen Infos pro Schnittstelle<br />

(Name, Typ, Geschw<strong>in</strong>digkeit, MTU)<br />

at.atTable table ARP-Tabelle<br />

ip.ipforward<strong>in</strong>g <strong>in</strong>t Bei Geräten mit mehreren Interfaces: 1, falls<br />

IP-Forward<strong>in</strong>g stattf<strong>in</strong>det, sonst 2<br />

ip.ipAddrTable table IP-Informationen <strong>der</strong> versch. Interfaces<br />

(Broadcast-, Routeradressen, Netzmasken und<br />

Metrik)<br />

icmp.* <strong>in</strong>t <strong>E<strong>in</strong></strong>e Menge von ICMP-Statistiken<br />

tcp.tcpConnTable table Liste <strong>der</strong> bestehenden TCP-Verb<strong>in</strong>dungen mit<br />

Status<br />

udp.udpTable table Liste <strong>der</strong> offenen UDP-Sockets<br />

snmp.* <strong>in</strong>t <strong>E<strong>in</strong></strong>e Menge von SNMP-Statistiken<br />

OIDs <strong>der</strong> UCD-SNMP-<br />

MIB<br />

prTable.* table Tabelle <strong>der</strong> auf m<strong>in</strong>imal und maximal laufende<br />

Instanzen zu überwachende Prozesse<br />

memory.memTotalReal <strong>in</strong>t Menge des zur Verfügung stehenden Arbeitsspeichers<br />

extTable.* table Ausbaubare Spezial-MIB zur Ausführung von<br />

Programmen und Skripten<br />

laTable.* <strong>in</strong>t Load Average Werte (1, 5, 15 M<strong>in</strong>uten Intervall)<br />

systemStats.* <strong>in</strong>t <strong>E<strong>in</strong></strong>e Menge systemspezifischer Variablen und<br />

Maximalwerte<br />

ucdExperimental.* <strong>E<strong>in</strong></strong>trag für die später beschriebene eigene<br />

MIB-Erweiterung<br />

Tabelle 16.2: Beispieldaten (OIDs) <strong>der</strong> Standard-MIBs


244 KAPITEL 16. NETZWERK ÜBERWACHUNG<br />

Kommando Bedeutung<br />

get-request Ermittele den Wert e<strong>in</strong>er bestimmten Variablen<br />

get-next- Ermittele den Wert <strong>der</strong> nächsten Variablen ohne<br />

request ihren genauen Namen zu kennen<br />

get-bulk- Ermittele e<strong>in</strong>en Block von Variablen (z.B. Tarequestbellen)<br />

response Anwort auf o.g. Requests<br />

set-request Speichere e<strong>in</strong>en bestimmten Wert <strong>in</strong> e<strong>in</strong>e Variable<br />

<strong>in</strong>form-request Referenz zu weiteren z.B. Proxy-Daten<br />

trap Antwort, ausgelöst durch e<strong>in</strong>en Event-Trigger<br />

Tabelle 16.3: Das SNMP-Kommando-Set<br />

OID Bedeutung<br />

hrSystem Zahl <strong>der</strong> laufenden Prozesse und angemeldeten Benutzer<br />

hrStorage Speicher <strong>der</strong> verschiedensten Form, wie Real Memory,<br />

Swap, Memory Buffers<br />

hrDevice Liste verfügbarer Geräte, wie Drucker, Prozessor,<br />

Ma<strong>in</strong>boardchipset<br />

hrSWRun Liste <strong>der</strong> laufenden Prozesse (wie ”ps”)<br />

hrSWRunPerf CPU-Verbrauch <strong>der</strong> laufenden Prozesse<br />

hrSWInstalled Liste <strong>der</strong> <strong>in</strong>stallierten RPM-Pakete (setzt e<strong>in</strong> System<br />

auf Basis des Redhat-Package-Managers voraus)<br />

mit Installationsdatum<br />

Tabelle 16.4: Variablen <strong>der</strong> Host-MIB


Kapitel 17<br />

Systemsicherheit<br />

17.1 Generelle Überlegungen<br />

Sichere Rechner bzw. Betriebssysteme kann es nicht geben. Diese werden von Menschen<br />

geschaffen und die Ideen zur Sicherheit werden meistens durch Bequemlichkeit, Unaufmerksamkeit<br />

o<strong>der</strong> Schlampigkeit wie<strong>der</strong> ausgehebelt. Weiterh<strong>in</strong> möchte ke<strong>in</strong> Adm<strong>in</strong>istrator Tag<br />

und Nacht vor e<strong>in</strong>er Masch<strong>in</strong>e hocken und nachsehen, was die Benutzer, Services (Dienstprogramme)<br />

und die verschiedenen Prozesse so treiben.<br />

Generell gibt es zwei Sicherheitsbereiche, die man unterscheiden kann: Die (physikalische)<br />

Sicherheit <strong>der</strong> Masch<strong>in</strong>e selbst und Angriffsmöglichkeiten aus dem <strong>Netzwerk</strong> bzw.<br />

Internet.<br />

<strong>E<strong>in</strong></strong>e weitere Möglichkeit sich aktiv gegen Angreifer aus dem Netz zu schützen und auch<br />

nur bestimmte Kanäle aus dem eigenen Netz zuzulassen, ist das Aufsetzen e<strong>in</strong>er Firewall<br />

(“Schutzwand”); vgl. Kap.19.1<br />

17.2 Sicherheit auf dem Rechner<br />

17.2.1 <strong>E<strong>in</strong></strong>leitung<br />

<strong>E<strong>in</strong></strong> Angriff e<strong>in</strong>es Hackers war bereits im ersten Schritt erfolgreich, wenn er sich unerlaubt<br />

als ganz normaler Benutzer Zugriff auf e<strong>in</strong>er Masch<strong>in</strong>e verschaffen konnte. Dann s<strong>in</strong>d se<strong>in</strong>e<br />

Rechte schon weit höher als wenn er noch von “aussen” versuchen muss, auf das Gerät<br />

e<strong>in</strong>zudr<strong>in</strong>gen.<br />

Deshalb sollte es immer Politik bei <strong>der</strong> Vergabe von Dateirechten geben, normalen Systembenutzern<br />

immer gerade soviele Rechte e<strong>in</strong>zuräumen, wie sie zum Arbeiten benötigen.<br />

Deshalb laufen <strong>in</strong>zwischen auch viele Dienste, wie z.B. <strong>der</strong> Nameserver B<strong>in</strong>d (Daemon: named)<br />

o<strong>der</strong> <strong>der</strong> X-Displaymanager gdm unter e<strong>in</strong>er eigenen BenutzerID und nicht mehr<br />

mit Rootrechten. So bedeutet e<strong>in</strong> erfolgreicher <strong>E<strong>in</strong></strong>bruch <strong>in</strong> diese Dienste noch nicht e<strong>in</strong>e<br />

automatische “ Übernahme” <strong>der</strong> Masch<strong>in</strong>e.<br />

17.2.2 Passwörter<br />

Das Passwort sollte nicht trivial se<strong>in</strong>! Worte, die <strong>in</strong> e<strong>in</strong>em Lexikon zu f<strong>in</strong>den s<strong>in</strong>d, haben<br />

als Passwort ke<strong>in</strong>en Wert. Knackprogramme benutzen genau solche Lexika, um bekannte<br />

Worte vorwärts, rückwärts und <strong>in</strong> Komb<strong>in</strong>ationen durchzuprobieren.<br />

Der <strong>E<strong>in</strong></strong>wand “man habe ke<strong>in</strong>e schützenswerte Daten <strong>in</strong> se<strong>in</strong>em Account und müsse<br />

darum nicht so viel Aufwand treiben” ist vor<strong>der</strong>gründig verständlich, aber dennoch nicht<br />

richtig. In e<strong>in</strong>em Beispiel versteht man es besser: Möglicherweise hat e<strong>in</strong> Mieter <strong>in</strong> e<strong>in</strong>em<br />

245


246 KAPITEL 17. SYSTEMSICHERHEIT<br />

Mietshaus tatsächlich ke<strong>in</strong>e Wertgegenstände, die ihm schützenswert ersche<strong>in</strong>en, doch es<br />

ist nicht akzeptabel, dass er darum die Haustüre offen stehen läßt und damit das Eigentum<br />

<strong>der</strong> Mitbewohner gefährdet. Obendre<strong>in</strong>, wenn die Bude abbrennt, wird auch dieser Mieter<br />

gewahr, dass das Gebäude, se<strong>in</strong> Dach über dem Kopf, doch e<strong>in</strong> schützenswertes Objekt<br />

darstellt. Um im Bild zu bleiben, auch die Weitergabe von Schlüsseln (Passwörtern) an<br />

Dritte ist <strong>in</strong> diesem Rahmen nicht akzeptabel! Deshalb genügt es auch nicht, wenn das<br />

Rootpasswort beson<strong>der</strong>s sicher ist. Bereits mit den Rechten e<strong>in</strong>es normalen Benutzers hat<br />

man mehr Möglichkeiten des <strong>E<strong>in</strong></strong>bruchs als mit gar ke<strong>in</strong>em Account auf e<strong>in</strong>er Masch<strong>in</strong>e.<br />

Die Konfiguration zur Passwortsicherheit (Gültigkeitsdauer von User-Passwörtern, Fehlversuche<br />

beim Log<strong>in</strong>, Länge des Passwortes) werden <strong>in</strong> <strong>der</strong> Datei /etc/log<strong>in</strong>.defs e<strong>in</strong>gestellt.<br />

17.2.3 Der Adm<strong>in</strong>-Account<br />

Den Account des Adm<strong>in</strong>istrators “root” nur so lange verwenden, wie unbed<strong>in</strong>gt notwendig,<br />

z.B. für die Installation von Software, die allen Benutzern zur Verfügung gestellt werden soll.<br />

Ke<strong>in</strong>esfalls als “root” die tägliche Arbeit machen. Dafür existieren die gewöhnlichen Benutzeraccounts,<br />

<strong>der</strong>en Rechte für die Standardaufgabenstellungen ausreichen. Adm<strong>in</strong>istrative<br />

Aufgaben sollten niemals müde o<strong>der</strong> <strong>in</strong> Eile ausgeführt werden, da mit “root”-Rechten<br />

leicht irreversible Schäden angerichet werden können.<br />

17.2.4 /etc/passwd und /etc/shadow<br />

<strong>E<strong>in</strong></strong> System sollte das Passwort <strong>der</strong> Benutzer unbed<strong>in</strong>gt nicht <strong>in</strong> /etc/passwd speichern! Die<br />

Datei /etc/passwd ist für die Welt lesbar und muss es auch se<strong>in</strong>, damit <strong>der</strong> e<strong>in</strong>e o<strong>der</strong> an<strong>der</strong>e<br />

Dienst funktioniert. Das Problem dabei ist, dass somit je<strong>der</strong> mit e<strong>in</strong>em Cracker bewaffnet<br />

auf Passwortsuche gehen kann, solange die Passwörter <strong>in</strong> dieser Datei stehen. Es leuchtet<br />

e<strong>in</strong>, dass e<strong>in</strong> Passwort, das <strong>in</strong> e<strong>in</strong>er Datei steht, die nur “root” lesen kann, diese H<strong>in</strong>tertüre<br />

schließt. Also: Shadow-Passwort (<strong>in</strong> /etc/shadow) benutzen!<br />

17.2.5 Locken o<strong>der</strong> ausloggen<br />

Aus demselben Grund wie zuvor, ist beim Verlassen e<strong>in</strong>er Masch<strong>in</strong>e darauf zu achten, dass<br />

man bei allen Konsolen ausgeloggt ist o<strong>der</strong> diese gelockt hat. Arbeiten mehrere Leute an<br />

<strong>der</strong> Konsole, dann sollte man so nett se<strong>in</strong> und die Sitzung beenden (und nicht nur den<br />

Bildschirm sperren).<br />

17.2.6 Setuid und Verzeichnisse<br />

Es ist darauf zu achten, dass normale Benutzer <strong>in</strong> System-Verzeichnissen wie /etc, /b<strong>in</strong>,<br />

/usr/b<strong>in</strong>, /sb<strong>in</strong> usw. ke<strong>in</strong>e Schreibberechtigung besitzen. Sollten sie es doch haben, so<br />

können sie dort e<strong>in</strong> Programm unterbr<strong>in</strong>gen (z.B. Verschreiber zu ls o<strong>der</strong> cd (ls-al ld la ks xs<br />

vf ...)). Das Programm wartet, bis es e<strong>in</strong>mal ausversehen von “root” aufgerufen wird ... und<br />

Voila! Es wird e<strong>in</strong> Programm z.B. mit dem Namen ga<strong>in</strong>r nach /tmp, /var/tmp o<strong>der</strong> sonst<br />

wo h<strong>in</strong> geschrieben, das nichts an<strong>der</strong>es als e<strong>in</strong>e Shell mit setuid ROOT ist. Ruft man dann<br />

als normaler Benutzer ga<strong>in</strong>r auf, so ist man plötzlich “root” - ganz ohne Passwort. Erste<br />

Konsequenz: <strong>E<strong>in</strong></strong> normaler Benutzer soll NUR Zugriff auf se<strong>in</strong> Home-Verzeichnis und auf<br />

/tmp haben! Zweite Konsequenz: Die Variable PATH des Benutzers “root” muss restriktiv<br />

gehalten werden. Das aktuelle Arbeitsverzeichnis hat im PATH von “root” nichts verloren!<br />

Dritte Konsequenz: Die Liste <strong>der</strong> “setuid root” (-rwsr-xr-x) Programme regelmäßig mit <strong>der</strong><br />

Frage nach Wachstum kontrollieren.


17.3. LITERATUR 247<br />

17.2.7 Setuid und Mount<strong>in</strong>g<br />

Mit dem Mounten ist es genauso, nur noch e<strong>in</strong>facher für den Hacker. <strong>E<strong>in</strong></strong> wechselbares<br />

Medium darf nie und nimmer setuid-fähig se<strong>in</strong>! Ansonsten stellt sich <strong>der</strong> Hacker zuhause<br />

e<strong>in</strong> Medium her mit e<strong>in</strong>er Shell, die “root” gehört und das setuid-bit gesetzt hat (vergl.<br />

ga<strong>in</strong>r. Dieses mountet er im Zielsystem (o<strong>der</strong> läßt es vom Adm<strong>in</strong> mounten...) und ...Voila!<br />

<strong>E<strong>in</strong></strong>fach aufrufen und fertig!<br />

Das Mountkommando kann aus Sicherheitsgründen nur vom Superuser aufgerufen werden.<br />

Sollen normale User dazu <strong>in</strong> die Lage versetzt werden, ist die /etc/fstab bzw. die<br />

Konfiguration des Automounters anzupassen. Dann sollte man darauf achten, dass für diese<br />

Bereiche ke<strong>in</strong>e Ausführungsrechte für Programme gesetzt werden (Option: noexec).<br />

17.2.8 Browser, CGI / Java-Applet und B<strong>in</strong>aries, per Mail<br />

Grundsätzlich s<strong>in</strong>d alle Programme, die über e<strong>in</strong>en grauen Kanal von außen kommen, als<br />

hoch gefährlich e<strong>in</strong>zustufen. <strong>E<strong>in</strong></strong> B<strong>in</strong>ary, das per Mail kommt und zur Ausführung gebracht<br />

wird, kann alles enthalten, wovor sich <strong>der</strong> Adm<strong>in</strong> <strong>in</strong> schlimmsten Fieberträumen fürchtet.<br />

Auch e<strong>in</strong> Java-skript kann im Pr<strong>in</strong>zip tun was es will, auch die Datensicherheit korrumpieren.<br />

<strong>E<strong>in</strong></strong> e<strong>in</strong>faches CGI-Skript e<strong>in</strong>er Suchmasch<strong>in</strong>e ist e<strong>in</strong> echtes Risiko. Wie <strong>in</strong> <strong>der</strong> CT 4’98<br />

beschrieben, reicht es aus, e<strong>in</strong> Semikolon gefolgt von e<strong>in</strong>em subversiven Befehl als Suchbegriff<br />

e<strong>in</strong>zugeben und schon steht da anstelle e<strong>in</strong>es grep-Parameters e<strong>in</strong> falsch abgesetzter<br />

grep-Befehl gefolgt von e<strong>in</strong>em Befehl frei nach Hackers Wahl. Auf Grund <strong>der</strong> Vielzahl von<br />

Schwachstellen und Programmierfehlern sollten Web-Browser an sich für den User “root”<br />

tabu se<strong>in</strong> und nur unter <strong>der</strong> ID normaler User ausgeführt werden!!<br />

17.2.9 Physikalischer Zugriff<br />

Derjenige, <strong>der</strong> physikalischen Zugriff zu e<strong>in</strong>er Masch<strong>in</strong>e hat, ist eigentlich auch schon “root”!<br />

Das liegt daran, dass die Konsole zugreifbar ist. Um es nicht ganz so e<strong>in</strong>fach zu machen,<br />

sollten bootfähige und wechselbare Laufwerke (z.B. floppy) von <strong>der</strong> Boot-Fähigkeit abgehalten<br />

werden. Der Durchschnitts-Hacker braucht aber diese Laufwerke ohneh<strong>in</strong> nicht. Dieser<br />

ist mit e<strong>in</strong>er Reset-Taste o<strong>der</strong> e<strong>in</strong>em Netzstecker, sowie e<strong>in</strong>er Konsole vollkommen zufrieden.<br />

Der lilo ohne Passwortschutz erlaubt e<strong>in</strong>fachste Angriffe! Abhilfe: Die Masch<strong>in</strong>e unter<br />

Verschluss halten. Ke<strong>in</strong>er Masch<strong>in</strong>e, die nicht unter Verschluss ist o<strong>der</strong> mit dem Internet<br />

verbunden ist, kann man vertrauen.<br />

17.3 Literatur<br />

<strong>E<strong>in</strong></strong>schlägige Mail<strong>in</strong>g-Listen abonnieren und Webseiten untersuchen<br />

http://<strong>in</strong>ternet-security.de<br />

http://www.cert.org/<br />

http://www.ers.ibm.com/<br />

http://www.ccc.de/<br />

THE DENIAL OF SERVICE PAGE L<strong>in</strong>ux-Mail<strong>in</strong>glisten<br />

http://www.diabolo666.com/tools/Tutorial.htm<br />

Monografien gibt es <strong>in</strong>zwischen auch e<strong>in</strong>ige zum Thema ... z.B.:<br />

Simson Garf<strong>in</strong>kel, Gene Spafford, Practical <strong>Unix</strong> and Internet Security 2.Edition, O’Reilly,<br />

2000, ISBN 1-56592-148-8


248 KAPITEL 17. SYSTEMSICHERHEIT<br />

17.4 Sicherheit im <strong>Netzwerk</strong><br />

17.4.1 <strong>E<strong>in</strong></strong>leitung<br />

Die erste Hürde, die sich Angreifern stellt, ist üblicherweise <strong>der</strong> lokale Zugang auf e<strong>in</strong><br />

System. Dazu benötigen sie meistens e<strong>in</strong>e gültige UserID mit Passwort bzw. den Zugriff<br />

über e<strong>in</strong>en auf <strong>der</strong> Masch<strong>in</strong>e verfügbaren <strong>Netzwerk</strong>dienst, wie den Web-, NFS-, Nameserver<br />

etc. Dieser Zugriff kann durch das ablauschen von Verb<strong>in</strong>dungen, wie z.B. ”telnet”, ”ftp”,<br />

”pop3”, ... Anfragen erfolgen, die ke<strong>in</strong>e verschlüsselten Passwörter verwenden. Die an<strong>der</strong>e<br />

Möglichkeit ist die Ausnutzung von Sicherheitslücken <strong>in</strong> verfügbaren Diensten.<br />

Deshalb sollten beim Aufsetzen e<strong>in</strong>es Servers immer überlegt werden, welche Dienste<br />

überhaupt notwendig s<strong>in</strong>d und aus welchem Bereich <strong>der</strong> Zugriff erfolgen können soll. So<br />

wird z.B. <strong>der</strong> Webserver weltweit erreichbar se<strong>in</strong>, das Log<strong>in</strong>, NFS, bzw. Samba für den Zugriff<br />

<strong>der</strong> Webadm<strong>in</strong>istratoren meistens jedoch nur aus e<strong>in</strong>em beschränkten <strong>Netzwerk</strong>bereich<br />

erfor<strong>der</strong>lich se<strong>in</strong>.<br />

17.4.2 Gesicherte Verb<strong>in</strong>dungen<br />

Das Internet-Protokoll IP und die Transportprotokolle UDP und TCP br<strong>in</strong>gen ke<strong>in</strong>erlei<br />

Sicherheit mit. Die Pakete können auf dem Transportweg verfälscht und <strong>der</strong> Inhalt leicht<br />

abgelauscht werden. Hiergegen s<strong>in</strong>d Vorkehrungen zu treffen, die an verschiedenen Stellen<br />

<strong>der</strong> Verb<strong>in</strong>dung ansetzen können:<br />

Host 1 Sicherung Host2<br />

Anwendung S-HTTP, PGP, eCASH Anwendung<br />

Transport SOCKS, SSL Transport<br />

<strong>Netzwerk</strong> IPSec <strong>Netzwerk</strong><br />

Datensicherung PAP, CHAP, PPTP Datensicherung<br />

Tabelle 17.1: Verschiedener Ansatz von Absicherung<br />

Bekannt s<strong>in</strong>d <strong>in</strong>zwischen sicherlich die Kryptosoftware zum Mailversand, PGP und <strong>der</strong><br />

Telnetersatz SSH. Diese setzen an <strong>der</strong> Anwendungsschicht an. Die Absicherung <strong>der</strong> Transportschicht<br />

kann durch SSL (Secure Sockets Layer) erfolgen, was von verschlüsselten HTTP-<br />

Verb<strong>in</strong>dungen bekannt se<strong>in</strong> sollte. IPSec setzt an <strong>der</strong> <strong>Netzwerk</strong>schicht an und soll zum e<strong>in</strong>en<br />

die Herkunft <strong>der</strong> Pakete sicherstellen und zum An<strong>der</strong>en das Mitlesen <strong>der</strong> Daten verh<strong>in</strong><strong>der</strong>n<br />

und diese vor unerkannter Manipulation schützen. Ausführliche Erläuterungen zu IPsec<br />

erfolgen im nächsten Kapitel.<br />

17.4.3 ssh und scp<br />

Es ist immer damit zu rechnen, dass irgendwo h<strong>in</strong>ter den nächsten beiden Ecken e<strong>in</strong> Hacker<br />

se<strong>in</strong> Laptop genau <strong>in</strong> das Netz-Segment e<strong>in</strong>gekl<strong>in</strong>kt hat, <strong>in</strong> dem man sich bef<strong>in</strong>det. Die<br />

Folge davon ist, dass alles, was man Klartext über das Netz schickt o<strong>der</strong> was man geschickt<br />

bekommt, mitgelesen werden kann. Das betrifft TCP genau so wie UDP! Der Hacker muss<br />

also nur warten, bis sich irgend e<strong>in</strong> Benutzer auf e<strong>in</strong>er an<strong>der</strong>en Masch<strong>in</strong>e e<strong>in</strong>loggt (telnet,<br />

p<strong>in</strong>e, ftp ...) und dann genau die folgenden Pakete dieser beiden Masch<strong>in</strong>en mitprotokollieren.<br />

In <strong>der</strong> Folge erhält er e<strong>in</strong>en Account-Namen und e<strong>in</strong> Passwort, das dazu paßt. ...<br />

Abhilfe schafft man hier durch Verwendung <strong>der</strong> ssh (SecureShell) und SecureCopy scp zum<br />

Kopieren von Dateien über Rechnergrenzen h<strong>in</strong>weg. Damit baut man e<strong>in</strong>en verschlüsselten


17.4. SICHERHEIT IM NETZWERK 249<br />

Kanal zwischen zwei Rechnern auf:<br />

dsuchod@s14:~ > ssh dirk@s1.goe.net<br />

dsuchod@s14:~ > ssh -l dirk s1.goe.net<br />

dsuchod@s14:~ > ssh -l dirk s1.goe.net Netscape<br />

Auch wenn man dann X-Anwendungen startet, benutzen diese den verschlüsselten Kanal<br />

(Hier spart man sich sogar gegenüber telnet das Setzen <strong>der</strong> DISPLAY-Variablen).<br />

Das Setzen von Umgebungsvariablen wird im Abschnitt zur Shell erörtert. Im letzten <strong>der</strong><br />

Beispiele, die oben gezeigt wurden, hat man sich nicht mehr auf <strong>der</strong> Masch<strong>in</strong>e e<strong>in</strong>geloggt,<br />

son<strong>der</strong>n nur noch e<strong>in</strong> Kommando abgesetzt, welches remote ausgeführt wird.<br />

Möchte man sich regelmässig auf verschiedenen Rechnern e<strong>in</strong>loggen und nicht jedesmal<br />

se<strong>in</strong> Passwort für diese Verb<strong>in</strong>dung angeben, kann man e<strong>in</strong>en Schlüssel auf dem entsprechenden<br />

Rechner generieren und den Public-Teil <strong>in</strong> <strong>der</strong> Datei:<br />

/.ssh/authorized keys (im Homeverzeichnis unterhalb des versteckten Verzechnisses .ssh)<br />

speichern.<br />

dsuchod@s14:~ > ssh-keygen -t dsa<br />

Mit dem Tool ssh-agent kann man sich das Leben noch erleichtern: Dieser fragt zu<br />

beg<strong>in</strong> e<strong>in</strong>er Sitzung die Passphrase für die gesammelten Schlüssel ab und authentifiziert<br />

jede bereits e<strong>in</strong>mal aufgebaute Verb<strong>in</strong>dung automatisch ohne weitere Nachfrage.<br />

17.4.4 Der Intenet-”Super”-Daemon (x)<strong>in</strong>etd<br />

Viele Dienste, die nicht sehr häufig nachgefragt werden, wie z.B. ”telnet”, ”talk” und ”ftp”<br />

müssen nicht permanent im H<strong>in</strong>tergrund laufen und die CPU, sowie den Arbeitsspeicher<br />

belasten. Sie werden auf Anfor<strong>der</strong>ung durch den (x)<strong>in</strong>etd gestartet und nach Beendigung<br />

<strong>der</strong> Verb<strong>in</strong>dung wie<strong>der</strong> geschlossen.<br />

Der x<strong>in</strong>etd stellt die weiterentwickelte Form des <strong>in</strong>etd dar und kann die oben genannte<br />

For<strong>der</strong>ung nach <strong>der</strong> Beschränkung des Zugriffs von sich aus erfüllen. In <strong>der</strong> Konfigurationsdatei<br />

des Dienstes <strong>der</strong> /etc/x<strong>in</strong>etd.conf können Bereiche angegeben werden, von denen <strong>der</strong><br />

Zugriff auf e<strong>in</strong>en bestimmten Dienst erlaubt wird:<br />

service ftp<br />

{<br />

socket_type = stream<br />

protocol = tcp<br />

wait = no<br />

user = root<br />

server = /usr/sb<strong>in</strong>/proftpd<br />

server_args = -p 0<br />

only_from = 172.16.0.0/16<br />

}<br />

Der <strong>in</strong>etd benötigt hierzu noch den TCP-Wrapper tcpd, welcher über die Dateien<br />

/etc/hosts.deny und /etc/hosts.allow gesteuert wird.<br />

Generell gilt natürlich, dass alle Dienste, die nicht benötigt werden, auf jeden Fall deaktiviert<br />

werden sollten. Gerade diese bergen häufig die Gefahr, dass (weil man nicht an sie<br />

denkt) hierüber <strong>der</strong> erfolgreiche Angriff stattf<strong>in</strong>det.


250 KAPITEL 17. SYSTEMSICHERHEIT<br />

17.4.5 xhost + und das unsichtbare Fenster<br />

Mit ”xhost +” serviert man potentiellen <strong>E<strong>in</strong></strong>brechern die gewünschten Informationen auf<br />

e<strong>in</strong>em goldenen Tablett! Das e<strong>in</strong>zige, was <strong>der</strong> Hacker zu tun hat, ist e<strong>in</strong> unsichtbares Fenster<br />

auf dem Bildschirm zu platzieren. Dieses bekommt natürlich, weil es zu oberst liegt, alle<br />

Informationen von Maus und Keyboard exklusiv. Je nach Gutdünken des Hackers werden<br />

diese Informationen an die Fenster, an die sie eigentlich gerichtet s<strong>in</strong>d, weitergeleitet o<strong>der</strong><br />

eben auch nicht. Der Hacker kann alles mitprotokollieren o<strong>der</strong> das keyboard/maus toten<br />

Mann spielen lassen o<strong>der</strong> alles an<strong>der</strong>e, was das Herz begehrt, mit dem Bildschirm anstellen.<br />

<strong>E<strong>in</strong></strong> Log<strong>in</strong>-Bildschirm über Nacht auf’s Display gezaubert, br<strong>in</strong>gt am nächsten Morgen e<strong>in</strong><br />

sicheres Passwort.<br />

17.4.6 .rhosts<br />

Es ist grundsätzlich abzulehnen, den eigenen Account gegenüber e<strong>in</strong>em Benutzer zu öffnen,<br />

<strong>der</strong> behauptet, sich auf e<strong>in</strong>er Masch<strong>in</strong>e zu bef<strong>in</strong>den, die ihrerseits behauptet, e<strong>in</strong>en<br />

bestimmten Namen zu tragen. Man sieht schon jetzt wie fragil das Konstrukt ist... Je<strong>der</strong><br />

kann irgendetwas behaupten, aber darum ist demjenigen noch ke<strong>in</strong> Account zu öffnen.<br />

Das Konzept <strong>der</strong> R-Tools (Steuerung über die .rhosts im eigenen Homeverzeichnis) wie<br />

sie e<strong>in</strong>mal von Sun e<strong>in</strong>geführt wurden, ist <strong>in</strong> <strong>der</strong> heutigen Zeit obsolet geworden. Dazu gibt<br />

es SecureShell und -Copy und den SSH-Agent, wenn man vermeiden will, bei jedem Log<strong>in</strong><br />

auf e<strong>in</strong>er an<strong>der</strong>en Masch<strong>in</strong>e immer wie<strong>der</strong> e<strong>in</strong> Passwort e<strong>in</strong>geben zu müssen.<br />

17.4.7 Überprüfung <strong>der</strong> <strong>Netzwerk</strong>sicherheit eigener und an<strong>der</strong>er Rechner<br />

Es gibt <strong>in</strong>zwischen e<strong>in</strong>e ganze Reihe von Programmen, mit denen sich <strong>der</strong> <strong>Netzwerk</strong>verkehr<br />

überwachen und überprüfen lässt. Dieses s<strong>in</strong>d zum e<strong>in</strong>en die Tools zum ”Mitlauschen”<br />

des Datenverkehrs tcpdump, ntop und ethereal. Gerade das letzte Tool ist beson<strong>der</strong>s<br />

zu empfehlen, da es über e<strong>in</strong> komfortables grafisches Frontend, gute Packetviewer und<br />

Filterfunktionen verfügt. ntop ist e<strong>in</strong> textbasiertes <strong>in</strong>teraktives Programm, welches aktuelle<br />

Verb<strong>in</strong>dungen und die dabei umgesetzten Datenmengen nach Verb<strong>in</strong>dung und Protokollart<br />

aufzeigt. tcpdump arbeitet an <strong>der</strong> Kommandozeile und schneidet Pakete mit, welche an<br />

<strong>der</strong> <strong>Netzwerk</strong>schnittstelle angenommen werden. Bei allen Tools lassen sich auch Nicht-IP-<br />

Protokolle registrieren.<br />

Die Untersuchung auf bestimmte Dienste, d.h. offene Ports von Rechnern o<strong>der</strong> <strong>in</strong> <strong>Netzwerk</strong>en,<br />

lässt sich mit dem Portsniffer nmap bewerkstelligen.<br />

nmap -O 172.16.0.0/16 Feststellen des Betriebssystems im<br />

Class-B-Subnetz<br />

nmap -sP 172.16.1.0/24 P<strong>in</strong>g-Scan (Erreichbarkeit von Rechnern<br />

Class-C-Subnetz<br />

nmap -sT 172.16.1.1 Scan auf offene TCP-Ports <strong>der</strong> Masch<strong>in</strong>e<br />

mit <strong>der</strong> IP 172.16.1.1<br />

nmap -sU www.goe.net Scan auf offene UDP-Ports <strong>der</strong> Masch<strong>in</strong>e<br />

mit dem FQDN www.goe.net<br />

Tabelle 17.2: NMAP im <strong>E<strong>in</strong></strong>satz


17.5. AUFGABEN 251<br />

17.4.8 Firewall<br />

Inzwischen gibt es drei Firewallimplementationen für den L<strong>in</strong>uxkernel: Das ipfwadm führte<br />

diese Funktionalität <strong>in</strong> den 2.0.er Kernel als e<strong>in</strong> wichtiges neues Feature e<strong>in</strong>. Die Firewall<strong>in</strong>gfähigkeit<br />

wurde mit ipcha<strong>in</strong>s im Kernel <strong>der</strong> 2.2.er Serie stark verbessert und wird<br />

deshalb <strong>in</strong> e<strong>in</strong>em eigenen Kapitel beschrieben. Der Kernel 2.4 br<strong>in</strong>gt e<strong>in</strong>e weiter verbesserte<br />

Firewall mit netfilter mit sich, ist aber abwärtskompatibel über Kernelmodule zu<br />

ipfwadm und ipcha<strong>in</strong>s.<br />

17.5 Aufgaben<br />

17.5.1 Secure Shell<br />

1. Wie sieht das Kommando aus, wenn man sich auf e<strong>in</strong>e entferne Masch<strong>in</strong>e (Remote-<br />

Log<strong>in</strong>) mit dem Rechnernamen test.doma<strong>in</strong>.local verb<strong>in</strong>den will und man die Benutzer-<br />

ID ”userid” auf <strong>der</strong> entfernten Masch<strong>in</strong>e verwenden will und unter e<strong>in</strong>er an<strong>der</strong>en ID<br />

auf <strong>der</strong> Ausgangsmasch<strong>in</strong>e angemeldet ist?<br />

2. Wie könnte <strong>der</strong> SCP-Kopierbefehl aussehen, wenn e<strong>in</strong>e Datei namens unterlagen.txt<br />

vom Rechner test.doma<strong>in</strong>.local unter <strong>der</strong> UserID ”root” <strong>in</strong> das lokale Verzeichnis auf<br />

dem eigenen Rechner kopiert werden soll?<br />

3. Welches Problem liegt vor, wenn ich folgende Meldung zu sehen bekomme?<br />

user@l<strong>in</strong>ux:~/SharedFiles/kurs/klausur> ssh 10.30.4.44<br />

8014: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<br />

8014: @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @<br />

8014: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<br />

8014: IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!<br />

8014: Someone could be eavesdropp<strong>in</strong>g on you right now (man-<strong>in</strong>-the-middle attack)!<br />

8014: It is also possible that the RSA host key has just been changed.<br />

8014: The f<strong>in</strong>gerpr<strong>in</strong>t for the RSA key sent by the remote host is<br />

53:8c:4b:13:f6:df:2e:d1:e5:cf:21:12:a4:c2:ea:c5.<br />

8014: Please contact your system adm<strong>in</strong>istrator.<br />

8014: Add correct host key <strong>in</strong> /home/user/.ssh/known_hosts to get rid of this message.<br />

8014: Offend<strong>in</strong>g key <strong>in</strong> /home/user/.ssh/known_hosts:11<br />

8014: RSA host key for 10.30.4.44 has changed and you have requested strict check<strong>in</strong>g.<br />

8014: Host key verification failed.<br />

4. Wie kann ich mich auf an<strong>der</strong>en Masch<strong>in</strong>en per SSH unter Vermeidung <strong>der</strong> <strong>E<strong>in</strong></strong>gabe<br />

e<strong>in</strong>es Passwortes anmelden? Wann benötigt man dieses?<br />

5. Wie tunnele ich e<strong>in</strong>e POP3-Verb<strong>in</strong>dung (Port 143) von me<strong>in</strong>er Masch<strong>in</strong>e (z.B. mymach<strong>in</strong>e.dyndns.org)<br />

auf den POP3-Server (z.B. pop3.mydoma<strong>in</strong>.local), wo ich über<br />

e<strong>in</strong>en SSH-Zugang verfüge?


252 KAPITEL 17. SYSTEMSICHERHEIT


Kapitel 18<br />

Sicheres IP<br />

18.1 Sicherheitsprobleme des <strong>der</strong>zeitigen IP-Standards<br />

18.1.1 Intro<br />

Die Idee und erste Implementationen des Internet Protokolls gehen auf die Anfänge <strong>der</strong><br />

70er Jahre zurück. Sicherheitserwägungen spielten bei <strong>der</strong> Entwicklung des IP zu beg<strong>in</strong><br />

nur e<strong>in</strong>e nachrangige Rolle bzw. wurde bewußt auf höhere Protokollschichten verlagert.<br />

Die Datenpakete, <strong>in</strong> die Datenströme aufgeteilt werden, passieren auf ihrem Weg zwischen<br />

Sen<strong>der</strong> und Empfänger e<strong>in</strong>e ganze Reihe von Routern. Der Weg selbst ist <strong>in</strong> den meisten<br />

Fällen nicht vorherbestimmt (von beson<strong>der</strong>en Ausnahmen e<strong>in</strong>mal abgesehen). So können<br />

Pakete, obwohl sie zwischen Partnern <strong>in</strong>nerhalb e<strong>in</strong>er Stadt ausgetauscht werden, durchaus<br />

mehrfach Landesgrenzen überschreiten. An <strong>der</strong> Weiterleitung dieser Datenströme s<strong>in</strong>d<br />

dann meistens mehrere Provi<strong>der</strong> beteiligt, die über sehr unterschiedliches Know-How und<br />

Sicherheitsvorstellungen verfügen können.<br />

18.1.2 Offener Datentransport<br />

Für den Transport von Daten <strong>in</strong> e<strong>in</strong>em <strong>Netzwerk</strong>, d.h. e<strong>in</strong>e Kommunikation zwischen zwei<br />

Rechnern A und B, benötigt man offene und geme<strong>in</strong>same Standards, damit e<strong>in</strong>e Verb<strong>in</strong>dung<br />

zustande kommen kann. Hierfür reicht es aus, dass jeweils die Datenhea<strong>der</strong> <strong>der</strong> verwendeten<br />

Protokolle genormt und für alle am Transport Beteiligten <strong>in</strong>terpretierbar s<strong>in</strong>d.<br />

Da Empfänger und Absen<strong>der</strong> nicht direkt mite<strong>in</strong>an<strong>der</strong> kommunizieren, son<strong>der</strong>n ihre<br />

Pakete nur an den nächsten Router (meistens e<strong>in</strong>fach an das Default-Gateway) ausliefern,<br />

lassen sich Aussagen über die Authentizität und die Richtigkeit des Inhaltes von Paketen<br />

nicht machen. Für erfahrene Anwen<strong>der</strong> bzw. Benutzer e<strong>in</strong>schlägiger Programme ist es überhaupt<br />

ke<strong>in</strong> Problem IP-Pakete mitzulesen (z.B. dsniff, ethereal, ...). Dieses kann bereits im<br />

eigenen LAN geschehen. Jedoch kann auch jede Masch<strong>in</strong>e auf dem Weg <strong>der</strong> Datenpakete<br />

diese mitlesen. Beides läßt sich <strong>in</strong> den seltensten Fällen feststellen. Selbst wenn Pakete<br />

auf ihrer Reise verän<strong>der</strong>t werden, kann man dies nicht e<strong>in</strong>fach feststellen, da die Prüfsummen<br />

von IP- und TCP-Hea<strong>der</strong> natürlich auch vom Fälscher korrekt e<strong>in</strong>getragen werden.<br />

Genausowenig läßt sich feststellen, ob <strong>der</strong> Absen<strong>der</strong> wirklich <strong>der</strong> erwartete Kommunikationspartner<br />

ist o<strong>der</strong> ob sich <strong>der</strong> Man-<strong>in</strong>-the-Middle e<strong>in</strong>geschaltet hat.<br />

Viele Benutzer werden sicherlich sagen, dass an<strong>der</strong>e mit ihren Daten nichts anfangen<br />

können und dass sie nicht relevant s<strong>in</strong>d. Trotzdem möchte man sicherlich nicht, dass jemand<br />

se<strong>in</strong>e Mailbox bei e<strong>in</strong>em Webmailer ausräumt o<strong>der</strong> Mails unter dem eigenen Namen<br />

verschickt. Wenn vielleicht mit e<strong>in</strong>er e<strong>in</strong>fachen Mailadresse noch ke<strong>in</strong>e kostenpflichtigen<br />

Dienste aufgerufen werden können, so lassen sich doch Mails mit sehr üblen Inhalten ver-<br />

253


254 KAPITEL 18. SICHERES IP<br />

Abbildung 18.1: Snapshot e<strong>in</strong>er Ethereal-Analyse<br />

fassen, die den o<strong>der</strong> die Account<strong>in</strong>haberIn <strong>in</strong> Schwierigkeiten br<strong>in</strong>gen können. O<strong>der</strong> aber<br />

jemand verwendet mitgehörte Ebay-Daten dazu, Gebote auf eigene Artikel zu platzieren.<br />

Das folgende List<strong>in</strong>g zeigt e<strong>in</strong>en Ausschnitt e<strong>in</strong>er Google-Sitzung; viele Informationen kann<br />

man sofort und ohne großen Aufwand direkt entnehmen.<br />

b5 48 00 00 01 01 08 0a 11 df 06 9c 42 97 -@5H.... ..._..B.<br />

0040 29 0d 47 45 54 20 2f 73 65 61 72 63 68 3f 71 3d ).GET /search?q=<br />

0050 77 69 65 2b 68 61 63 6b 65 2b 69 63 68 2b 6d 65 wie+hacke+ich+me<br />

0060 69 6e 2b 6e 65 74 7a 26 69 65 3d 49 53 4f 2d 38 <strong>in</strong>+netz&ie=ISO-8<br />

0070 38 35 39 2d 31 26 68 6c 3d 64 65 26 6d 65 74 61 859-1&hl=de&meta<br />

0080 3d 20 48 54 54 50 2f 31 2e 31 0d 0a 55 73 65 72 = HTTP/1.1..User<br />

0090 2d 41 67 65 6e 74 3a 20 4d 6f 7a 69 6c 6c 61 2f -Agent:Mozilla/<br />

00a0 35 2e 30 20 28 63 6f 6d 70 61 74 69 62 6c 65 3b 5.0 (compatible;<br />

00b0 20 4b 6f 6e 71 75 65 72 6f 72 2f 33 3b 20 4c 69 Konqueror/3; Li<br />

00c0 6e 75 78 29 0d 0a 52 65 66 65 72 65 72 3a 20 68 nux)..Referer: h<br />

00d0 74 74 70 3a 2f 2f 77 77 77 2e 67 6f 6f 67 6c 65 ttp://www.google<br />

00e0 2e 64 65 2f 0d 0a 41 63 63 65 70 74 3a 20 74 65 .de/..Accept: te<br />

00f0 78 74 2f 2a 2c 20 69 6d 61 67 65 2f 6a 70 65 67 xt/*, image/jpeg<br />

0100 2c 20 69 6d 61 67 65 2f 70 6e 67 2c 20 69 6d 61 , image/ png,ima<br />

0110 67 65 2f 2a 2c 20 2a 2f 2a 0d 0a 41 63 63 65 70 ge/*, */*..Accep<br />

0120 74 2d 45 6e 63 6f 64 69 6e 67 3a 20 78 2d 67 7a t-Encodi ng:x-gz<br />

0130 69 70 2c 20 67 7a 69 70 2c 20 69 64 65 6e 74 69 ip, gzip ,identi<br />

0140 74 79 0d 0a 41 63 63 65 70 74 2d 43 68 61 72 73 ty..Accept-Chars<br />

0150 65 74 3a 20 69 73 6f 2d 38 38 35 39 2d 31 2c 20 et: iso-8859-1,<br />

0160 75 74 66 2d 38 3b 71 3d 30 2e 35 2c 20 2a 3b 71 utf-8;q= 0.5,*;q<br />

0170 3d 30 2e 35 0d 0a 41 63 63 65 70 74 2d 4c 61 6e =0.5..Accept-Lan


18.1. SICHERHEITSPROBLEME DES DERZEITIGEN IP-STANDARDS 255<br />

0180 67 75 61 67 65 3a 20 65 6e 0d 0a 48 6f 73 74 3a guage: en..Host:<br />

0190 20 77 77 77 2e 67 6f 6f 67 6c 65 2e 64 65 0d 0a www.google.de..<br />

01a0 43 6f 6f 6b 69 65 3a 20 50 52 45 46 3d 49 44 3d Cookie:PREF=ID=<br />

01b0 35 66 35 31 34 38 31 33 30 35 35 64 62 62 38 32 5f514813055dbb82<br />

01c0 3a 4c 44 3d 64 65 3a 54 4d 3d 31 30 33 38 38 32 :LD=de:TM=103882<br />

01d0 37 31 37 30 3a 4c 4d 3d 31 30 33 38 38 32 37 31 7170:LM=10388271<br />

01e0 37 30 3a 53 3d 35 49 4b 57 55 36 38 68 50 58 73 70:S=5IKWU68hPXs<br />

01f0 38 53 59 7a 51 0d 0a 0d 0a<br />

Darüberh<strong>in</strong>aus gel<strong>in</strong>gt es leicht, Pakete zu modifizieren. So kann die Absende- o<strong>der</strong><br />

Empfangsadresse e<strong>in</strong>es Datenpaketes umgeschrieben werden. Dies geschieht gewollt z.B.<br />

bereits beim Passieren e<strong>in</strong>er Firewall mit Network Address Translation (NAT), o<strong>der</strong> durch<br />

sogenannte Bouncer und Redirecter. Die Modifikation des Absen<strong>der</strong>s kann auch aus weniger<br />

ehrenhaften Gründen, wie DoS-Attacken erfolgen.<br />

Weiterh<strong>in</strong> gibt e<strong>in</strong>em die Tatsache, dass bei vielen klassischen Protokollen (wie Telnet,<br />

Pop3, Imap4, ftp, http) Passwörter im Klartext übertragen werden und damit sehr e<strong>in</strong>fach<br />

abzufischen s<strong>in</strong>d, ke<strong>in</strong> gutes Gefühl. Der Inhalt <strong>der</strong> Pakete ist auch vor Fälschungen nicht<br />

sicher. Zwar bildet <strong>der</strong> IP-Stack Prüfsummen über den Hea<strong>der</strong> und den Paket<strong>in</strong>halt 1 , jedoch<br />

s<strong>in</strong>d die Rout<strong>in</strong>en e<strong>in</strong>fach auf verän<strong>der</strong>te Pakete anwendbar.<br />

Die Verteilung des IP-Adressraumes liefert vielerlei Anhaltspunkte <strong>in</strong> Bezug auf die Lage<br />

bestimmter Masch<strong>in</strong>en und <strong>Netzwerk</strong>strukturen. <strong>E<strong>in</strong></strong> genaues Wissen über solche Strukturen<br />

erleichtert das <strong>E<strong>in</strong></strong>dr<strong>in</strong>gen <strong>in</strong> Netze. So wird vielleicht das Zielsystem nicht direkt angegriffen,<br />

son<strong>der</strong>n mittelbar über weitere Rechner, die ”näher an dieser Masch<strong>in</strong>e liegen”,<br />

korrumpiert.<br />

18.1.3 Absicherung - Lösungsansätze<br />

Die geschil<strong>der</strong>ten Probleme erzwangen Lösungen, ohne die sichere private und geschäftliche<br />

Kommunikation nicht denkbar wäre. Dabei gibt es e<strong>in</strong>e Reihe verschiedener Ansätze, die an<br />

unterschiedlichen Stellen des Protokollstacks implementiert s<strong>in</strong>d. Von <strong>der</strong> Implementierung<br />

hängt dann jedoch ab, welche Daten und Protokolle sich mit diesen sicheren Verb<strong>in</strong>dungen<br />

abwickeln lassen und welche Stufe von Sicherheit erreicht wird. Die Komplexität <strong>der</strong> e<strong>in</strong>zelnen<br />

Lösungen variiert: <strong>E<strong>in</strong></strong>ige Konzepte kann man bereits mit normalen Userprivilegien<br />

ausführen, die an<strong>der</strong>en erfor<strong>der</strong>n zusätzliche Kernelmodifikationen und Root-Rechte.<br />

<strong>Netzwerk</strong>-Level Pakete, die zwischen Rechnern auf dem <strong>Netzwerk</strong> transportiert werden,<br />

s<strong>in</strong>d verschlüsselt. Die Verschlüsselung erfolgt <strong>in</strong> <strong>der</strong> Nähe des <strong>Netzwerk</strong>treibers, wo die<br />

Daten auf die Reise geschickt werden. Der Vorteil dieses Verfahrens liegt dar<strong>in</strong>, dass es<br />

transparent arbeitet.<br />

Än<strong>der</strong>ungen o<strong>der</strong> Zusätze zu den e<strong>in</strong>zlenen <strong>Netzwerk</strong>applikationen<br />

s<strong>in</strong>d unnötig. In dem Augenblick wo IP-Pakete verschlüsselt werden, kann diese Funktion <strong>in</strong><br />

Router e<strong>in</strong>gebaut werden. Diese werden üblicherweise sowieso als ”BlackBoxes” betrachtet,<br />

da sie den Verkehr zwischen Hosts transparent weiterleiten und selbst nicht für den normalen<br />

Anwen<strong>der</strong> sichtbar werden. So sieht e<strong>in</strong> Verschlüsselungsrouter für den Endanwen<strong>der</strong> wie<br />

e<strong>in</strong> nichtverschlüsseln<strong>der</strong> Router aus. <strong>E<strong>in</strong></strong> Beispiel hierfür ist z.B. die SonicWall Pro. Dieser<br />

Ansatz lohnt sich beson<strong>der</strong>s dann, wenn e<strong>in</strong>e Verschlüsselung auf Applikationsebene nicht<br />

möglich o<strong>der</strong> äußerst aufwändig sche<strong>in</strong>t und sehr viele verschiedene Anwendungen sicher<br />

kommunizieren sollen. Beispiele für diesen Ansatz s<strong>in</strong>d Microsofts ”Microsoft Po<strong>in</strong>t-to-Po<strong>in</strong>t<br />

1 IP merkt sich die Paketgesamtlänge und e<strong>in</strong>e Hea<strong>der</strong>prüfsumme, TCP die Hea<strong>der</strong>länge und e<strong>in</strong>e Daten-<br />

prüfsumme


256 KAPITEL 18. SICHERES IP<br />

Tunnel Protocol” (PPTP), die Crypto IP Encapsulation (CIPE), OpenVPN und IPsec. Die<br />

beiden letzteren Ansätze werden als freie Software im S<strong>in</strong>ne <strong>der</strong> GPL entwickelt.<br />

Für das Microsoft-Protokoll existiert e<strong>in</strong> L<strong>in</strong>ux-Client, um Verb<strong>in</strong>dung mit entsprechenden<br />

Microsoftsystemen aufnehmen zu können. Den Client, die Dokumentation und Installationsanleitungen<br />

f<strong>in</strong>det man bei den nachstehenden Literaturh<strong>in</strong>weisen. Inzwischen s<strong>in</strong>d<br />

etliche Anmerkungen zu diesem Protokoll veröffentlicht, die e<strong>in</strong>ige Schwächen des Konzeptes<br />

aufzeigen. Trotzdem sollte es <strong>der</strong> Vollständigkeit halber genannt werden, da es noch<br />

an vielen Stellen zum <strong>E<strong>in</strong></strong>satz kommt. Da es an <strong>der</strong> Transport- und Sicherungsschicht ansetzt,<br />

s<strong>in</strong>d verschiedene höhere Protokolle, also nicht nur IP-Pakete darüber zu tunneln.<br />

So können auch IPX und NetBIOSPakete verschickt werden. Der <strong>E<strong>in</strong></strong>richtungsaufwand für<br />

dieses Protokoll muss wegen e<strong>in</strong>iger Kernel- und Systemanpassungen als recht hoch e<strong>in</strong>geschätzt<br />

werden. Es gibt verschiedene Versionen und wi<strong>der</strong>sprüchliche Anleitungen im<br />

Netz, so dass je nach e<strong>in</strong>gesetztem System mit Problemen gerechnet werden muss. Wenn<br />

möglich sollte <strong>der</strong> <strong>E<strong>in</strong></strong>richtungsaufwand lieber auf e<strong>in</strong>e aus Sicht des Autors bessere Technologie,<br />

wie CIPE o<strong>der</strong> IPsec verwandt werden.<br />

Jedoch haben alle Low-level-Verschlüsselungen den geme<strong>in</strong>samen Nachteil, dass sie ke<strong>in</strong>en<br />

Schutz gegen <strong>E<strong>in</strong></strong>brüche und Attacken auf höheren Protokollebenen bieten. Trojaner per<br />

Email o<strong>der</strong> durch e<strong>in</strong>e Webanwendung, Exploits auf <strong>der</strong> Betriebssystemebene s<strong>in</strong>d auf diese<br />

Weise nicht zu unterb<strong>in</strong>den. Sie erfor<strong>der</strong>n spezielle Maßnahmen, wie die PGP-Verschlüsselung<br />

und Signierung von Emails o<strong>der</strong> Zertifikate für Web<strong>in</strong>halte und Programme.<br />

Socket-Level Für e<strong>in</strong>e ganze Reihe von Anwendungen s<strong>in</strong>d sichere Protokolle entwickelt<br />

worden. So wird <strong>der</strong> chronisch unsichere Telnet-, Remote-Log<strong>in</strong> bzw. Remote-Copy-Dienst<br />

zur Anmeldung an entfernten Masch<strong>in</strong>en durch die Secure Shell (SSH) ersetzt. Sie arbeitet<br />

auf TCP-Ebene, verschlüsselt aber den Inhalt von Paketen. So können die übertragenen<br />

Passwörter und Daten nicht von Dritten mitgehört und modifiziert werden. Mittels SSH<br />

lassen sich e<strong>in</strong>fache TCP-Tunnel realisieren, dieses wird <strong>in</strong> [lmssh] beschrieben.<br />

Für webbasierte Kommunikation wurde <strong>der</strong> Secure Socket Layer e<strong>in</strong>geführt, <strong>der</strong> es<br />

ermöglicht die HTTP-Kommunikation zwischen Server und Webbrowser zu verschlüsseln.<br />

Diese Verb<strong>in</strong>dung arbeitet auf <strong>der</strong> logischen Verb<strong>in</strong>dungsebene <strong>der</strong> kommunizierenden Programme.<br />

In beiden geschil<strong>der</strong>ten Fällen wird zwar verh<strong>in</strong><strong>der</strong>t, dass die Pakete mitgelesen<br />

und modifiziert werden können, jedoch bleibt dem Aussenstehenden die - <strong>der</strong> Kommunikation<br />

zugrundeliegende - Netzstruktur nicht verborgen. Der Aufwand <strong>der</strong> Konfiguration hält<br />

sich sowohl für SSH, als auch für SSL <strong>in</strong> Maßen. Es werden ke<strong>in</strong>e Kernelmodule benötigt<br />

und die Verschlüsselung kann vom normalen Benutzer ohne spezielle Rechte durch den<br />

Aufruf bzw. die entsprechende Konfiguration <strong>der</strong> Applikation erfolgen.<br />

Applikationsebene In jede Applikation kann e<strong>in</strong>e Verschlüsselung e<strong>in</strong>gebaut werden,<br />

welche die Daten - bevor sie <strong>in</strong> die Transportschicht gelangen - geeignet e<strong>in</strong>packt. <strong>E<strong>in</strong></strong><br />

Beispiel s<strong>in</strong>d Emailprogramme: Emails werden standardmäßig unverschlüsselt übertragen.<br />

Dabei könnte pr<strong>in</strong>zipiell je<strong>der</strong> Adm<strong>in</strong>istrator e<strong>in</strong>es Servers, <strong>der</strong> von <strong>der</strong> Mail durchlaufen<br />

wird, die Mail lesen. Natürlich wäre auch e<strong>in</strong> Geheimdienst o<strong>der</strong> Wirtschaftsspion <strong>in</strong> <strong>der</strong><br />

Lage die Leitungen anzuzapfen und könnte jede Mail mitlesen. Um dieses zu verh<strong>in</strong><strong>der</strong>n<br />

wird den Mailprogrammen e<strong>in</strong> Plug<strong>in</strong> h<strong>in</strong>zugeführt, bzw. die Fähigkeit Emails vor dem<br />

Versenden zu verschlüsseln und auf <strong>der</strong> Empfängerseite zu entschlüsseln.<br />

Viele Mailprogramme haben Verschlüsselungsmöglichkeiten bereits e<strong>in</strong>gebaut. Spezielle<br />

Verschlüsselungsprogramme wie Pretty Good Privacy (PGP) stehen zum Download bereit.<br />

Installations- und Gebrauchsanweisungen s<strong>in</strong>d allenthalben zu f<strong>in</strong>den. Die Installationsrout<strong>in</strong>en<br />

und Bedienoberflächen s<strong>in</strong>d ausgereift; sie können auch ohne tiefgreifende technische


18.2. VPNS - SICHERE NETZE ÜBER DAS INTERNET 257<br />

Vorkenntnisse genutzt werden.<br />

18.2 VPNs - Sichere Netze über das Internet<br />

<strong>E<strong>in</strong></strong> VPN ”Virtual Private Network 2 ” verb<strong>in</strong>det entwe<strong>der</strong> zwei <strong>Netzwerk</strong>e o<strong>der</strong> e<strong>in</strong>en Computer<br />

mit e<strong>in</strong>em <strong>Netzwerk</strong> o<strong>der</strong> zwei Computer - und das jeweils auch über öffentliche,<br />

unsichere Verb<strong>in</strong>dungen (z.B. das Internet). Der Ausdruck ”privat” bedeutet, dass die Verb<strong>in</strong>dung<br />

zwischen zwei Rechnern genauso gut gesichert ist, als wenn sie zusammen <strong>in</strong> e<strong>in</strong>em<br />

lokalen <strong>Netzwerk</strong> kommunizieren würden. Obwohl die Rechner räumlich durch das öffentliche<br />

Netz getrennt s<strong>in</strong>d, hat man durch das Tunnel<strong>in</strong>g-Verfahren e<strong>in</strong>e Situation geschaffen,<br />

welche die Rechner ”virtuell” wie Mitglie<strong>der</strong> des lokalen <strong>Netzwerk</strong>es ersche<strong>in</strong>en läßt.<br />

Left Subnet<br />

192.168.2.0/24<br />

Öffentliches<br />

unsicheres<br />

IP-<strong>Netzwerk</strong><br />

202.38.21.24 62.137.15.134<br />

lisa.dyndns.org ra<strong>in</strong>er.dyndns.org<br />

Internet<br />

Right Subnet<br />

192.168.4.0/24<br />

192.168.2.254 192.168.4.254<br />

Abbildung 18.2: <strong>E<strong>in</strong></strong>e typische VPN-Situation<br />

Folgende Ziele sollen durch VPN’s erreicht werden:<br />

• erweitertes Rout<strong>in</strong>g - IP-Netze können von dritten unsichtbar über öffentliche Netze<br />

getunnelt werden. Dadurch läßt sich die zugrundeliegende <strong>Netzwerk</strong>struktur verdecken<br />

und die Identität <strong>der</strong> kommunizierenden Rechner verbergen.<br />

• Sicherstellung <strong>der</strong> Absen<strong>der</strong>authenzität<br />

• Verschlüsselung des Inhaltes unabhängig von <strong>der</strong> Paketart<br />

• Vere<strong>in</strong>fachung des netzwerk<strong>in</strong>ternen Rout<strong>in</strong>gs. Räumlich und <strong>in</strong>frastrukturell weit<br />

ause<strong>in</strong>an<strong>der</strong>liegende Teile e<strong>in</strong>er Organisation ersche<strong>in</strong>en auf <strong>der</strong> logischen <strong>Netzwerk</strong>ebene<br />

nahe beie<strong>in</strong>an<strong>der</strong><br />

18.3 CIPE<br />

18.3.1 Idee<br />

<strong>E<strong>in</strong></strong>en e<strong>in</strong>fachen und dynamischen Ansatz für Verschlüsselungstunnel bietet die Crypto IP<br />

Encapsulation. Dieses Protokoll ist so angelegt, dass IP-Pakete <strong>in</strong> verschlüsselten UDP-<br />

Paketen übertragen werden. Der Vorteil UDP als Transportprotokoll zu verwenden, liegt<br />

2 zu deutsch: Virtuelles Privates <strong>Netzwerk</strong>


258 KAPITEL 18. SICHERES IP<br />

<strong>in</strong> <strong>der</strong> leichten Unterscheidbarkeit verschiedener Endpunkte. Bei e<strong>in</strong>er e<strong>in</strong>fachen IP-zu-IP-<br />

Kapselung ist man auf die eigene e<strong>in</strong>getragene IP-Adresse beschränkt und kann schwer<br />

mehrere Tunnel vone<strong>in</strong>an<strong>der</strong> unterscheiden. Weiterh<strong>in</strong> wird <strong>der</strong> Transport über dynamische<br />

Adressen, Network Address Translation und SOCKS Proxies ermöglicht, die ke<strong>in</strong>e<br />

spezielle Anpassung für CIPE benötigen. CIPE kann damit komplett auf <strong>der</strong> bestehenden<br />

IP-Infrastruktur aufsetzen, ist allerd<strong>in</strong>gs nicht kompatibel zu den <strong>in</strong> RFCs publizierten<br />

Pr<strong>in</strong>zipen von IPsec.<br />

Es existieren Implementationen für L<strong>in</strong>ux und W<strong>in</strong>dows. Die L<strong>in</strong>uximplementation erfor<strong>der</strong>t<br />

e<strong>in</strong> spezielles Kernelmodul, das jedoch bei den meisten Distributionen mit CIPE bereits<br />

mitgeliefert wird. Das Kernelmodul regelt das Senden und Empfangen <strong>der</strong> IP-Pakete.<br />

Es def<strong>in</strong>iert e<strong>in</strong> <strong>Netzwerk</strong>device cipcb*, z.B.<br />

ifconfig cipcb0<br />

cipcb0 L<strong>in</strong>k encap:IPIP Tunnel HWaddr<br />

<strong>in</strong>et addr:192.168.2.254 P-t-P:192.168.4.254 Mask:255.255.255.255<br />

UP POINTOPOINT RUNNING NOARP MTU:1442 Metric:1<br />

RX packets:0 errors:0 dropped:0 overruns:0 frame:0<br />

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0<br />

collisions:0 txqueuelen:100<br />

RX bytes:0 (70.6 Mb) TX bytes:0 (813.0 Mb)<br />

o<strong>der</strong> mittels des IP-Route2-Tools ip:<br />

ip addr show dev cipcb0<br />

9: cipcb0: mtu 1442 qdisc pfifo_fast qlen 100<br />

l<strong>in</strong>k/ipip 00:00:5e:b2:00:43 peer 00:00:00:00:00:00<br />

<strong>in</strong>et 192.168.2.2 peer 192.168.2.1/32 scope global cipcb0<br />

Def<strong>in</strong>ierte CIPE-Interfaces tauchen als Hostrouten <strong>in</strong> <strong>der</strong> Kernelrout<strong>in</strong>gtabelle auf. Die<br />

Devices können analog zu an<strong>der</strong>en <strong>Netzwerk</strong>devices angesprochen und benutzt werden, z.B.<br />

um weitere Routen darüber mittels /etc/cipe/ip-up e<strong>in</strong>zutragen o<strong>der</strong> Firewall-Regeln darauf<br />

anzuwenden. Im Namen des <strong>Netzwerk</strong><strong>in</strong>terfaces wird <strong>der</strong> Verschlüsselungsalgorithmus (im<br />

Beispiel ”b” für blowfish) kodiert, <strong>der</strong> zum Zeitpunkt <strong>der</strong> Übersetzung von CIPE angegeben<br />

werden kann.<br />

Im ”user space” läuft <strong>der</strong> H<strong>in</strong>tergrunddienst ciped. Dieser kann mit dem pppd verglichen<br />

werden. Er regelt das Aufsetzen und Schliessen des <strong>Netzwerk</strong><strong>in</strong>terfaces anhand <strong>der</strong> <strong>in</strong><br />

den entsprechenden Konfigurationsdateien vorhandenen <strong>E<strong>in</strong></strong>stellungen.<br />

Verschlüsselungsrouter auf Basis von CIPE weisen e<strong>in</strong>e herausragende Leistung auf,<br />

mit Datentransferraten, die nur zwei bis drei Prozent unter denen des unverschlüsselten<br />

Verkehrs liegen. <strong>E<strong>in</strong></strong> Teil <strong>der</strong> Performanz von CIPE kommt durch die Verwendung von<br />

UDP als Transport Protokoll. Es vermeidet verschiedene Formen subtiler Interaktionen, die<br />

durch mehrere TCP-Layer entstehen können. Diese Bee<strong>in</strong>flussungen tragen dazu bei, dass<br />

die Leistung von MPPE/PPTP 15 % bis 20 % unter <strong>der</strong> re<strong>in</strong>en Verb<strong>in</strong>dungsgeschw<strong>in</strong>digkeit<br />

liegen. CIPE Tunnel s<strong>in</strong>d sehr robust. Sie können durchaus mehrere Wochen laufen, ohne<br />

wie<strong>der</strong> neu aufgebaut werden zu müssen (wenn sich die IP-Daten <strong>der</strong> Verb<strong>in</strong>dung nicht<br />

än<strong>der</strong>n).


18.3. CIPE 259<br />

18.3.2 Aufsetzen von CIPE<br />

Meistens wird CIPE mit <strong>der</strong> jeweiligen L<strong>in</strong>uxdistribution mitgeliefert. Dann wird üblicherweise<br />

e<strong>in</strong> Startskript und das Konfigurationsverzeichnis /etc/cipe angelegt. Das Kernelmodul<br />

cipcb.o wird entwe<strong>der</strong> automatisch mit dem Start des CIPE-Daemons geladen o<strong>der</strong><br />

kann per <strong>in</strong>smod cipcb e<strong>in</strong>gefügt werden. Für jeden CIPE-Tunnel wird e<strong>in</strong>e eigene Konfigurationsdatei<br />

angelegt. Bei SuSE wird dem Date<strong>in</strong>amen ”option” die Bezeichnung <strong>der</strong><br />

Verb<strong>in</strong>dung nach e<strong>in</strong>em Punkt angehängt, so dass alle Verb<strong>in</strong>dungen mit dem Init-Skript<br />

gestartet werden, die mit ”option.*” beg<strong>in</strong>nen.<br />

Für das Beispiel-VPN im Bild würden die Konfigurat<strong>in</strong>sdateien für beide Tunnelendpunkte<br />

wie folgt aussehen:<br />

# option.example-vpn right side<br />

#<br />

# the peer’s IP address<br />

ptpaddr 192.168.4.254<br />

# our CIPE device’s IP address<br />

ipaddr 192.168.2.254<br />

# my UDP address. Note: if you set port 0 here, the system will pick<br />

# one and tell it to you via the ip-up script. Same holds for IP 0.0.0.0.<br />

me 62.137.15.134:10000<br />

# ...and the UDP address we connect to. Of course no wildcards here.<br />

peer 202.38.21.24:10001<br />

# The static key. Keep this file secret!<br />

# The key is 128 bits <strong>in</strong> hexadecimal notation.<br />

key 0219e5bfcae114c9203e2e26f048e21d<br />

Sowie für die Gegenstelle:<br />

# option.example-vpn left side<br />

#<br />

# the peer’s IP address<br />

ptpaddr 192.168.2.254<br />

# our CIPE device’s IP address<br />

ipaddr 192.168.4.254<br />

# my UDP address. Note: if you set port 0 here, the system will pick<br />

# one and tell it to you via the ip-up script. Same holds for IP 0.0.0.0.<br />

me 202.38.21.24:10001<br />

# ...and the UDP address we connect to. Of course no wildcards here.<br />

peer 62.137.15.134:10000<br />

# The static key. Keep this file secret!<br />

# The key is 128 bits <strong>in</strong> hexadecimal notation.<br />

key 0219e5bfcae114c9203e2e26f048e21d<br />

In diesem Beispiel wird davon ausgegangen, dass die routebaren Internet-Adressen<br />

62.137.15.134 und 202.38.21.24 statisch s<strong>in</strong>d. <strong>E<strong>in</strong></strong>e solche Situation betrifft Firmen, die mit<br />

festen IP-Nummern ans Netz angebunden s<strong>in</strong>d. Für den Privatanwen<strong>der</strong> mit <strong>der</strong> Internet-<br />

<strong>E<strong>in</strong></strong>wahl und dynamischer IP-Vergabe kann man e<strong>in</strong>e Seite so konfigurieren, dass sie <strong>in</strong><br />

Abhängigkeit von <strong>der</strong> e<strong>in</strong>gehenden Verb<strong>in</strong>dung die Gegenstelle erkennt:<br />

# option.example-vpn right side


260 KAPITEL 18. SICHERES IP<br />

#<br />

[ ... ]<br />

me 134.34.80.5:10001<br />

peer 127.0.0.1:9<br />

maxerr -1<br />

Hier<strong>in</strong> besteht <strong>der</strong> Trick, dass als Gegenstelle e<strong>in</strong>fach die Masch<strong>in</strong>e selbst mit dem Discard-<br />

Port angegeben wird, <strong>der</strong> alle e<strong>in</strong>treffenden Pakete verwirft. Damit <strong>der</strong> ciped nicht abbricht,<br />

wird die Zahl <strong>der</strong> erlaubten Fehlversuche mit ”-1” auf unendlich gesetzt. Die Gegenstelle,<br />

d.h. <strong>der</strong> Rechner mit <strong>der</strong> dynamischen IP-Adresse erhält folgende <strong>E<strong>in</strong></strong>stellungen:<br />

# option.example-vpn left side<br />

#<br />

[ ... ]<br />

me 0.0.0.0:10000<br />

peer 134.34.80.5:10001<br />

dynip<br />

Nur dieser Rechner kann e<strong>in</strong>e Verb<strong>in</strong>dung <strong>in</strong>itiieren. Wenn zwei Masch<strong>in</strong>en mit dynamischer<br />

IP mite<strong>in</strong>an<strong>der</strong> kommunizieren, kann auch <strong>der</strong> DNS-Name statt e<strong>in</strong>er festen IP<br />

e<strong>in</strong>getragen werden. Probleme könnten jedoch auftreten, wenn sich die IP-Nummer än<strong>der</strong>t.<br />

Mit CIPE 1.5 ist die Möglichkeit h<strong>in</strong>zugekommen, Schlüssel über e<strong>in</strong> Public-Key-Verfahren<br />

analog zu SSH auszutauschen. Dieser Prozess wird mittels des Zusatzprogrammes pkcipe<br />

abgewickelt.<br />

<strong>E<strong>in</strong></strong>facher und weniger fehleranfällig, sowie unter Sicherheitsaspekten meistens ausreichend,<br />

ist es <strong>in</strong> den Konfigurationen e<strong>in</strong>en geme<strong>in</strong>samen Schlüssel von 128 bit Länge zu<br />

verwenden. Diesen kann man z.B. mittels echo ”this is my keyphrase”—md5sum generieren<br />

und an die beiden Tunnelenden kopieren. Dieser Schlüssel dient zur Generierung<br />

des häufiger gewechselten dynamischen Schlüssels mit dem die Daten tatsächlich gecryptet<br />

werden.<br />

Die realen routebaren Adressen und die virtuellen Tunneladressen müssen sich <strong>in</strong> jedem<br />

Fall unterscheiden. Zusätzlich def<strong>in</strong>ierte Routen und Firewallregeln sollten nur mittels ipup<br />

Skript e<strong>in</strong>getragen und mittels ip-down abgebaut werden. Wenn Firewalls e<strong>in</strong>gesetzt<br />

werden, sollte daran gedacht werden, dass die für CIPE benutzten Ports freigegeben s<strong>in</strong>d.<br />

pkcipe benutzt an<strong>der</strong>e als die Tunnelportnummern und muss geson<strong>der</strong>t betrachtet werden.<br />

Die <strong>E<strong>in</strong></strong>schränkung, dass sich mittels CIPE ausschliesslich 2er Tunnel aufbauen lassen, führt<br />

zur Beschäftigung mit IPsec.<br />

18.4 IPsec-Theorie<br />

IPsec ist e<strong>in</strong> Versuch, sämtlichen 3 Internet-Verkehr automatisch zu verschlüsseln. Damit<br />

dies ohne Verän<strong>der</strong>ung <strong>der</strong> bestehenden Anwendungen geschehen kann, wird die Verschlüsselung<br />

und Authentifizierung auf IP-Ebene, also unterhalb von TCP, UDP und an<strong>der</strong>er Protokolle<br />

durchgeführt.<br />

IPSec wird als Internet Standard entwickelt. Es kann <strong>in</strong> zwei verschiedenen Betriebsarten<br />

e<strong>in</strong>gesetzt werden: Im Tunnelmode werden die Pakete - wie bei an<strong>der</strong>en Tunnel<strong>in</strong>gverfahren<br />

auch - komplett mit IP-Hea<strong>der</strong> verschickt. So lassen sich vollständig virtuelle Netze schaffen,<br />

die unabhängig von <strong>der</strong> darunterliegenden Infrastruktur kommunizieren können. Im<br />

3 o<strong>der</strong> zum<strong>in</strong>dest e<strong>in</strong>en großen Teil des


18.4. IPSEC-THEORIE 261<br />

IP Hea<strong>der</strong> Authentication<br />

Hea<strong>der</strong><br />

Next Hea<strong>der</strong> Payload Length RESERVED<br />

Security Parameters Index (SPI)<br />

Sequence Number Field<br />

Authentication Data (variable)<br />

32 bit<br />

Data (variable)<br />

Abbildung 18.3: Aufbau und <strong>E<strong>in</strong></strong>satz im IP e<strong>in</strong>es Authentication-Hea<strong>der</strong><br />

Transportmode - dem e<strong>in</strong>facheren Verfahren - werden nur die Daten <strong>der</strong> Transportschicht<br />

beachtet. Bei beiden Typen werden die Daten verschlüsselt und es wird jeweils gegenüber<br />

<strong>der</strong> an<strong>der</strong>en Masch<strong>in</strong>e bzw. dem Tunnelendpunkt authentifiziert.<br />

IP Hea<strong>der</strong> Data (variable)<br />

Neuer<br />

IP Hea<strong>der</strong><br />

Neuer<br />

IP Hea<strong>der</strong><br />

IP Hea<strong>der</strong> Data (variable)<br />

Auth.<br />

Hea<strong>der</strong><br />

Orig<strong>in</strong>al IP-Datagramm<br />

IP Hea<strong>der</strong> Data (variable)<br />

authentifiziert<br />

Getunneltes IP-Datagramm<br />

Datagramm mit Auth-Hea<strong>der</strong> im Tunnelmodus<br />

Abbildung 18.4: <strong>E<strong>in</strong></strong>fügen des AH im Tunnelmodus<br />

Zur Realisierung <strong>der</strong> Paket<strong>in</strong>tegrität s<strong>in</strong>d dem Internet-Protokoll zwei weitere Hea<strong>der</strong>typen<br />

(AH und ESP) <strong>in</strong> <strong>der</strong> Transportschicht h<strong>in</strong>zugefügt worden. Beide Hea<strong>der</strong> s<strong>in</strong>d pr<strong>in</strong>zipiell<br />

unabhängig von möglichen kryptographischen Verfahren, um Anpassungen an konkrete<br />

<strong>E<strong>in</strong></strong>satzgebiete und den Stand <strong>der</strong> Kryptografie zu erlauben. Mittels Authentication Hea<strong>der</strong><br />

(AH) wird die Integrität <strong>der</strong> übertragenen Daten geschützt und die Authentizität sichergestellt.<br />

Selbst wenn die Daten nicht verschüsselt werden, erlaubt AH die Überprüfung<br />

<strong>der</strong> Daten. Dies erfolgt mittels Prüfsumme über den Datenblock durch SHA-1 o<strong>der</strong> MD5-<br />

Verfahren.<br />

ESP steht für Encapsulated Security Payload und sorgt durch Verschlüsselung für: Die<br />

Vertraulichkeit <strong>der</strong> Daten, <strong>der</strong>en Integrität und die Authentifizierung <strong>der</strong> Datenquellen<br />

von IP. Der ESP-Hea<strong>der</strong> ist selbst nicht verschlüsselt, <strong>der</strong> ESP-Trailer teilweise. Der ESP-<br />

Hea<strong>der</strong> enthält: Sicherheitsparameter<strong>in</strong>dex (SPI), den Verschlüsselungsalgorithmus, die Authentifizierung<br />

und den Modus. Im Trailer s<strong>in</strong>d e<strong>in</strong>e Seriennummer, e<strong>in</strong>e Prüfsumme zur<br />

Sicherstellung <strong>der</strong> Daten<strong>in</strong>tegrität und weitere SPI.


262 KAPITEL 18. SICHERES IP<br />

Security Parameters Index (SPI)<br />

Sequence Number Field<br />

Payload Data (variable)<br />

Padd<strong>in</strong>g (0-255 byte) Pad Length<br />

Authentication Data (variable)<br />

32 bit<br />

Padd<strong>in</strong>g<br />

Next Hea<strong>der</strong><br />

Abbildung 18.5: Aufbau e<strong>in</strong>es ESP Paketes<br />

IP Hea<strong>der</strong> Data (variable)<br />

Neuer<br />

IP Hea<strong>der</strong><br />

Neuer<br />

IP Hea<strong>der</strong><br />

IP Hea<strong>der</strong> Data (variable)<br />

ESP<br />

Hea<strong>der</strong><br />

Orig<strong>in</strong>al IP-Datagramm<br />

Getunneltes IP-Datagramm<br />

IP Hea<strong>der</strong> Data (variable)<br />

verschlüsselt<br />

authentifiziert<br />

e<br />

n<br />

c<br />

r<br />

y<br />

p<br />

t<br />

e<br />

d<br />

Datagramm mit ESP im Tunnelmodus<br />

ESP<br />

Trail<br />

Abbildung 18.6: <strong>E<strong>in</strong></strong>satz des ESP im IP-Datagramm<br />

ESP<br />

Auth<br />

Ergänzt werden die beiden Hea<strong>der</strong>-Typen durch das Internet Security Association and<br />

Key Management Protocol (ISAKMP). Dieses wird dazu verwendet, e<strong>in</strong>e Security Association<br />

zwischen den beteiligten Kommunikationspartnern zu etablieren und Schlüssel auszutauschen.<br />

Es def<strong>in</strong>iert hierzu Formate und Methoden zur Generierung, Modifikation und<br />

Entsorgung von SAs. Unter dem Internet Key Exchange (IKE) versteht man e<strong>in</strong> konkretes<br />

Schlüsselaustauschverfahren, welches speziell auf die Benutzung mit ISAKMP abgestimmt<br />

ist.<br />

IPSec wird sich vermutlich auf Dauer durchsetzen. Durch se<strong>in</strong>e Aufnahme als Internetstandard<br />

besteht die Hoffnung, dass sich VPN’s e<strong>in</strong>em geme<strong>in</strong>samen Standard annähern und<br />

später produktübergreifend <strong>in</strong>teroperabel werden. Unter L<strong>in</strong>ux erweitert das FreeSWAN-<br />

Projekt [fs] den L<strong>in</strong>ux-IP-Stack um die Fähigkeiten von IPsec. Es gibt Lösungen für W<strong>in</strong>dows2000<br />

und XP, sowie e<strong>in</strong>ige proprietäre kommerzielle Produkte, wie die SonicWall Pro.<br />

Zur Zeit funktioniert die Zusammenarbeit zwischen verschiedenen Security-Gateways<br />

und -Lösungen jedoch nur e<strong>in</strong>geschränkt. Als Beispiel wird die erfolgreiche Zusammenarbeit<br />

von L<strong>in</strong>ux/FreeSWAN mit <strong>der</strong> SonicWall Pro genannt. Jedoch funktionieren hier nicht alle<br />

vom Standard vorgeschlagenen Features.<br />

18.5 IPsec praktisch - FreeSWAN<br />

Die Konfigurationsmöglichkeiten und Fähigkeiten von IPsec übersteigen die von an<strong>der</strong>en Sicherheitslösungen<br />

erheblich. Das impliziert jedoch e<strong>in</strong>e Modifikation des Kernels. Aufgrund<br />

sehr komfortabler Skripte gel<strong>in</strong>gen die notwendigen Anpassungen auch weniger erfahrenen<br />

a<br />

u<br />

t<br />

h<br />

e<br />

n<br />

t<br />

i<br />

c<br />

a<br />

t<br />

e<br />

d


18.5. IPSEC PRAKTISCH - FREESWAN 263<br />

Kernelbauer. Vielen L<strong>in</strong>uxdistributionen liegt <strong>in</strong>zwischen die FreeSWAM IPsec-Suite bei.<br />

Die FreeSWAN IPSec Authentifizierung und Verschlüsselung kann entwe<strong>der</strong> SSL o<strong>der</strong><br />

RSA (public/private Schlüsselpaare) o<strong>der</strong> statische PSK (Pre-Shared Keys) verwenden.<br />

IPSec Verschlüsselungstunnel gibt es <strong>in</strong> verschiedenen Formen, die drei üblichsten s<strong>in</strong>d:<br />

Netz-Netz, Netz-Host, Host-Host.<br />

18.5.1 Konfigurationsmöglichkeiten von IPsec<br />

Verschlüsselter Internet-Verkehr zwischen Rechnern o<strong>der</strong> ganzen Netzen kann auf vielerlei<br />

Arten genutzt werden. Hier sollen e<strong>in</strong>ige Beispiele für den <strong>E<strong>in</strong></strong>satz von IPsec im täglichen<br />

Leben gezeigt werden.<br />

• Po<strong>in</strong>t-to-Po<strong>in</strong>t Verschlüsselung zwischen zwei e<strong>in</strong>zelnen Masch<strong>in</strong>en - Die e<strong>in</strong>fachste<br />

Art e<strong>in</strong>e IPsec Verschlüsselung zu nutzen besteht dar<strong>in</strong>, den kompletten IP-Verkehr<br />

zwischen zwei Masch<strong>in</strong>en zu verschlüsseln: die Po<strong>in</strong>t-to-Po<strong>in</strong>t Verschlüsselung. Hierbei<br />

werden <strong>in</strong> <strong>der</strong> Konfiguration ke<strong>in</strong>e Netze h<strong>in</strong>ter den verme<strong>in</strong>dlichen Gateways angegeben.<br />

Der Aufwand ist hierbei ger<strong>in</strong>g und es wird so auf e<strong>in</strong>fache Weise e<strong>in</strong>e sichere<br />

Verb<strong>in</strong>dung für alle Applikationen aufgebaut.<br />

• Von <strong>der</strong> WG <strong>in</strong> die Firma - Bei dieser IPsec Anwendung handelt es sich um e<strong>in</strong>e Netzzu-Netz<br />

Konfiguration. Als Beispiel soll hier die heimische WG (alternativ: das Netz<br />

im <strong>E<strong>in</strong></strong>familienhaus mit Vater, Mutter und K<strong>in</strong><strong>der</strong>n) auf das Firmen<strong>in</strong>ternet <strong>Netzwerk</strong><br />

des Arbeitgebers zugreifen. Das WG-Netz ist dabei z.B. über e<strong>in</strong>en L<strong>in</strong>ux-Router<br />

(”me<strong>in</strong>ewg.dyndns.org”) und DSL an das Internet angeschlossen. H<strong>in</strong>ter diesem Router<br />

bef<strong>in</strong>det sich das private Netz <strong>der</strong> WG (172.16.1.0/255.255.255.0). Die Firma ist<br />

über e<strong>in</strong>e Firewall, die idealerweise über e<strong>in</strong>e IPsec Implementation verfügt 4 , mit dem<br />

Internet verbunden (gateway.firma.de). (siehe Abbildung: VPN1.eps)<br />

Nachdem die Konfiguration (siehe unten) vorgenommen wurde, kann man aus dem<br />

e<strong>in</strong>en privaten Netz problemlos auf das an<strong>der</strong>e zugreifen. Die beiden router (me<strong>in</strong>ewg.dyndns.org)<br />

und (gateway.firma.de) übertragen die entsprechenden Pakete über<br />

den aufgebauten IPsec Tunnel, was für die Benutzer völlig transparent geschieht.<br />

• “Direktes Ersche<strong>in</strong>en lassen <strong>der</strong> Masch<strong>in</strong>e im Firmennetz” - damit ist <strong>in</strong> diesem Zusammenhang<br />

geme<strong>in</strong>t, dass e<strong>in</strong> weit entfernter Rechner über IPsec sozusagen <strong>in</strong> das<br />

Firmennetzwerk <strong>in</strong>tegriert wird. Dabei erhält <strong>der</strong> Rechner e<strong>in</strong>e IP aus dem Pool <strong>der</strong><br />

Firma und ist nicht über se<strong>in</strong>e aktuelle (evt. dynamisch vergebene) IP e<strong>in</strong>es Provi<strong>der</strong>s<br />

zu erreichen.<br />

Der Vorteil e<strong>in</strong>er solchen Installation besteht dar<strong>in</strong>, dass <strong>in</strong> IP-Netzen die Zugriffe<br />

auf Resourcen am e<strong>in</strong>fachsten und effektivsten durch IP-Beschränkungen verwirklicht<br />

werden. So ist es beispielsweise möglich - beim Zugriff auf Fileserver, Datenbankserver<br />

o<strong>der</strong> Arbeitsgruppen - den Zugriff auf das <strong>in</strong>terne Netz e<strong>in</strong>zuschränken, also mögliche<br />

externe IPs zu berücksichtigen.<br />

• Road-Warrior - Die ”Road-Warrior” Konfiguration ist das Paradebeispiel für den reisenden<br />

Handels-/Versicherungsvertreter mit dem Notebook unterm Arm. Bei diesem<br />

Setup handelt es sich um e<strong>in</strong>e Rechner-Netz Situation, <strong>in</strong> <strong>der</strong> <strong>der</strong> IPsec-Tunnel dafür<br />

sorgt, dass <strong>der</strong> Road-Warrior sich über e<strong>in</strong>e öffentliche Leitung <strong>in</strong>s Internet e<strong>in</strong>wählen<br />

und auf das <strong>in</strong>terne Netz se<strong>in</strong>er Firma zugreifen kann. Somit entfällt die Notwendigkeit<br />

e<strong>in</strong>er <strong>E<strong>in</strong></strong>wahlanlage <strong>in</strong> <strong>der</strong> Firma, falls <strong>der</strong> Vertreter während se<strong>in</strong>er Reisen auf<br />

4 wie z.B. die SonicWall Pro o<strong>der</strong> <strong>der</strong> klassichen L<strong>in</strong>ux-Router


264 KAPITEL 18. SICHERES IP<br />

Firmenrechner zugreifen muß. <strong>E<strong>in</strong></strong> angenehmer Nebeneffekt ist dabei natürlich auch,<br />

dass potentiell vertrauliche Daten nicht unverschlüsselt durch die Leitungen geschickt<br />

werden müssen.<br />

18.5.2 <strong>E<strong>in</strong></strong>richtung von IPsec unter L<strong>in</strong>ux<br />

FreeSwan implementiert IPsec unter L<strong>in</strong>ux. Zum Gesamtpaket zählen das Kernelmodul ipsec.o,<br />

die Konfigurationsdatei /etc/ipsec.conf, sowie das Userspace-Programm ipsec. Diese<br />

sollten geme<strong>in</strong>sam mit <strong>der</strong> jeweiligen L<strong>in</strong>ux-Distribution <strong>in</strong>stalliert se<strong>in</strong>.<br />

Wenn diese nicht beiliegen o<strong>der</strong> seitens des Distributors beigelegt werden o<strong>der</strong> die jeweils<br />

aktuellste Version verwendet werden soll, empfielt sich das Selbstkompilieren. Hierzu lädt<br />

man die Sourcen von <strong>der</strong> FreeSWAN-Website (siehe [frsw]) herunter und entpackt diese.<br />

Vorher sollten jedoch die Kernelsources zum verwendeten Kernel vorbereitet werden.<br />

<strong>E<strong>in</strong></strong>richten des Kernels Beispielhaft soll hier die Installation und Übersetzung <strong>der</strong> Quellen<br />

von FreeSWAN auf e<strong>in</strong>em Rechner mit RedHat L<strong>in</strong>ux 8.0 beschrieben werden, wofür<br />

root-Rechte erfor<strong>der</strong>lich s<strong>in</strong>d. Auf SuSE-Systemem kann man sich die Mühe sparen, da e<strong>in</strong>e<br />

fertig übersetze FreeSWAN Version <strong>in</strong> <strong>der</strong> Distribution enthalten ist.<br />

Man hat die Möglichkeit entwe<strong>der</strong> die FreeSWAN-Quellen, o<strong>der</strong> schon kompilierte Red-<br />

Hat B<strong>in</strong>aries5 zu benutzen. Das RPM-Paket, das man hier f<strong>in</strong>det, be<strong>in</strong>haltet allerd<strong>in</strong>gs nur<br />

die Userspace Programme - das Kernelmodul muß man trotzdem selber übersetzen. Das<br />

von uns benutzte Testsystem läuft unter RedHat 8.0, wobei die als ”Server” bezeichnete<br />

Installation gewählt wurde. Zusätzlich zu den vorgegebenen Angaben bei <strong>der</strong> Paketauswahl<br />

wurden aus <strong>der</strong> Gruppe ”Development”, die ”Development Tools” sowie ”Kernel development”<br />

<strong>in</strong>stalliert.<br />

Bau des Kernels Werden das Kernelmodul und die Programme des Userspace von <strong>der</strong><br />

gewählten Distribution nicht mitgeliefert, so muss die Software aus den Sourcen gebaut<br />

werden. Besitzer <strong>der</strong> aktuellen SuSE-Distributionen haben es da leichter, auch wenn nicht<br />

immer das aktuellste FreeSWAN mitgeliefert wird.<br />

Der Start <strong>der</strong> Installation von FreeSWAN beg<strong>in</strong>nt mit dem Download <strong>der</strong> aktuellen<br />

Quellen <strong>in</strong> unserem Fall 1.99 vom FreeSWAN-FTP-Server:<br />

ftp://ftp.xs4all.nl/pub/crypto/freeswan<br />

Danach folgt das Entpacken des Pakets mit ”tar xvzf freeswan-1.99.tar.gz”, was e<strong>in</strong>em<br />

als nächstes die Möglichkeit eröffnet, e<strong>in</strong>en Blick <strong>in</strong> die Datei ”INSTALL” zu werfen (das<br />

sei übrigens jedem empfohlen !). Hierbei fällt bald auf, dass <strong>der</strong> Makefile vier Möglichkeiten<br />

bereithält, wobei <strong>in</strong> jedem Fall zuerst automatisch mit Hilfe des Pakets ”patch” die<br />

Verän<strong>der</strong>ungen im Baum <strong>der</strong> Kernelquellen vorgenommen werden:<br />

• make menugo - Wer diesen Weg wählt, hat alle Möglichkeiten, die man auch mit dem<br />

klassischen make menuconfig hat. Falls die Kernel bisher noch nicht konfiguriert<br />

wurde (falls z.B. die Quellen gerade erst entpackt wurden), bietet sich <strong>der</strong> Weg über<br />

make menugo an.<br />

• make xgo - Das gleiche wie ”menugo” nur dieses mal im graphischen Modus unter<br />

X11.<br />

• make ogo - Für die Puristen unter den Lesern ist diese Möglichkeit beson<strong>der</strong>s <strong>in</strong>teressant,<br />

da sie dem guten alten make config entspricht.<br />

5 ftp://ftp.xs4all.nl/pub/crypto/freeswan/b<strong>in</strong>aries/RedHat-RPMs/2.4.18-24


18.5. IPSEC PRAKTISCH - FREESWAN 265<br />

• make oldgo - ”oldgo” entspricht make oldconfig und übernimmt die aktuelle Kernelkonfiguration<br />

aus “.config” und wählt alle IPsec Optionen aus, wobei IPsec selber<br />

als Modul ipsec.o übersetzt wird.<br />

Bef<strong>in</strong>det sich auf dem System schon e<strong>in</strong> fertig konfigurierter Kernel o<strong>der</strong> hat <strong>der</strong> Adm<strong>in</strong>istrator<br />

ke<strong>in</strong>e Lust alles neu zu übersetzen, dann kann make menumod sehr hilfreich<br />

se<strong>in</strong>. Dieser Befehl br<strong>in</strong>gt den Benutzer <strong>in</strong> die Kernelconfiguration mittels make menuconfig<br />

und kompiliert ausschließlich die Module des Kernels neu, was natürlich voraussetzt,<br />

dass <strong>in</strong> <strong>der</strong> Konfiguration IPsec als Modul ausgewählt wurde (so wie unten gezeigt).<br />

Nachdem <strong>der</strong> Kernel o<strong>der</strong> nur die Module kompiliert und <strong>in</strong>stalliert s<strong>in</strong>d 6 , bef<strong>in</strong>den<br />

sich die Userspace-Programme unter /usr/local/lib/ipsec und unter /usr/local/sb<strong>in</strong>. Die<br />

Konfigurationsdateien ipsec.conf und ipsec.secrets liegen im Verzeichnis /etc.<br />

18.5.3 <strong>E<strong>in</strong></strong>schaltbare Optionen<br />

Nach dem Patchen des Kernels stehen dem Anwen<strong>der</strong> mehrere IPsec Optionen im Kernel<br />

zur Verfügung. Hier sei nur kurz auf <strong>der</strong>en Bedeutung e<strong>in</strong>gegangen. Weitere Details s<strong>in</strong>d<br />

dem entsprechenden RFC2402 [rfc] zu entnehmen.<br />

Übersicht nach make mengo im Bereich ”Network<strong>in</strong>g options”:<br />

01 IP Security Protocol (FreeS/WAN IPSEC)<br />

02 --- IPSec options (FreeS/WAN)<br />

03 [*] IPSEC: IP-<strong>in</strong>-IP encapsulation (tunnel mode)<br />

04 [*] IPSEC: Authenticbation Hea<strong>der</strong><br />

05 [*] HMAC-MD5 authentication algorithm<br />

06 [*] HMAC-SHA1 authentication algorithm<br />

07 [*] IPSEC: Encapsulat<strong>in</strong>g Security Payload<br />

08 [*] 3DES encryption algorithm<br />

09 [*] IPSEC: IP Compression<br />

10 [*] IPSEC Debugg<strong>in</strong>g Option<br />

In <strong>der</strong> Zeile ”1” wird IPsec als Kernelmodul für den aktuellen Kernel generiert. Es<br />

wäre auch möglich es fest e<strong>in</strong>zub<strong>in</strong>den für sichere Kernels, die nicht mit ladbaren Modulen<br />

arbeiten sollen. Zeile ”3” aktiviert den Tunnelmodus, so dass mit IPsec nicht nur<br />

Punkt-zu-Punkt-Verb<strong>in</strong>dungen verschlüsselt werden, son<strong>der</strong>n die L<strong>in</strong>uxmasch<strong>in</strong>en an den<br />

Tunnelenden als Verschlüsselungsgateway für ganze Netze arbeiten. In <strong>der</strong> Zeile ”5” wird die<br />

HMAC MD5 Authentifizierung e<strong>in</strong>geschaltet. Dieses ist notwendig, um e<strong>in</strong>e L<strong>in</strong>uxmasch<strong>in</strong>e<br />

via IPsec z.B. an e<strong>in</strong>e SonicWall Pro anzub<strong>in</strong>den.<br />

Das RFC2104 sagt hierzu: “message authentication codes” (MAC): Mechanismen, um<br />

mit “secret keys” die Authentizität von Informationen zu überprüfen, die über e<strong>in</strong> unsicheres<br />

Medium übermittelt wurden. HMAC ist e<strong>in</strong> Mechanismus zur Authentifizierung von<br />

Nachrichten (ganz allgeme<strong>in</strong>), <strong>der</strong> cryptogaphische “hash” Funktionen benutzt (“H”). Dabei<br />

kann z.B. MD5 o<strong>der</strong> SHA-1 <strong>in</strong> Komb<strong>in</strong>ation mit e<strong>in</strong>em “secret shared key” zum <strong>E<strong>in</strong></strong>satz<br />

kommen, welches <strong>in</strong> Zeile “6” aktiviert wird. Zeile sieben fügt das Transportprotokoll ESP<br />

h<strong>in</strong>zu, welches zum Beg<strong>in</strong>n des Abschnitts erklärt wurden.<br />

Die Verschlüsselung nach tripple-DES - ebenfalls wichtig für die Anb<strong>in</strong>dung an e<strong>in</strong>e<br />

SonicWall Pro- wird <strong>in</strong> Zeile “8” zur Verfügung gestellt. Zeile “9” erlaubt das <strong>E<strong>in</strong></strong>schalten<br />

von Kompression im VPN; was vor allem Geschw<strong>in</strong>digkeitsvorteile bei <strong>der</strong> Übertragung<br />

normaler ungepackter Dateien, jedoch auch Overhead bei bereits komprimierten Daten mit<br />

6 <strong>in</strong> /usr/src/l<strong>in</strong>ux/ rufe man make modules <strong>in</strong>stall auf


266 KAPITEL 18. SICHERES IP<br />

sich br<strong>in</strong>gt. Kompression geht aber auf Kosten <strong>der</strong> CPU und muss bei <strong>der</strong> Kalkulation <strong>der</strong><br />

Leistung <strong>der</strong> Verschlüsselungsgateways e<strong>in</strong>gerechnet werden.<br />

“klipsdebug” option: Ohne diesen Schalter gibt es ke<strong>in</strong> Debugg<strong>in</strong>g. Es ist nützlich, wenn<br />

alles funktioniert, aber von Nachteil, wenn e<strong>in</strong>e Verb<strong>in</strong>dung aus unbekannten Gründen nicht<br />

zustande kommt. Die Datei “INSTALL” hält dazu folgenden Ratschlag bereit: Turn<strong>in</strong>g<br />

“IPSEC Debugg<strong>in</strong>g Option” off may look attractive but is unwise. Diese Optionen schaltet<br />

man am besten komplett e<strong>in</strong>, damit sie später ohne Probleme genutzt werden können. Nicht<br />

alle Optionen werden z.B. geme<strong>in</strong>sam mit <strong>der</strong> Sonic-Wall verwendet (ke<strong>in</strong> IP Compression,<br />

ke<strong>in</strong> HMAC-SHA1 authentication), so dass sie auch weggelassen werden können (wenn nur<br />

e<strong>in</strong>e solche Anwendung erfolgt).<br />

Die INSTALL Datei warnt noch davor bei e<strong>in</strong>em Kernel <strong>der</strong> Version 2.2.x die Option<br />

”[*] IP: advanced router” unter ”Network<strong>in</strong>g options” zu verwenden. Dieses kann entwe<strong>der</strong><br />

direkt beim <strong>der</strong> Konfiguration des Kernels geschehen o<strong>der</strong> nachträglich mit:<br />

echo ′′ 0 ′′ >/proc/sys/net/ipv4/conf/all/rp filter<br />

geschehen. Bei <strong>der</strong> verwendeten RedHat Installation wurde e<strong>in</strong>e entsprechende Warnung<br />

auch bei e<strong>in</strong>em 2.4.18er Kernel ausgegeben<br />

ipsec_setup: Start<strong>in</strong>g FreeS/WAN IPsec 1.99...<br />

ipsec_setup: Us<strong>in</strong>g /lib/modules/2.4.18-24.8.0custom/kernel/net/ipsec/ipsec.o<br />

ipsec_setup: WARNING: eth0 has route filter<strong>in</strong>g turned on, KLIPS may not work<br />

ipsec_setup: (/proc/sys/net/ipv4/conf/eth0/rp_filter = ‘1’, should be 0)<br />

18.5.4 Konfiguration von IPsec-Verb<strong>in</strong>dungen<br />

Die zentrale Konfigurationsdatei ist ipsec.conf. Hier werden alle Verb<strong>in</strong>dungsdaten für die<br />

e<strong>in</strong>zelnen Verschlüsselungstunnel festgelegt. Aufbau <strong>der</strong> Konfigurationsdatei - Basiskonfiguration:<br />

# basic configuration<br />

config setup<br />

# THIS SETTING MUST BE CORRECT or almost noth<strong>in</strong>g will work;<br />

# %defaultroute is okay for most simple cases.<br />

#<strong>in</strong>terfaces=%defaultroute<br />

<strong>in</strong>terfaces="ipsec0=eth1"<br />

# Debug-logg<strong>in</strong>g controls: "none" for (almost) none, "all" for lots.<br />

klipsdebug=none<br />

plutodebug=none<br />

# Use auto= parameters <strong>in</strong> conn descriptions to control startup actions.<br />

plutoload=%search<br />

plutostart=%search<br />

# Close down old connection when new one us<strong>in</strong>g same ID shows up.<br />

uniqueids=yes<br />

Basiskonfiguration für alle Verb<strong>in</strong>dungen<br />

# defaults for subsequent connection descriptions<br />

# (mostly to fix <strong>in</strong>ternal defaults which, <strong>in</strong> retrospect, were badly chosen)<br />

conn %default<br />

key<strong>in</strong>gtries=0<br />

disablearrivalcheck=no<br />

authby=rsasig


18.6. KOMMERZIELLE VPN-LÖSUNGEN 267<br />

# leftrsasigkey=%dns<br />

# rightrsasigkey=%dns<br />

<strong>E<strong>in</strong></strong>zelne Verb<strong>in</strong>dungen, hier kann es viele Teile geben.<br />

conn freeswan<br />

auth=esp<br />

authby=secret<br />

pfs=yes<br />

# esp=3des-hamac-md5<br />

esp=hmac-md5-96<br />

# Left security gateway, subnet beh<strong>in</strong>d it, next hop toward right.<br />

left=172.16.0.1<br />

leftid=172.16.0.1<br />

#left=10.10.156.2<br />

leftsubnet=10.10.156.0/22<br />

# leftnexthop=10.10.156.1<br />

18.6 Kommerzielle VPN-Lösungen<br />

18.6.1 Cisco-VPN<br />

An vielen Universitäten und <strong>in</strong> vielen Firmen sche<strong>in</strong>t sich die IPsec-Implementation von<br />

Cisco durchzusetzen. Deshalb soll <strong>der</strong> L<strong>in</strong>ux-Client an dieser Stelle vorgestellt werden.<br />

Bei <strong>der</strong> Cisco-Lösung handelt es sich um e<strong>in</strong>e zentrale Hardwarekomponente <strong>der</strong> Cisco<br />

VPN3000-Serie. Diese agiert als Verschlüsselungs- und Authentifizierungs- Gateway für<br />

L<strong>in</strong>ux-, W<strong>in</strong>dows- o<strong>der</strong> Mac<strong>in</strong>tosh-Clients. Die Clients s<strong>in</strong>d <strong>in</strong> Software implementiert. Derzeitig<br />

ist die Softwareversion 3.7 aktuell, von <strong>der</strong> Benutzung älterer wird wegen e<strong>in</strong>iger<br />

Sicherheitsprobleme abgeraten.<br />

Um den Client unter L<strong>in</strong>ux nutzen zu können, muss dieser für den aktuellen Kernel<br />

kompiliert werden. Das kl<strong>in</strong>gt nach freier Software, die es nicht ist, da e<strong>in</strong>fach nur e<strong>in</strong><br />

Wrapper generiert wird, <strong>der</strong> den mitgelieferten Object-Code für den entsprechenden Kernel<br />

ladbar anpasst. In <strong>der</strong> Datei <strong>in</strong>terceptor.c lassen sich e<strong>in</strong>ige Anpassungen vornehmen, was<br />

das Sperren von Devices nach dem Start des Clients anbetrifft.<br />

Um das Kernelmodul zu übersetzen, müssen die passenden Kernelsources <strong>in</strong>stalliert<br />

se<strong>in</strong>. Anschliessend entpackt man das TAR-Archiv des Clients und wechselt <strong>in</strong> das Verzeichnis.<br />

Mit dem Befehl ./vpn <strong>in</strong>stall wird die Installation und das Bauen des Moduls<br />

gestartet. Im dann ersche<strong>in</strong>enden Dialog wird man aufgefor<strong>der</strong>t das Zielverzeichnis für die<br />

erzeugten ausführbaren Dateien (das betrifft die Programme vpnclient, cisco cert mgr,<br />

cvpnd und ipseclog) anzugeben und die Autostartoption - für das Laden des notwendigen<br />

Kernelmoduls - festzulegen. Weiterh<strong>in</strong> wird das Verzeichnis für die Kernelsources<br />

abgefragt. Überlichweise lassen sich die vorgeschlagenen <strong>E<strong>in</strong></strong>stellungen direkt übernehmen.<br />

Am Ende des Installationsvorganges wird dr<strong>in</strong>gend dazu geraten die Zugriffsrechte für das<br />

/etc/CiscoSystemsVPNClient-Verzeichnis restriktiver zu handhaben. Hier liegen nicht nur<br />

die Konfigurationsdateien, son<strong>der</strong>n eventuelle Zertifikate und auf jeden Fall die Profile.<br />

Mit dem Befehl /etc/<strong>in</strong>it.d/vpnclient <strong>in</strong>it start kann <strong>der</strong> VPN-Client <strong>in</strong>itialisiert<br />

werden. Es wird sodann das Kernelmodul geladen. Die Vershlüsselungsverb<strong>in</strong>dung wird<br />

mittels des <strong>in</strong>teraktiven Kommandozeilen-Tools (vpnclient connect) vpnprofile <strong>in</strong>itiiert.<br />

“vpnprofile” verweist auf e<strong>in</strong>es <strong>der</strong> unterhalb des Cisco-Konfigurationsverezichnisses


268 KAPITEL 18. SICHERES IP<br />

im Unterverzeichnis Profile abgelegten Benutzungsprofile. Trägt man <strong>in</strong> diese die Credentials<br />

zur Authentifizierung (Benutzername und Passwort) e<strong>in</strong>, kann die Verb<strong>in</strong>dung auch<br />

automatisch im H<strong>in</strong>tergrund z.B. nach <strong>der</strong> DSL-<strong>E<strong>in</strong></strong>wahl im Skript ip-up.local aufgebaut<br />

werden.<br />

<strong>E<strong>in</strong></strong>e typische Profile-Datei (Im Beispiel bleibend vpnprofile.pcf), ist abgelegt im Verzeichnis:<br />

/etc/CiscoSystemsVPNClient/Profile<br />

und sieht wie folgt aus:<br />

[ma<strong>in</strong>]<br />

Description=VPN zu e<strong>in</strong>em Cisco IPsec-Gateway<br />

Host=ipsec-gw.mydoma<strong>in</strong>.org<br />

AuthType=1<br />

GroupName=<br />

GroupPwd=<br />

EnableISPConnect=0<br />

ISPConnectType=0<br />

ISPConnect=<br />

ISPCommand=<br />

Username=<br />

UserPassword=<br />

SaveUserPassword=0<br />

EnableBackup=0<br />

BackupServer=<br />

EnableNat=0<br />

CertStore=0<br />

CertName=<br />

CertPath=<br />

CertSubjectName=<br />

CertSerialHash=00000000000000000000000000000000<br />

DHGroup=2<br />

ForceKeepAlives=0<br />

Bei <strong>der</strong> Option Host muss <strong>der</strong> entsprechende Cisco-VPN-Server e<strong>in</strong>getragen werden.<br />

GroupName und GroupPwd erlauben die Unterscheidung von Benutzerkreisen, die auf e<strong>in</strong><br />

Verschlüsselungsgateway zugreifen. Mit <strong>der</strong> Option Username wird <strong>der</strong> eigene Benutzname<br />

e<strong>in</strong>getragen. Zusätzlich kann man die Option UserPassword e<strong>in</strong>fügen. Dort wird dann<br />

das entsprechende Passwort <strong>in</strong> Klartext abgelegt. Nach <strong>der</strong> ersten Verb<strong>in</strong>dung wird dieses<br />

Passwort wie<strong>der</strong> gelöscht und durch e<strong>in</strong> Verschüsseltes ersetzt, das gleiche passiert beim<br />

Gruppenpasswort.<br />

Wenn <strong>der</strong> Cisco VPN-Client auf e<strong>in</strong>em Rechner betrieben werden soll, <strong>der</strong> h<strong>in</strong>ter e<strong>in</strong>er<br />

Firewall liegt, muss dafür gesorgt se<strong>in</strong>, dass alle für die IPsec-Verb<strong>in</strong>dung erfor<strong>der</strong>lichen<br />

Datenpakete durchgelassen werden. Dazu zählen das Transportprotokoll ESP mit <strong>der</strong> Protokollnummer<br />

50 und UDP-Pakete auf Port 500. Wenn das IPsec/UDP verwendet wird,<br />

muss <strong>der</strong> entsprechende UDP-Port (defaultmäßig 10000) freigeschaltet se<strong>in</strong>.<br />

Es gibt e<strong>in</strong>e für alle Profile geme<strong>in</strong>sam verwendete Konfigurationsdatei (vpnclient.<strong>in</strong>i),<br />

welche den Umfang <strong>der</strong> geschriebenen Log-Informationen und die Lage <strong>der</strong> ausführbaren<br />

Programme bestimmt.<br />

Lei<strong>der</strong> ist die Implementation des Cisco-IPsec nicht beson<strong>der</strong>s schön, so dass die IPsec<br />

Interfaces und entsprechende Rout<strong>in</strong>ge<strong>in</strong>träge nicht mit den üblichen L<strong>in</strong>ux-Tools (ifconfig,


18.6. KOMMERZIELLE VPN-LÖSUNGEN 269<br />

netstat) angezeigt werden. Diese Informationen erhält man mittels vpnclient stat o<strong>der</strong> bekommt<br />

sie bei <strong>in</strong>teraktiver Benutzung auf <strong>der</strong> Kommandozeile ausgegeben. Der Statusbefehl<br />

liefert weitere Zusatz<strong>in</strong>formationen wie Angaben zur Verschlüsselung und an<strong>der</strong>e verb<strong>in</strong>dungsspezifische<br />

Daten zu bestehenden IPsec-Verb<strong>in</strong>dungen. Genausowenig läßt sich <strong>der</strong><br />

Datenverkehr s<strong>in</strong>nvoll mit ethereal o<strong>der</strong> tcpdump analysieren: In e<strong>in</strong>e Richtung werden<br />

verschlüsselte, <strong>in</strong> die an<strong>der</strong>e Richtung unverschlüsselte Datenpakete angezeigt. Das hängt<br />

wohl damit zusammen, dass sich das Kernelmodul sehr tief e<strong>in</strong>kl<strong>in</strong>kt, um bei Bedarf den<br />

Datenverkehr über weitere Interfaces zu unterb<strong>in</strong>den.<br />

<strong>E<strong>in</strong></strong> Vor- aber auch Nachteil des Cisco-Clients liegt <strong>in</strong> se<strong>in</strong>er zentralen Steuerung, die es<br />

erlaubt vom Benutzer <strong>in</strong> <strong>der</strong> vpnclient.<strong>in</strong>i getroffene <strong>E<strong>in</strong></strong>stellungen zu überschreiben. Das<br />

Verbot e<strong>in</strong>es LAN-Zugriffes und damit implizit das Aufsetzen e<strong>in</strong>es Masquerad<strong>in</strong>g-Routers<br />

kann zentral vom Verschlüsselungsgateway erzwungen werden, <strong>in</strong> Abhängigkeit davon, wie<br />

<strong>der</strong> zuständige Adm<strong>in</strong>istrator die Policies e<strong>in</strong>stellt. Durch das Sperren weiterer Interfaces<br />

und den Zugriff auf das lokale Netz erreicht man e<strong>in</strong>e höhere Sicherheit, jedoch kann dann<br />

z.B. schon ke<strong>in</strong> lokaler <strong>Netzwerk</strong>drucker mehr verwendet werden, wenn <strong>der</strong> Verschlüsseltungstunnel<br />

aktiv ist. Dieses mag zwar für spezielle Road-Warrior-<strong>E<strong>in</strong></strong>sätze nicht von Bedeutung<br />

se<strong>in</strong>, kann aber <strong>in</strong> an<strong>der</strong>en Szenarien für gewaltigen Overhead sorgen, wenn alle<br />

Daten ausnahmslos über das Gateway geschleust werden. Im Extremfall verdoppelt sich <strong>der</strong><br />

IP-Traffic im eigenen Netz. <strong>E<strong>in</strong></strong> weiteres Problem ergibt sich durch die möglichen Benennungen<br />

von Interfaces: In e<strong>in</strong>igen Distributionen werden Funk-Karten mit “wlan0” bezeichnet,<br />

die dem Client nicht bekannt s<strong>in</strong>d. Damit ist e<strong>in</strong> Aufbau e<strong>in</strong>er Verschlüsselungsverb<strong>in</strong>dung<br />

über diese Interfaces unmöglich. Abhilfe für beide Probleme schafft e<strong>in</strong> Blick <strong>in</strong> den Code.<br />

Ob die vorgeschlagenen Än<strong>der</strong>ungen auch mit <strong>der</strong> Cisco-Lizenz vere<strong>in</strong>bar s<strong>in</strong>d, muss <strong>der</strong><br />

Anwen<strong>der</strong> jeweils für sich klären.<br />

Jedoch kann durch e<strong>in</strong>ige Än<strong>der</strong>ungen an <strong>der</strong> <strong>in</strong>terceptor.c die o.g. Problematik umgangen<br />

werden wie das nachstehende Diff zeigt:<br />

*** ../test/vpnclient/<strong>in</strong>terceptor.c 2002-10-22 05:47:21.000000000 +0200<br />

--- <strong>in</strong>terceptor.c 2003-03-04 13:39:42.000000000 +0100<br />

*************** static <strong>in</strong>t handle_vpnup()<br />

*** 315,320 ****<br />

--- 315,332 ---if<br />

(strcmp(LINUX_VPN_IFNAME, dp->name) == 0) {<br />

cont<strong>in</strong>ue;<br />

}<br />

+<br />

+ if ((strcmp("eth1", dp->name) == 0) ||<br />

+ (strcmp("eth2", dp->name) == 0) ||<br />

+ (strcmp("ppp0", dp->name) == 0) ||<br />

+ (strcmp("ppp1", dp->name) == 0) ||<br />

+ (strcmp("ipsec0", dp->name) == 0) ||<br />

+ (strcmp("ipsec1", dp->name) == 0) ||<br />

+ (strcmp("ipsec2", dp->name) == 0)) {<br />

+ cont<strong>in</strong>ue;<br />

+ }<br />

+<br />

+<br />

if (strcmp("lo", dp->name) == 0) {<br />

/*b<strong>in</strong>d to loopback so we can <strong>in</strong>ject UDP packets<br />

*for IPC, but don’t change the xmit function


270 KAPITEL 18. SICHERES IP<br />

*************** static <strong>in</strong>t recv_ip_packet_handler(struct<br />

*** 509,514 ****<br />

--- 521,540 ---struct<br />

ethhdr ppp_dummy_buf;<br />

+<br />

+ if ((strcmp("eth1", dev->name) == 0) ||<br />

+ (strcmp("eth2", dev->name) == 0) ||<br />

+ (strcmp("ppp0", dev->name) == 0) ||<br />

+ (strcmp("ppp1", dev->name) == 0) ||<br />

+ (strcmp("ipsec0", dev->name) == 0) ||<br />

+ (strcmp("ipsec1", dev->name) == 0) ||<br />

+ (strcmp("ipsec2", dev->name) == 0))<br />

+ {<br />

+ rc2 = orig<strong>in</strong>al_ip_handler.orig_handler_func(skb, dev, type);<br />

+ goto exit_gracefully;<br />

+ }<br />

+<br />

+<br />

if (strcmp("lo", dev->name) == 0) {<br />

/* grab the rout<strong>in</strong>g entry for loopback packets, <strong>in</strong> case we need<br />

* to send some later*/<br />

18.6.2 Verwendung <strong>der</strong> Cisco-Tools<br />

vpnclient ist das Haupttool <strong>der</strong> Cisco-VPN-Lösung. Ohne Parameter aufgerufen, werden<br />

dem Benutzer gleich mal alle Kommandozeilenparameter mitgeteilt (ja, auch das L<strong>in</strong>ux<br />

übliche “–help” funktioniert; schön, dass Cisco diesen Standard e<strong>in</strong>hält).<br />

Der Client hat drei ”Haupt” Optionen:<br />

connect Hierbei ist es zw<strong>in</strong>gend erfor<strong>der</strong>lich als nächste Option e<strong>in</strong> Profil anzugeben,<br />

das sich als Datei unter /etc/CiscoSystemsVPNClient/Profiles bef<strong>in</strong>det (<strong>in</strong> unserem<br />

Beispiel “goemobile”). Wer beim Start nicht nach se<strong>in</strong>em Benutzernamen und Passwort<br />

gefragt werden möchte, sollte nach dem Profil noch se<strong>in</strong>en Usernamen übergeben. Man<br />

kann auch noch das Passwort übergeben, was aber nicht zu empfehlen ist, da es auf e<strong>in</strong>er<br />

Masch<strong>in</strong>e mit mehreren Benutzern sehr leich ausspioniert werden kann:<br />

l<strong>in</strong>ux:/etc/CiscoSystemsVPNClient/Profiles # ps aux|grep vpnclient<br />

root 2004 0.0 1.0 1756 680 pts/1 S 18:49 0:00<br />

/usr/local/b<strong>in</strong>/vpnclient connect goemobile user test@realm pwd<br />

<br />

Normalerweise kann man Bentuzernamen und Passwort <strong>in</strong> <strong>der</strong> Profildatei speichen, was<br />

aber serverseitig (!) unterbunden werden kann. Wie s<strong>in</strong>nvoll das ist, bleibt dah<strong>in</strong>gestellt -<br />

wenn man die oben genannte Sicherheitslücke <strong>in</strong> Betracht zieht. Der Aufruf von vpnclient<br />

connect user führt letztendlich zu:<br />

Cisco Systems VPN Client Version 3.7 (Rel)<br />

Copyright (C) 1998-2002 Cisco Systems, Inc. All Rights Reserved.


18.6. KOMMERZIELLE VPN-LÖSUNGEN 271<br />

Client Type(s): L<strong>in</strong>ux<br />

Runn<strong>in</strong>g on: L<strong>in</strong>ux 2.4.19 #8 Sat Nov 9 12:20:38 PST 2002 i586<br />

Initializ<strong>in</strong>g the IPSec l<strong>in</strong>k.<br />

Contact<strong>in</strong>g the gateway at 10.100.0.1<br />

Authenticat<strong>in</strong>g user.<br />

Your l<strong>in</strong>k is secure.<br />

IPSec tunnel <strong>in</strong>formation.<br />

Client address: 134.76.n.n<br />

Server address: 10.100.n.n<br />

Encryption: 168-bit 3-DES<br />

Authentication: HMAC-MD5<br />

IP Compression: None<br />

NAT passthrough is <strong>in</strong>active<br />

Local LAN Access is disabled<br />

Wie hier deutlich zu sehen ist, ist die zugewiesene Adresse e<strong>in</strong>e öffentliche Adresse,<br />

während die Gateway Adresse, wie die Adresse <strong>der</strong> Funklankarte e<strong>in</strong>e private ist. Der Cisco<br />

führt <strong>in</strong> diesem Beispiel also DirectNAT durch. In diesem Fall sieht man, dass ”local LAN”<br />

ausgeschaltet wurde. Das allerd<strong>in</strong>gs nicht anhand <strong>der</strong> Profildatei son<strong>der</strong>n von Seiten des<br />

Adm<strong>in</strong>istrators auf dem Cisco3000. Aber was solls, <strong>in</strong>terceptor.c macht e<strong>in</strong>iges möglich !<br />

Wenn man sich nun <strong>in</strong> e<strong>in</strong>em Netz h<strong>in</strong>ter e<strong>in</strong>er Firewall bef<strong>in</strong>det und das VPN-Gateway<br />

den Rechner selber direkt nicht erreicht kann, kommt “NAT passthrough” <strong>in</strong>s Spiel. Das<br />

Ergebnis sieht dann folgen<strong>der</strong>maßen aus:<br />

IPSec tunnel <strong>in</strong>formation.<br />

Client address: 134.76.n.n<br />

Server address: 134.76.n.n<br />

Encryption: 168-bit 3-DES<br />

Authentication: HMAC-MD5<br />

IP Compression: None<br />

NAT passthrough is active on port UDP 10000<br />

Local LAN Access is enabled<br />

disconnect Diese Option ist schnell erklärt: vpnclient disconnect beendet e<strong>in</strong>e bestehende<br />

Verb<strong>in</strong>dung.<br />

stat Was man im Hause Cisco “Statistik” zu nennen sche<strong>in</strong>t, hat den Namen eigentlich<br />

nicht verdient:<br />

IPSec tunnel <strong>in</strong>formation.<br />

Connection Entry: goemobile<br />

Client address: 134.76.n.n<br />

Server address: 10.100.n.n<br />

Encryption: 168-bit 3-DES<br />

Authentication: HMAC-MD5<br />

IP Compression: None<br />

NAT passthrough is <strong>in</strong>active<br />

Local LAN Access is enabled


272 KAPITEL 18. SICHERES IP<br />

VPN traffic summary.<br />

Time connected: 0 day(s), 00:09.31<br />

Bytes <strong>in</strong>: 84443<br />

Bytes out: 115760<br />

Packets encrypted: 816<br />

Packets decrypted: 671<br />

Packets bypassed: 19<br />

Packets discarded: 7<br />

Configured routes.<br />

Secured Network Dest<strong>in</strong>ation Netmask Bytes<br />

* 10.100.n.n 255.255.255.255 0<br />

* 0.0.0.0 0.0.0.0 157753<br />

Local Network Dest<strong>in</strong>ation Netmask<br />

10.100.n.n 255.255.0.0<br />

Neben dem vpnclient Werkzeug existiert e<strong>in</strong> nettes kle<strong>in</strong>es Programm zum Schreiben<br />

von Logfiles. Dessen Verwendung ist zwar etwas ungewöhnlich, aber das Pr<strong>in</strong>zip funktioniert.<br />

Bevor man sich entscheidet, e<strong>in</strong>en Logfile schreiben zu lassen (eigentlich unklar, warum<br />

nicht gleich an den syslogd übergeben wird), kann man entscheiden, was und wieviel man<br />

mitschreiben lassen möchte. Die <strong>E<strong>in</strong></strong>stellungen hierzu muss man <strong>in</strong> <strong>der</strong> Datei:<br />

/etc/CiscoSystemsVPNClient/vpnclient.<strong>in</strong>i<br />

vornehmen. Die Variable “EnableLog” muss zum erfolgreichen Logg<strong>in</strong> auf 1 gesetzt se<strong>in</strong>.<br />

Die e<strong>in</strong>zelnen Optionen s<strong>in</strong>d relativ gut selbsterklärend. Dabei ist e<strong>in</strong> hoher “level” mit<br />

ausführlichen Mitteilungen des Klienten gleichzusetzen.<br />

Das Schreiben des Logfiles startet man letztendlich mit: ipseclog logname& - ne<strong>in</strong>,<br />

das Programm geht nicht automatisch <strong>in</strong> den H<strong>in</strong>tergrund. Auch hier hat sich Cisco e<strong>in</strong><br />

eigenartiges Format ausgedacht, was nur etwas gewöhnungsbedürftig ist, aber den Zweck<br />

erfüllt. Wenn man den Cisco Klienten zusammen mit Zertifikaten e<strong>in</strong>setzt, kommt man<br />

an <strong>der</strong> Benutzung des “Zertifikate Managers” (cisco cert mgr) nicht vorbei. Dieses kann<br />

nützlich se<strong>in</strong>, wenn man mit FreeSWAN auf den Cisco-Server zugreifen möchte. Erklärungen<br />

zu Details f<strong>in</strong>det man bei Cisco.<br />

18.6.3 <strong>E<strong>in</strong></strong>satzszenarien<br />

Der Cisco-VPN-Router wird zur Zeit beson<strong>der</strong>s <strong>in</strong> Funk-LANs e<strong>in</strong>gesetzt. Diese müssen<br />

um e<strong>in</strong>iges besser gegen Mitlesen des Datenverkehrs abgesichert werden, als drahtgebundene<br />

Installationen. Die Ausbreitung <strong>der</strong> Funkwellen läßt sich bei weitem nicht so gut<br />

überblicken, wie die von TP-Kabeln. Die Funk-LAN-eigenen Sicherungssysteme s<strong>in</strong>d nicht<br />

beson<strong>der</strong>s ernstzunehmen, weshalb e<strong>in</strong> an<strong>der</strong>er Ansatz gewählt wird: Man baut e<strong>in</strong> offenes<br />

privates Netz auf, über das die Teilnehmer nach dynamischer IP-Zuweisung per DHCP<br />

e<strong>in</strong>en Verschlüsselungstunnel über den Cisco-Router aufbauen und erst so <strong>in</strong> das ”rich-<br />

tige” Netz kommen. Die Masch<strong>in</strong>e bildet den e<strong>in</strong>zigen<br />

Übergang und übernimmt neben<br />

den Authentifizierungs- auch Rout<strong>in</strong>gaufgaben. Kommunizieren die e<strong>in</strong>zelnen Clients kaum<br />

selbst untere<strong>in</strong>an<strong>der</strong>, so ist dieses Setup sehr ökonomisch: Es existiert e<strong>in</strong>e e<strong>in</strong>heitliche Software<br />

für unterschiedliche Clients, die recht bequem zu benutzen ist. Die Lizenzgebühren


18.7. LITERATUR 273<br />

werden über die Anschaffung <strong>der</strong> Hardware 7 fällig, die Clients können <strong>in</strong> beliebiger Zahl<br />

benutzt werden.<br />

<strong>E<strong>in</strong></strong> ähnliches Szenario ergibt sich durch die Anb<strong>in</strong>dung von Aussendienstmitarbeitern<br />

über das unsichere Internet: Sie können auf diese Weise direkt <strong>in</strong> das jeweilige <strong>Netzwerk</strong><br />

ihrer Abteilung o<strong>der</strong> Firma transparent e<strong>in</strong>gebunden werden.<br />

Wenn man mit Zertifikaten statt <strong>der</strong> userbasierten Authentifizierung arbeitet, kann<br />

<strong>der</strong> Cisco-VPN-Server auch mit FreeSWAN zusammenarbeiten. Inwieweit sich <strong>der</strong> höhere<br />

<strong>E<strong>in</strong></strong>richtungsaufwand lohnt, muss je<strong>der</strong> für sich selbst festlegen. Stellt man ke<strong>in</strong>e beson<strong>der</strong>en<br />

Anfor<strong>der</strong>ungen, dann ist <strong>der</strong> <strong>E<strong>in</strong></strong>satz <strong>der</strong> Orig<strong>in</strong>alsoftware die e<strong>in</strong>fachere Wahl (beson<strong>der</strong>s<br />

da, wo ke<strong>in</strong>e Extrakosten für den Client anfallen).<br />

18.6.4 Fazit<br />

Der Cisco-VPN-Client basiert zwar wie z.B. FreeSWAN auf <strong>der</strong> identischen Technologie,<br />

jedoch s<strong>in</strong>d die Unterschiede so gross, dass beide nicht <strong>in</strong>teroperabel s<strong>in</strong>d. Beide Verfahren<br />

scheiden sich bereits im Authentifizierungsansatz: FreeSWAN arbeitet mit hostbasierten<br />

Schlüsseln unabhängig von den auf dem jeweiligen Rechner arbeitenden Usern. Der Cisco-<br />

Client arbeitet mit userbasierten Credentials, die unabhängig von <strong>der</strong> darunterliegenden<br />

Hardware funktionieren. Im klassischen Road-Warrior-<strong>E<strong>in</strong></strong>satz spielt dieser Unterschied ke<strong>in</strong>e<br />

wesentlich Rolle, da Masch<strong>in</strong>e und Benutzer identisch s<strong>in</strong>d. Vom <strong>E<strong>in</strong></strong>satzszenario eignet<br />

sich <strong>der</strong> vorgestellte Cisco-Client nur für den Road-Warrior o<strong>der</strong> den Rechner im lokalen<br />

Netz, die kaum Daten mite<strong>in</strong>an<strong>der</strong> austauschen, da <strong>der</strong> gesamte Verkehr jeweils über das<br />

Cisco-IPsec-Gateway abgewickelt wird.<br />

Von <strong>der</strong> Konzeption her bietet sich deshalb das hier vorgestellte Modell nicht dafür<br />

an, Verschlüsselungstunnel für ganze Netze e<strong>in</strong>zelner Betriebsteile zu bauen. Hierfür gibt es<br />

entwe<strong>der</strong> spezielle Hardware, die diese Aufgabe besser erfüllen kann o<strong>der</strong> die GPL-basierten<br />

Verschlüsselungstunnel CIPE o<strong>der</strong> FreeSWAN.<br />

Am Ende bleibt die Frage nach <strong>der</strong> Sicherheit <strong>der</strong> Cisco-VPN-Lösung. Der entscheidende<br />

Code liegt im B<strong>in</strong>ärformat vor und kann nicht von je<strong>der</strong>mann e<strong>in</strong>gesehen werden.<br />

<strong>E<strong>in</strong></strong> weiteres Problem zeigt sich mit <strong>der</strong> “ Öffnung” des Interceptors: Damit lassen sich die<br />

Vorgaben des VPN-Adm<strong>in</strong>istrators aushebeln, womit zum<strong>in</strong>dest diese Sicherheitsdimension<br />

nicht mehr wirklich gesteuert werden kann. Weiterh<strong>in</strong> verhält sich <strong>der</strong> Client mit se<strong>in</strong>en Interfaces<br />

aus Adm<strong>in</strong>istratorensicht ärgerlich, weil die Standardtools nicht <strong>in</strong> <strong>der</strong> gewohnten<br />

Weise e<strong>in</strong>gesetzt werden können.<br />

18.7 Literatur<br />

Cisco:<br />

http://www.cisco.com/univercd/cc/td/doc/product/vpn/client/rel3 7/cli3 7/certs.htm<br />

7 <strong>der</strong>en Kosten liegen bei ca. 16.000 Euro


274 KAPITEL 18. SICHERES IP


Kapitel 19<br />

Firewall<br />

19.1 Aufbau<br />

Der Begriff ”firewall” bezeichnet e<strong>in</strong>en (speziell konfigurierten) Computer, <strong>der</strong> mittels entsprechen<strong>der</strong><br />

Software (auch diese wird häufig als firewall bezeichnet) den Strom <strong>der</strong> Verb<strong>in</strong>dungspakete<br />

(durch mehrere Interfaces) regelt. Dieses Konzept ist recht alt (ca. 1985),<br />

daher ist auch L<strong>in</strong>ux seit langer Zeit als firewall nutzbar.<br />

Mit <strong>der</strong> neuen Kernelgeneration wurde e<strong>in</strong>e neue TCP/IP Stack Implementation e<strong>in</strong>geführt<br />

und e<strong>in</strong>ige <strong>der</strong> bekannten Programme wie ipcha<strong>in</strong>s und ipfwadm durch Kernelmodule<br />

und Tools aus dem netfilter Paket ersetzt. Vorhandene Skripte lassen sich aber relativ<br />

leicht anpassen.<br />

_____<br />

/ \<br />

Incom<strong>in</strong>g -->[Rout<strong>in</strong>g ]--->|FORWARD|-------> Outgo<strong>in</strong>g<br />

[Decision] \_____/ ^<br />

| |<br />

v ____<br />

___ / \<br />

/ \ |OUTPUT|<br />

|INPUT| \____/<br />

\___/ ^<br />

| |<br />

----> Local Process ----<br />

Pakete die über e<strong>in</strong> Netz<strong>in</strong>terface e<strong>in</strong>treffen, s<strong>in</strong>d entwe<strong>der</strong> an die firewall selbst gerichtet<br />

(INPUT) o<strong>der</strong> sollen an e<strong>in</strong>en an<strong>der</strong>en Rechner weitergeleitet werden (FORWARD); lokal<br />

erzeugte Pakete durchlaufen OUTPUT, bevor sie gesendet werden.<br />

Jedes <strong>der</strong> angedeuteten Ovale stellt e<strong>in</strong>e ”cha<strong>in</strong>” dar, die jeweils e<strong>in</strong>e Menge von Regeln<br />

enthält. Wenn e<strong>in</strong> Pakethea<strong>der</strong> auf e<strong>in</strong>e <strong>der</strong> Regeln zutrifft, gibt diese an, wie weiter mit<br />

dem Paket zu verfahren ist. Passt ke<strong>in</strong>e <strong>der</strong> Regeln e<strong>in</strong>er cha<strong>in</strong>, wird die ”policy” <strong>der</strong> cha<strong>in</strong><br />

verwendet. <strong>E<strong>in</strong></strong>e e<strong>in</strong>fache Regel könnte so aussehen:<br />

target prot opt source dest<strong>in</strong>ation<br />

ACCEPT all -- anywhere anywhere<br />

Diese recht nutzlose Regel akzeptiert alle Pakete, unabhängig von Protokoll sowie Ursprung<br />

und Ziel. Das target könnte auch REJECT, DROP o<strong>der</strong> FORWARD se<strong>in</strong>, o<strong>der</strong><br />

275


276 KAPITEL 19. FIREWALL<br />

allgeme<strong>in</strong> <strong>der</strong> Name e<strong>in</strong>er cha<strong>in</strong> (die vordef<strong>in</strong>ierten targets s<strong>in</strong>d <strong>in</strong> Grossbuchstaben). Alle<br />

an<strong>der</strong>en Datenfel<strong>der</strong> zeigen hier ”menschenlesbare” Schlüsselworte (sofern dieses Verhalten<br />

nicht durch Zusatzparameter unterdrückt wird), so fasst z.B. ”all” die Menge aller Protokolle<br />

zusammen; alternativ kann man e<strong>in</strong>en e<strong>in</strong>zelnen Namen (z.B. tcp, siehe /etc/protocols)<br />

bzw. den entsprechenden numerischen Wert angeben. Letztlich kann man durch e<strong>in</strong> vorangestelltes<br />

”!” die Komplementmenge wählen (z.B. !icmp), diese Möglichkeit besteht auch<br />

bei vielen an<strong>der</strong>en Schaltern. Ebenso ist ”anywhere” nur e<strong>in</strong> an<strong>der</strong>er Ausdruck für die<br />

Netzmaske 0.0.0.0/0.<br />

19.2 <strong>E<strong>in</strong></strong>- und Austragen von cha<strong>in</strong>s und Filter-Regeln<br />

iptables wird meistens mit recht vielen Argumenten aufgerufen, zum Beispiel können Regeln<br />

<strong>in</strong> den verschiedenen cha<strong>in</strong>s e<strong>in</strong>getragen, gelöscht und verän<strong>der</strong>t werden. Die vordef<strong>in</strong>ierten<br />

”cha<strong>in</strong>s” (<strong>in</strong> Großbuchstaben) können jedoch nicht gelöscht werden.<br />

1. Alle Regeln <strong>in</strong> e<strong>in</strong>er cha<strong>in</strong> listen (-L).<br />

2. Alle Regeln <strong>in</strong> e<strong>in</strong>er cha<strong>in</strong> löschen (-F).<br />

3. Alle Pakete und Paketzähler <strong>in</strong> <strong>der</strong> cha<strong>in</strong> zurücksetzen (-Z).<br />

4. <strong>E<strong>in</strong></strong>e neue cha<strong>in</strong> erzeugen (-N).<br />

5. Die Policy für e<strong>in</strong>e e<strong>in</strong>gebaute cha<strong>in</strong> än<strong>der</strong>n (-P).<br />

6. <strong>E<strong>in</strong></strong>e leere cha<strong>in</strong> löschen (-X).<br />

Es existieren mehrere Möglichkeiten, e<strong>in</strong>e Regel <strong>in</strong> e<strong>in</strong>er cha<strong>in</strong> zu verän<strong>der</strong>n:<br />

1. <strong>E<strong>in</strong></strong>e Regel <strong>in</strong> e<strong>in</strong>er cha<strong>in</strong> e<strong>in</strong>fügen (<strong>in</strong>sert, d.h. oben <strong>in</strong> die Liste e<strong>in</strong>hängen) (-I).<br />

2. <strong>E<strong>in</strong></strong>e Regel an e<strong>in</strong>e cha<strong>in</strong> anfügen (append, d.h. unten <strong>in</strong> die Liste e<strong>in</strong>fügen) (-A).<br />

3. <strong>E<strong>in</strong></strong>e Regel <strong>in</strong> e<strong>in</strong>er cha<strong>in</strong> ersetzen (replace) (-R).<br />

4. <strong>E<strong>in</strong></strong>e (bzw. die erste passende) Regel <strong>in</strong> e<strong>in</strong>er cha<strong>in</strong> löschen (delete) (-D).<br />

19.2.1 Pakete genauer spezifizieren<br />

Die meisten Regeln bestehen aus e<strong>in</strong>er (beliebigen) Komb<strong>in</strong>ation <strong>der</strong> folgenden Parameter:


19.2. EIN- UND AUSTRAGEN VON CHAINS UND FILTER-REGELN 277<br />

”-p, –protocol [!] protocol”:<br />

”protocol” ist e<strong>in</strong> Name aus /etc/protocols, <strong>der</strong> entsprechende numerische<br />

Wert o<strong>der</strong> ’all’<br />

”-s, –source [!] address[/netmask]” und ”-d, –dest<strong>in</strong>ation [!] address[/netmask]”:<br />

die Adresse kann theoretisch e<strong>in</strong> hostname se<strong>in</strong>, um ständige DNS<br />

requests zu vermeiden sollte man jedoch die IP verwenden. Optional<br />

kann e<strong>in</strong>e Netzmaske angegeben werden.<br />

”-j, –jump target”:<br />

das Ziel (”target”) <strong>der</strong> Regel gibt an, wie mit matchenden Paketen<br />

verfahren wird, ”target” ist entwe<strong>der</strong> e<strong>in</strong>es <strong>der</strong> vordef<strong>in</strong>ierten<br />

targets (ACCEPT, DROP, ...) o<strong>der</strong> <strong>der</strong> Name e<strong>in</strong>er an<strong>der</strong>en cha<strong>in</strong>.<br />

”-i, –<strong>in</strong>-<strong>in</strong>terface [!] name” sowie ”-o, –out-<strong>in</strong>terface [!] name”:<br />

diese Schalter ermöglichen es Pakete durch den Namen des Interfaces<br />

zu spezifizieren; e<strong>in</strong>ige Komb<strong>in</strong>ationen s<strong>in</strong>d allerd<strong>in</strong>gs nicht<br />

möglich, zum Beispiel e<strong>in</strong>e ”-i” Angabe <strong>in</strong> <strong>der</strong> OUTPUT cha<strong>in</strong>.<br />

Man kann durch Anhängen e<strong>in</strong>es ”+” mehrere <strong>in</strong>terfaces <strong>in</strong> e<strong>in</strong>er<br />

Regeln bezeichnen (z.B. ppp0, ppp1).<br />

”[!] -f, –fragment”:<br />

bezieht die Regel auf das zweite und alle folgenden Fragmente<br />

e<strong>in</strong>es fragmentierten Paketes, o<strong>der</strong> (negiert) auf unfragmentierte<br />

Pakete und erste Fragmente. Fragmentierung von Paketen tritt<br />

zum Beispiel <strong>in</strong> Ethernet <strong>Netzwerk</strong>en durch die Begrenzung <strong>der</strong><br />

Framegrösse auf 1500 Byte (MTU) auf, e<strong>in</strong> grösseres Paket wird<br />

automatisch zerteilt, gesendet und wie<strong>der</strong> zusammengesetzt.<br />

Theoretisch kann man auf das Filtern von folgenden Fragmenten<br />

verzichten, da sofern das Erste fehlt, das Zusammensetzen des gesamten<br />

Paketes fehlschlagen sollte. Dies setzt aber die Korrektheit<br />

<strong>der</strong> TCP Stack Implementation voraus, dementsprechend gibt es<br />

viele Angriffe, die spezielle Schwächen verschiedener Betriebssysteme<br />

ausnutzen.<br />

19.2.2 ”Match Extensions” und Erweiterbarkeit<br />

iptables unterstützt viele weitere Filterspezifikationen durch externe Module (”match extensions”),<br />

die implizit durch die Verwendung des ”-p” flags geladen werden (jeweils auf<br />

das Protokoll bezogen), o<strong>der</strong> explizit durch ”-m modulname” bezeichnet werden müssen.<br />

So wird durch die Angabe ” -p tcp” e<strong>in</strong>e Reihe von TCP bezogenen Filterangaben<br />

verfügbar:


278 KAPITEL 19. FIREWALL<br />

”–tcp-flags [!] mask comp”:<br />

matcht Pakete mit e<strong>in</strong>er bestimmten Komb<strong>in</strong>ation gesetzter flags.<br />

Die Maske gibt an, welche <strong>der</strong> flags betrachtet werden, <strong>der</strong> zweite<br />

Str<strong>in</strong>g gibt die eigentliche Komb<strong>in</strong>ation an. flags s<strong>in</strong>d durch Komma<br />

zu trennen, <strong>der</strong> erste Parameter darf auch als ”NONE” o<strong>der</strong><br />

”ALL” angegeben werden.<br />

”[!] –syn”:<br />

ist e<strong>in</strong>e Kurzform für ”–tcp-flags SYN,RST,ACK SYN” und bezeichnet<br />

das jeweils erste Paket e<strong>in</strong>er TCP Verb<strong>in</strong>dung.<br />

”–source-port [!] port[:range]” und ”–dest<strong>in</strong>ation-port [!]<br />

port[:range]”:<br />

bezeichnen Pakete durch <strong>E<strong>in</strong></strong>schränkung auf e<strong>in</strong>en Port (o<strong>der</strong> e<strong>in</strong><br />

Intervall) an den beiden Enden <strong>der</strong> Verb<strong>in</strong>dung. Die Parameter<br />

”–sport” und ”–dport” s<strong>in</strong>d Aliasnamen.<br />

Die UDP Filter bieten analog die Angabe von Portadressen an, ICMP kennt ke<strong>in</strong>e<br />

Ports und kann daher lediglich mit ”–icmp-type [!] type” spezifiziert werden, wobei type<br />

e<strong>in</strong> numerischer Wert ist.<br />

<strong>E<strong>in</strong></strong>e weitere wichtige Erweiterung ist das ”limit” Modul, mit dem die Rate <strong>der</strong> gematchten<br />

Pakete pro Zeite<strong>in</strong>heit beschränkt werden kann. Damit kann verh<strong>in</strong><strong>der</strong>t werden, das e<strong>in</strong>e<br />

(entsprechend konfigurierte) firewall sich durch das Loggen von zu vielen Paketen selbst<br />

beh<strong>in</strong><strong>der</strong>t. Darüber h<strong>in</strong>aus existieren viele ”Denial of Service” Angriffe (” Überschwemmen<br />

e<strong>in</strong>er Leitung mit vielen Paketen”) die zwar nicht vollkommen ausgeschaltet werden können<br />

(die Bandbreite zur Übertragung ist verloren), <strong>der</strong>en Auswirkungen (stabiler Betrieb <strong>der</strong><br />

Computer, Netzüberlastung durch Antwortpakete) aber erheblich reduziert werden.<br />

Das Modul kann zusätzlich mit den Parametern ”–limit number” und ”–limit-burst<br />

number” aufgerufen werden. Der erste Wert gibt die Rate an (<strong>der</strong> Zahl kann e<strong>in</strong>e Zeite<strong>in</strong>heit<br />

folgen), <strong>der</strong> zweite e<strong>in</strong>en Schwellenwert, <strong>der</strong> überschritten werden muss, bevor die –limit<br />

Rate e<strong>in</strong>setzt.<br />

Im e<strong>in</strong>fachsten fall reicht das Laden des Moduls aus:<br />

iptables -A INPUT -m limit -j LOG<br />

Die Standardwerte s<strong>in</strong>d 3 Pakete pro Stunde mit e<strong>in</strong>em Burstwert von 5, d.h. von e<strong>in</strong>em<br />

ununterbrochenem Strom von ankommenden Paketen würden die ersten 5 gelogt, danach ist<br />

die Regel 20 M<strong>in</strong>uten <strong>in</strong>aktiv, bevor auch nur e<strong>in</strong> Paket verzeichnet wird. Wenn <strong>in</strong>nerhalb<br />

von 20 M<strong>in</strong>uten ke<strong>in</strong> neues Paket e<strong>in</strong>trifft, wird e<strong>in</strong>e ”burst-<strong>E<strong>in</strong></strong>heit” zurückgewonnen; nach<br />

100 M<strong>in</strong>uten ohne Aktivität wäre die firewall wie<strong>der</strong> im Anfangszustand.<br />

Syn-Flood<br />

<strong>E<strong>in</strong></strong> bekannter DoS Angriff ist das Senden e<strong>in</strong>er grossen Zahl von Paketen, die den<br />

Zielrechner zum Aufbau e<strong>in</strong>er Verb<strong>in</strong>dung auffor<strong>der</strong>n; <strong>der</strong> angegriffene Rechner verbraucht<br />

dabei mehr Resourcen als <strong>der</strong> Angreifer benötigt um die Pakete zu senden.<br />

iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT<br />

”P<strong>in</strong>g of Death”


19.3. VON ”MASQUERADING” UND ”PACKET MANGLING” 279<br />

Viele ältere Betriebssysteme reagieren sehr empf<strong>in</strong>dlich auf ICMP Pakete, die grösser<br />

als 65535 byte s<strong>in</strong>d. Da auch von diesem Angriff viele Varianten existieren, blocken manche<br />

Adm<strong>in</strong>istratoren die entsprechenden Pakete komplett, o<strong>der</strong> beschränken zum<strong>in</strong>dest die Rate<br />

<strong>der</strong> e<strong>in</strong>gehenden Pakete.<br />

iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s \<br />

-j ACCEPT<br />

Letztlich bleibt noch das ”state” modul, das die Zuordnung von e<strong>in</strong>zelnen Paketen<br />

zu <strong>der</strong> entsprechenden Verb<strong>in</strong>dung ermöglicht. Durch Laden des Moduls wird e<strong>in</strong> weiterer<br />

Schalter ”[!] –state STATE” verfügbar, die Angabe ”STATE” kann dabei entwe<strong>der</strong> ”NEW”,<br />

”ESTABLISHED”, ”RELATED” o<strong>der</strong> ”INVALID” se<strong>in</strong>. (siehe connection-track<strong>in</strong>g)<br />

19.3 von ”masquerad<strong>in</strong>g” und ”packet mangl<strong>in</strong>g”<br />

Neben dem Filtern von (unerwünschten) Paketen sollte e<strong>in</strong>e mo<strong>der</strong>ne firewall auch die<br />

Hea<strong>der</strong> von bestimmten Paketen verän<strong>der</strong>n können, diese Fähigkeit wird im Allgeme<strong>in</strong>en<br />

<strong>in</strong> zwei Bereiche unterteilt. Beide waren bei ipcha<strong>in</strong>s noch durch spezielle cha<strong>in</strong>s implementiert,<br />

s<strong>in</strong>d <strong>in</strong>zwischen jedoch als eigene Subsystem (table) gekapselt und damit vom<br />

Filtermechanismus getrennt.<br />

Der entsprechende iptables Parameter ist ”-t” gefolgt von dem Namen des anzusprechenden<br />

tables: entwe<strong>der</strong> ”nat” o<strong>der</strong> ”mangle”. Wird <strong>der</strong> Parameter nicht angegeben, wird<br />

auf dem ”filter” table operiert.<br />

19.3.1 Network Address Translation<br />

Unter diesem Begriff werden Regeln zusammengefasst, die Quell bzw. Zieladresse von Paketen<br />

verän<strong>der</strong>n. An<strong>der</strong>s als bei den normalen Filterregeln, wird hier immer nur das jeweils<br />

erste Paket e<strong>in</strong>er Verb<strong>in</strong>dung betrachtet. Das Ergebnis dieses Paketes wird für alle folgenden<br />

Pakete verwendet.<br />

1. Source NAT (SNAT):<br />

Die Quelladresse des ersten Paketes e<strong>in</strong>er Verb<strong>in</strong>dung wird verän<strong>der</strong>t, bevor es durch<br />

das Netzgerät gesendet wird. Auf <strong>der</strong> an<strong>der</strong>en Seite <strong>der</strong> Verb<strong>in</strong>dung ersche<strong>in</strong>t die<br />

firewall als <strong>der</strong> Ursprung <strong>der</strong> Verb<strong>in</strong>dung.<br />

2. Dest<strong>in</strong>ation NAT (DNAT):<br />

Die Zieladresse des ersten Paketes wird unmittelbar nachdem es empfangen wurde<br />

ver”an<strong>der</strong>t, jedoch bevor die ”Rout<strong>in</strong>g Decision” den weiteren Verlauf bestimmt. Hier<br />

ersche<strong>in</strong>t die firewall als das Ziel <strong>der</strong> Verb<strong>in</strong>dung.<br />

Nun ist es notwendig das ”rout<strong>in</strong>g” Diagramm etwas komplexer darzustellen:


280 KAPITEL 19. FIREWALL<br />

--->[1]--->[ROUTE]--->[3]--->[4]---><br />

| ^<br />

| |<br />

| [ROUTE]<br />

v |<br />

[2] [5]<br />

| ^<br />

| |<br />

v |<br />

Die bereits bekannten targets INPUT (2), OUTPUT (5) und FORWARD (3) werden<br />

durch PRE ROUTING (1) und POST ROUTING (4) ergänzt, allerd<strong>in</strong>gs kann nicht jede<br />

cha<strong>in</strong> <strong>in</strong> jedem table verwendet werden. Im ”nat” table dürfen PRE ROUTING sowie<br />

POST ROUTING und OUTPUT verwendet werden.<br />

SNAT wird verwendet, um Zugriffe aus e<strong>in</strong>em Rechnernetz <strong>in</strong> an<strong>der</strong>es h<strong>in</strong>e<strong>in</strong> so zu<br />

maskieren, dass die firewall als Ausgangspunkt <strong>der</strong> Verb<strong>in</strong>dungen ersche<strong>in</strong>t. <strong>E<strong>in</strong></strong>e firewall<br />

sei durch das Interface eth0 mit dem Internet verbunden und habe die IP 1.2.3.4.<br />

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4<br />

Jedes Paket (aus e<strong>in</strong>em <strong>in</strong>ternen Netz), das durch diese firewall <strong>in</strong>s Internet geroutet<br />

wird, hat als source Adresse die firewall. Eventuelle Antwortpakete werden beim Empfang<br />

automatisch entsprechend manipuliert und an den eigentlichen Quellrechner weitergeleitet.<br />

Da bei Auswahlverb<strong>in</strong>dungen die (externe) Adresse erst beim Verb<strong>in</strong>dungsaufbau bekannt<br />

ist, existiert hierfür e<strong>in</strong>e Spezialfall des SNAT: MASQUERADE. Die Angabe <strong>der</strong> –to<br />

Adresse entfällt hier.<br />

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE<br />

DNAT ermöglicht es, e<strong>in</strong>e auf <strong>der</strong> firewall e<strong>in</strong>gehende Verb<strong>in</strong>dung an e<strong>in</strong>en an<strong>der</strong>en<br />

Rechner weiterzuleiten. Häufig müssen bestimmte Dienste auch vom Internet her verfügbar<br />

se<strong>in</strong>, meistens werden dafür e<strong>in</strong>ige Rechner <strong>in</strong> e<strong>in</strong>em (vom eigentlichen lokalen <strong>Netzwerk</strong>)<br />

getrenntes Netzsegment untergebracht (DMZ, demilitarized zone) das ebenfalls über die<br />

firewall mit dem Internet verbunden ist.<br />

iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 -j DNAT \<br />

--to 5.6.7.8:80<br />

Diese Regel würde auf eth0 e<strong>in</strong>gehenden Traffic (an Port 80) an den Webserver auf<br />

Rechner 5.6.7.8 (<strong>in</strong> <strong>der</strong> DMZ) weiterleiten.<br />

19.3.2 packet mangl<strong>in</strong>g<br />

Auch die Regeln dieses tables dienen <strong>der</strong> Verän<strong>der</strong>ung von Pakethea<strong>der</strong>n, <strong>in</strong>sbeson<strong>der</strong>e des<br />

TOS (Type of Service) flags und zum Setzen von eigenen Paketmarkierungen. Seit <strong>der</strong><br />

Kernelversion 2.4.18 s<strong>in</strong>d alle bisher genannten targets <strong>in</strong> diesem table gültig.<br />

iptables wird hier mit den Parameter ”–set-mark” bzw. ”–set-tos” und e<strong>in</strong>em geeigneten<br />

Wert aufgerufen.<br />

Der ”Type Of Service” <strong>E<strong>in</strong></strong>trag e<strong>in</strong>es Paketes hat Auswirkung auf die Rout<strong>in</strong>gentscheidung<br />

des Kernels, <strong>in</strong>sbeson<strong>der</strong>e wie lange das Paket <strong>in</strong> e<strong>in</strong>em Cache (exakter: <strong>in</strong> e<strong>in</strong>er<br />

Queue) warten darf, bzw. wieviel Bandbreite zur Übertragung verwendet werden sollte.


19.4. CONNECTION TRACKING 281<br />

Diese Werte s<strong>in</strong>d jedoch nur als ”Vorschlag” zu verstehen, IPV4 bietet ke<strong>in</strong>e Möglichkeit<br />

<strong>der</strong>artige Zusicherungen wirklich e<strong>in</strong>zuhalten (”Quality of Service” o<strong>der</strong> kurz QoS).<br />

Der Wert ist als 4-Bit Feld def<strong>in</strong>iert, von dem immer nur e<strong>in</strong> Bit gesetzt ist:<br />

1000 -- m<strong>in</strong>imize delay<br />

0100 -- maximize throughput<br />

0010 -- maximize reliability<br />

0001 -- m<strong>in</strong>imize monetary cost<br />

0000 -- normal service<br />

Der ”–set-mark” Parameter wird meistens verwendet, um die Lesbarkeit <strong>der</strong> firewall<br />

Logdateien durch Schlüsselworte zu verbessern.<br />

19.4 connection track<strong>in</strong>g<br />

Unter diesem Begriff versteht man die Fähigkeit e<strong>in</strong>er firewall Status<strong>in</strong>formationen über alle<br />

aktiven <strong>Netzwerk</strong>verb<strong>in</strong>dungen zu verwalten, bzw. Pakete e<strong>in</strong>zelnen Verb<strong>in</strong>dungen zuzuordnen.<br />

Dabei werden die Quell- und Ziel-adressen, die Portnummern, verwendete Protokolle<br />

und jeweils e<strong>in</strong> ”Zustand” (state) <strong>der</strong> Verb<strong>in</strong>dungen im Speicher gehalten. <strong>E<strong>in</strong></strong>e Firewall<br />

mit dieser Eigenschaft wird als ”stateful” bezeichnet.<br />

Zustand allgeme<strong>in</strong>e Bedeutung<br />

bezeichnet Pakete, die e<strong>in</strong>e neue Verb<strong>in</strong>dung aufbauen, bzw. die<br />

NEW zu e<strong>in</strong>er Verb<strong>in</strong>dung gehören, <strong>der</strong> bisher noch ke<strong>in</strong>e Pakete zugeordnet<br />

wurden.<br />

e<strong>in</strong>e Verb<strong>in</strong>dung gilt als ESTABLISHED, wenn <strong>in</strong> beide Richtun-<br />

ESTABLISHED<br />

gen m<strong>in</strong>destens e<strong>in</strong> Paket geflossen ist.<br />

auch diese Pakete bauen e<strong>in</strong>e neue Verb<strong>in</strong>dung auf, s<strong>in</strong>d jedoch im<br />

RELATED Kontext zu e<strong>in</strong>er existierenden Verb<strong>in</strong>dung zu betrachten (FTP<br />

Datenverb<strong>in</strong>dung, ICMP Fehlermeldung).<br />

INVALID bezeichnet Pakete die zu ke<strong>in</strong>er bekannten Verb<strong>in</strong>dung gehören.<br />

Je nach Protokoll <strong>der</strong> Verb<strong>in</strong>dung haben diese Zustände unterschiedliche technische<br />

Bedeutung, o<strong>der</strong> s<strong>in</strong>d nur teilweise anwendbar.<br />

UDP Pakete haben ke<strong>in</strong>e Sequenznummern, allgeme<strong>in</strong> wird UDP ”stateless” genannt.<br />

Wenn bisher nur e<strong>in</strong> Paket <strong>in</strong> e<strong>in</strong>e Richtung geschickt wurde, wird die Verb<strong>in</strong>dung <strong>in</strong>tern als<br />

”UNREPLIED” markiert; wenn <strong>in</strong>nerhalb e<strong>in</strong>er gewissen Zeit (timeout) e<strong>in</strong> Antwortpaket<br />

e<strong>in</strong>trifft wird diese Markierung gelöscht und die Verb<strong>in</strong>dung gilt als ”ESTABLISHED”.<br />

Nach e<strong>in</strong>er vorkonfigurierten Anzahl von Paketen (<strong>in</strong> beide Richtungen) gilt die Verb<strong>in</strong>dung<br />

<strong>in</strong>tern als ”ASSURED” und <strong>der</strong> timeout Wert wird heraufgesetzt.<br />

TCP Verb<strong>in</strong>dungen werden durch e<strong>in</strong>en ”3-way handshake” aufgebaut, dies ist e<strong>in</strong>e<br />

Folge von Anfrage- und Antwort-paketen, bei denen bestimmte Komb<strong>in</strong>ationen an TCP<br />

flags gesetzt s<strong>in</strong>d. Analog zu UDP gilt e<strong>in</strong>e Verb<strong>in</strong>dung als ”ESTABLISHED” (<strong>in</strong>tern AS-<br />

SURED) sobald das abschliessende ACK empfangen wurde.<br />

ICMP Verb<strong>in</strong>dungen bestehen entwe<strong>der</strong> aus e<strong>in</strong>er Anfrage (request, NEW) und <strong>der</strong><br />

Antwort (reply, ESTABLISHED) o<strong>der</strong> aus e<strong>in</strong>em e<strong>in</strong>zelnen Paket (RELATED).<br />

Die Beachtung <strong>der</strong> <strong>in</strong>ternen Zustände kann bei Computern mit relativ wenig Hauptspeicher<br />

notwendig se<strong>in</strong>, da die Anzahl <strong>der</strong> gleichzeitig überwachbaren Verb<strong>in</strong>dungen durch


282 KAPITEL 19. FIREWALL<br />

den verfügbaren Hauptspeicher begrenzt ist. Wenn die Resourcen erschöpft s<strong>in</strong>d und weitere<br />

Verb<strong>in</strong>dungen überwacht werden müssen, werden bevorzugt Verb<strong>in</strong>dungen im Zustand<br />

”UNREPLIED” gelöscht und <strong>der</strong> Verb<strong>in</strong>dungsaufbau damit unterbrochen. Die konfigurierte<br />

Anzahl gleichzeitig verfolgbarer Verb<strong>in</strong>dungen ist <strong>in</strong> /proc/sys/net/ipv4/ip conntrack max<br />

gespeichert.<br />

Darüber h<strong>in</strong>aus werden Verb<strong>in</strong>dungen spezieller Dienste (z.B. FTP) durch zusätzliche<br />

Kernelmodule (ip conntrack ftp) überwacht, um damit bestimmte Pakete als ”RELATED”<br />

zu klassifizieren und den Verb<strong>in</strong>dungsaufbau zuzulassen, ohne das die exakten Filterangaben<br />

dieser Pakete für die Konfiguration <strong>der</strong> firewall bekannt se<strong>in</strong> müssen. So werden<br />

im Fall von FTP (m<strong>in</strong>destens) zwei Verb<strong>in</strong>dungen (e<strong>in</strong>e Steuerleitung und e<strong>in</strong>e Datenleitung)<br />

verwendet. Der client baut zuerst die Steuerleitung zum Port 21 des servers auf.<br />

Danach sendet entwe<strong>der</strong> <strong>der</strong> client (active ftp) o<strong>der</strong> <strong>der</strong> server (passive ftp) e<strong>in</strong>e Portadresse<br />

(¿1024) und se<strong>in</strong> Gegenüber baut die Datenleitung zu <strong>der</strong> angegeben Portadresse auf.<br />

Der ip conntrack code filtert die Portangabe aus <strong>der</strong> Steuerleitung heraus und bezeichnet<br />

e<strong>in</strong> e<strong>in</strong>treffendes Paket mit den angegebenen Werten als ”RELATED” zu <strong>der</strong> existierenden<br />

Steuerverb<strong>in</strong>dung.<br />

19.5 Referenzen<br />

1. die iptables man page<br />

2. das netfilter, packet filter<strong>in</strong>g sowie NAT HOWTO<br />

http://www.netfilter.org/documentation/


Index<br />

Übertragungskapazität, 28<br />

A-Record, 91<br />

Abstract Syntax Notation, 175<br />

Acces Po<strong>in</strong>t Name, 26<br />

AccessPo<strong>in</strong>t, 18<br />

ACE-Umschrift, 86<br />

Acknowledge, 63<br />

Acknowledgenummer, 64<br />

Active Directory, 85<br />

Adress Resolution Protocol, 53<br />

Adressbereich, 43<br />

Adressierungsschema, 38<br />

ADSL, 11<br />

Agent, 174<br />

Alias, 92<br />

Anwendung, 158<br />

Anwendungsschicht, 9<br />

APN, 26<br />

Applikation, 36<br />

ARP, 51, 53<br />

ASN.1, 175<br />

ATM, 24, 27, 52<br />

Auslöschung, 18<br />

Bandbreit, 19<br />

Bandbreite, 18<br />

BDC, 143<br />

Benutzer, 143, 189<br />

Benutzerkonto, 143<br />

Berkeley Internet Name Doma<strong>in</strong> Software,<br />

84<br />

Betriebssystem, 8<br />

B<strong>in</strong>ärzahl, 40<br />

BIND, 84<br />

B<strong>in</strong>d, 89<br />

Bitübertragungsschicht, 11<br />

Bouncer, 199<br />

Broadcast, 42<br />

CA, 106<br />

CA.pl, 106<br />

283<br />

Carrier Sense Multiple Access, 2<br />

Carrierless Amplitude, 29<br />

CDMA, 27<br />

Certificate Authorisation, 106<br />

Chiffrierer, 29<br />

CIFS, 131<br />

CIPE, 200<br />

Circuit Switched Data, 27<br />

Cisco, 211<br />

Clear To Send, 17<br />

Common Internet File System, 131<br />

Common <strong>Unix</strong> Pr<strong>in</strong>ter System, 137<br />

Computern, 10<br />

Computersystem, 38<br />

Content-Type, 101<br />

Crypto IP Encapsulation, 200<br />

CSD, 27<br />

CSMA/CD, 14<br />

CTS, 17<br />

CUPS, 137<br />

Darstellungsschicht, 9<br />

Datagramm, 39, 63<br />

Datei, 2, 85, 158<br />

Dateisystem, 85<br />

Datenrate, 11<br />

Defaultrouter, 43<br />

Delegation, 87, 88<br />

dhclient, 75<br />

DHCP, 64, 67, 95<br />

DHCP-Server, 19<br />

dhcpcd, 75<br />

Dienst, 83, 189<br />

Directory, 158<br />

Directory Service, 158<br />

Discrete Multi-Tone Modulation, 30<br />

Diskless X-Station, 2, 71<br />

Dist<strong>in</strong>guished Name, 79<br />

DNS, 61, 64, 67, 83<br />

DocumentRoot, 105<br />

Domäne, 143<br />

Doma<strong>in</strong>, 61, 85


284 INDEX<br />

Doma<strong>in</strong> Name System, 83, 175<br />

Doma<strong>in</strong>-Name-Service, 61<br />

Doma<strong>in</strong>controller, 129<br />

Doma<strong>in</strong>name, 91<br />

Dotted Quad Notation, 84<br />

Dotted-Quad-Notation, 40<br />

Drucker, 158, 187<br />

Druckerfreigabe, 129<br />

Dynamic Host Configuration Protocol, 48,<br />

64<br />

Dynamic Host Control Protocol, 3<br />

EC, 28<br />

Echo Cancellation, 28<br />

Email, 200<br />

Endsystem, 23<br />

ENUM, 97<br />

EPROM, 127<br />

ESP, 212<br />

Ethernet, 11, 13, 24, 35<br />

Exploit, 200<br />

exports, 124<br />

FDDI, 33<br />

Fehlerrate, 64<br />

Fiber Distributed Data Interface, 33<br />

F<strong>in</strong>ish, 63<br />

Firewall, 199<br />

Flag, 63<br />

Flusskontrolle, 64<br />

FQDN, 61, 85, 89<br />

Fragment, 45<br />

Fragment Offset, 64<br />

Fragmentierung, 39<br />

Frequency Division Multiplex<strong>in</strong>g, 28<br />

Frequenzspektrum, 18<br />

ftp, 199<br />

Full Qualified Doma<strong>in</strong> Name, 61, 85<br />

Gateway, 71<br />

General Packet Radio Service, 26<br />

Generic Flow Control, 32<br />

GFC, 32<br />

Global Standard for Mobile Communication,<br />

26<br />

GMII, 16<br />

GPRS, 26<br />

groups, 157<br />

GSM, 26<br />

Hea<strong>der</strong>, 199<br />

High Speed Circuit Switched Data, 27<br />

Host, 23, 38<br />

host, 83<br />

HOST-RESOURCES-MIB, 182<br />

Hostname, 61, 71<br />

hosts, 157<br />

hosts.allow, 193<br />

hosts.deny, 193<br />

Hostteil, 51<br />

HSCSD, 27<br />

http, 199<br />

HTTP-Kommunikation, 200<br />

httpd, 101<br />

httpd.conf, 101<br />

HTTPS, 105<br />

ICMP, 40, 59<br />

imap, 111<br />

Imap4, 199<br />

<strong>in</strong>etd, 125, 193<br />

Internet, 38<br />

Internet Control Message Protocol, 40<br />

Internet-Protokoll, 38<br />

IP, 38, 59, 64, 192, 199<br />

IP Virtual Host, 104<br />

IP-Adressbereich, 41<br />

IP-Adresse, 37, 71, 83, 91, 158, 175<br />

IP-Adressraum, 46<br />

IP-Paket, 201<br />

IP-Stack, 199<br />

IPsec, 200<br />

IPX, 200<br />

ISDN, 11, 24<br />

Jam-Sequence, 14<br />

Kanalaufteilung, 18<br />

Kanalbündelung, 18<br />

Kernelmodul, 200<br />

Klartext, 199<br />

Koaxialkabel, 15<br />

Kollision, 14, 19<br />

Kommunikation, 46<br />

Konfigurationsdatei, 2<br />

LAN, 7, 36<br />

LDAP, 78, 147, 158<br />

LDAP-Server, 78<br />

ldapadd, 164, 166<br />

ldapdelete, 164


INDEX 285<br />

ldapmodify, 164<br />

ldapsearch, 164<br />

Leitungskodierer, 29<br />

Lightwight Directory Access Protocol, 147<br />

lilo, 191<br />

Lizenzgebühr, 129<br />

Local Area Network, 3, 13<br />

Logical L<strong>in</strong>k Control, 20<br />

Log<strong>in</strong>, 190<br />

log<strong>in</strong>.defs, 190<br />

Loopback, 84<br />

LPD, 129<br />

MAC, 13<br />

MACA, 17<br />

Management Architektur, 173<br />

Management Information Base, 174<br />

Management Station, 174<br />

Manipulation, 64<br />

Maximal Transmission Unit, 45<br />

Maximum Transfer Unit, 22<br />

MIB, 174<br />

Microsoft Po<strong>in</strong>t-to-Po<strong>in</strong>t Tunnel Protocol, 200<br />

Mitlauschen, 64<br />

Modem, 11, 24, 35<br />

Modulator, 29<br />

mount.cifs, 130<br />

MRTG, 183<br />

mtr, 48<br />

MTU, 22, 45<br />

Multi Router Traffic Grapher, 183<br />

Multi-Homed-Hosts, 42<br />

Multiple Access with Collision Avoidance, 17<br />

Name Virtual Host, 104, 105<br />

named, 90, 189<br />

named.conf, 90<br />

Namensraum, 87<br />

Nameserver, 62, 87<br />

Nam<strong>in</strong>g Authority Po<strong>in</strong>ter Records, 98<br />

NAPTR, 98<br />

NAT, 199<br />

NetBIOS, 130, 200<br />

netstat, 227<br />

Network Address Translation, 199, 202<br />

Network File System, 123<br />

Network Information System, 157, 159<br />

Network Number, 40<br />

Netzmaske, 71<br />

Netznummer, 40<br />

<strong>Netzwerk</strong>, 46, 201<br />

<strong>Netzwerk</strong>dateisystem, 129<br />

<strong>Netzwerk</strong>kennung, 46<br />

<strong>Netzwerk</strong>schnittstelle, 47<br />

<strong>Netzwerk</strong>teil, 51<br />

<strong>Netzwerk</strong>verb<strong>in</strong>dung, 227<br />

NFS, 64, 123<br />

NIS, 124, 157, 159<br />

nmbd, 131, 138, 142<br />

nslookup, 61<br />

Nyquist, 28<br />

Object Identifier Namespace, 175<br />

Open Systems Interconnection, 6<br />

openssl, 106<br />

OpenVPN, 200<br />

Paketübertragung, 35<br />

Paketbestätigung, 64<br />

Paketreihenfolge, 64<br />

passwd, 157, 190<br />

Passwort, 189, 190<br />

PATH, 190<br />

PDC, 143<br />

Perl, 3<br />

Personen, 158<br />

Phase Modulation, 29<br />

pla<strong>in</strong> old telephone system, 25<br />

Po<strong>in</strong>t-to-Po<strong>in</strong>t-Protokoll, 26<br />

Pop3, 199<br />

pop3, 111<br />

Port, 63<br />

Portnummer, 63<br />

POTS, 25<br />

PPP, 26<br />

PPTP, 200<br />

Präfix, 40<br />

Prüfsumme, 199<br />

proftpd, 125<br />

proftpd.conf, 125<br />

Protokoll, 5, 36, 127, 204<br />

Prozess, 189<br />

Prozessor, 187<br />

pump, 75<br />

Punkt-Dezimal-Notierung, 40<br />

Push, 63<br />

PXE, 127<br />

QoS, 52<br />

Quadrature Amplitude Modulation, 29


286 INDEX<br />

Quality of Service, 52<br />

Quelladresse, 63<br />

Ready To Send, 17<br />

Rechner, 143<br />

Redirect Message, 40<br />

Redirecter, 199<br />

Registrierung, 86<br />

Remote Procedure Call, 157<br />

Remote-Log<strong>in</strong>, 200<br />

Reset, 63<br />

resolv.conf, 61, 75<br />

Resource Record, 91<br />

Ressource, 158<br />

rhosts, 194<br />

Roam<strong>in</strong>g, 17<br />

Round Trip Time, 3<br />

route, 47<br />

route.conf, 48<br />

Router, 44, 47, 174<br />

Rout<strong>in</strong>g, 37, 46<br />

Rout<strong>in</strong>gtabellen, 49<br />

RPC, 157<br />

RR, 91<br />

RTS, 17<br />

RTT, 3<br />

RWHO, 64<br />

Samba, 129<br />

Schnittstelle, 5<br />

scp, 192<br />

Second-Level-Doma<strong>in</strong>, 86<br />

Secure Shell, 200<br />

Secure Socket Layer, 200<br />

SecureShell, 192<br />

Sendefilter, 29<br />

Sequencenummern, 64<br />

Server, 200<br />

ServerAlias, 105<br />

ServerName, 105<br />

Service, 189<br />

services, 63, 157<br />

shadow, 190<br />

Shannon, 28<br />

Sicherheit, 64<br />

Sicherungsschicht, 200<br />

Signal Noise Ratio, 4<br />

Signalstörung, 18<br />

Signierung, 200<br />

Simple Network Management Protocol, 173<br />

Sitzungsschicht, 9<br />

slapd, 163<br />

Slid<strong>in</strong>g-W<strong>in</strong>dow, 64<br />

SMB, 129<br />

smbclient, 130, 132<br />

smbd, 131, 138<br />

smbmount, 130<br />

smbpasswd, 145<br />

smbstatus, 135<br />

SMI, 175<br />

SMTP, 111<br />

SNMP, 64, 173, 183<br />

SNR, 4<br />

SOA, 87<br />

Socket, 63, 227<br />

SOCKS, 202<br />

Sourcecode, 67<br />

SSH, 200<br />

ssh, 192<br />

ssh-agent, 193<br />

SSL, 200<br />

Start Of Authority, 87<br />

State-Mach<strong>in</strong>e, 64<br />

Structure of Management Information, 175<br />

Subdoma<strong>in</strong>, 88<br />

subnett<strong>in</strong>g, 50<br />

Subnetz, 72<br />

Suffix, 40<br />

Swap, 187<br />

Switch, 14<br />

Synchronize, 63<br />

Systembefehl, 2<br />

TCP, 62, 192, 199, 204, 227<br />

TCP/IP, 6<br />

Telefonnetze, 35<br />

Telnet, 199<br />

telnet, 193<br />

Term<strong>in</strong>alemulation, 9<br />

TFTP, 127<br />

Th<strong>in</strong>-Client, 71<br />

Three-Way-Handshake, 64<br />

Time-To-Live, 89<br />

TokenR<strong>in</strong>g, 11, 19<br />

Tokenr<strong>in</strong>g, 24<br />

Toplevel-Doma<strong>in</strong>, 85<br />

traceroute, 47<br />

Transmission Control Protocol, 62, 63<br />

Transportprotokoll, 201<br />

Transportschicht, 9


INDEX 287<br />

Trojaner, 200<br />

TTL, 89<br />

Twisted Pair Kabel, 16<br />

UDP, 64, 192, 201, 204, 227<br />

UDPPaket, 201<br />

Umgebungsvariable, 193<br />

Universal Mobile Telecommunications System,<br />

27<br />

unix, 227<br />

Urgend, 63<br />

Urgendpo<strong>in</strong>ter, 63<br />

User Datagram Protocol, 64<br />

User Datagramm Protocol, 64<br />

UTMS, 27<br />

Verarbeitungsschicht, 9, 36<br />

Verb<strong>in</strong>dung, 192, 200–202, 207<br />

Verb<strong>in</strong>dungsverhalten, 63<br />

Vermittlungsschicht, 8<br />

Verzeichnis, 85<br />

Virtual Private Network, 201<br />

Visualisierung, 48, 176, 183<br />

Voice-over-IP, 97<br />

VPN, 201<br />

WAN, 7, 25, 27, 36<br />

Webbrowser, 200<br />

well-known services, 63<br />

whois, 86<br />

Wide Area Network, 25, 27<br />

WIN¿, 84<br />

W<strong>in</strong>dow-Size, 64<br />

W<strong>in</strong>dows, 129<br />

W<strong>in</strong>dows-Namensdienst, 132<br />

WINS, 130, 132, 140<br />

Wireless LANs, 16<br />

xhost, 194<br />

x<strong>in</strong>etd, 125, 193<br />

x<strong>in</strong>etd.conf, 193<br />

XML, 184<br />

Yellow Pages, 157<br />

ypb<strong>in</strong>d, 157<br />

ypserv, 157<br />

ypset, 157<br />

Zähler, 175, 230<br />

Zertifikat, 200, 211, 216<br />

Zieladresse, 20, 38, 63<br />

Zone, 88

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!