Netzwerk

Werbung
Netzwerk
In diesem Abschnitt befassen wir uns mit dem Anschluss des Rechners an ein TCP/IP Netzwerk. Wir
lernen die historische Entwicklung der Vernetzung von Rechnern kennen, wir befassen uns mit Aufbau
und den technologischen Grundlagen von Netzwerken, und beschreiben die wesentlichsten Aspekte für
die Konfiguration und Administration von Netzwerken.
Die Themen:






TCP/IP Geschichte
IP Adressierung
Private Netze
Protokollschichten
Netzwerk Konfiguration
IP Routing
TCP/IP
TCP/IP ist bekannt als das INTERNET Protokoll. Es wurde vom US Departement of Defense (DOD)
Advanced Reseach Projects Agency (DARPA) entwickelt. Es umfasst eine Sammlung von
verschiedenen Protokollen.
Geschichte von TCP/IP
TCP/IP begann 1969 als ein 4 Knoten Netzwerk, das ARPANET genannt wurde. Die vollständigen
Protokolle lagen erst 1982 vor, die zwei wichtigsten davon waren:


TCP Transmission Control Protocol
IP Internet Protocol
Im Jahre 1983 wurde TCP/IP das Standardprotokoll im DOD, und ist heute der generische Name für die
gesamte Sammlung von Protokollen.
Netzwerk Adressierung
Jeder Host im Netzwerk erhält eine eindeutige Adresse, die sogenannte IP-Adresse oder IP-Nummer.
Das 'IP' in der Bezeichnung deutet darauf hin, dass hierfür das Internet Protocol zuständig ist. In der
aktuellen Version von TCP/IP wird jedem Rechner eine 32 Bit lange Adresse zugeordnet. Hierbei
werden die einzelnen Bytes durch Punkte getrennt. So sind IP-Adressen von 0.0.0.0 bis
255.255.255.255 möglich. Es sind nicht alle Nummern frei nutzbar, einige z.B. sind für die Netzadresse
oder sogenannte Broadcasts reserviert. Eine typische IP-Adresse könnte nun lauten
141.89.64.1
In Binärschreibweise wäre dies
10001101 1011001 1000000 00000001
Eine IP-Adresse gliedert sich nun in einen vorderen und einen hinteren Teil. Der vordere Teil stellt die
Netzadresse dar, der hintere Teil die Host-Adresse. Die IP-Adresse bezeichnet das Netz, in dem sich
ein Rechner befindet und seine Nummer in diesem Netz. Die Trennung dieser beiden Teile kann
prinzipiell an jedem Bit der Adresse erfolgen. Dazu benötigt man aber noch die sogenannte Netzmaske.
Diese Netzmaske ist genauso lang wie die IP-Adresse und wird bis zu einem bestimmten Bit mit Einsen
gefüllt. Der Rest wird auf Null gesetzt. Alle Bits in der IP-Adresse, die in der Netzmaske belegt sind,
zählen dann zum Netzanteil, der Rest zum Hostanteil, hier einige Beispiele:
Beispiel 1: Wir verwenden als Netmask 255.255.0.0, d.h. die ersten 16 Bit der Adresse sind dem
Netzteil vorbehalten, hier 141.89, die restlichen 16 Bit werden zur Adressierung des Hosts in diesem
Netz verwendet, dazu bleiben 254*254, also gut 64.516 Möglichkeiten - praktisch können also über
64.000 Hosts in diesem Netz adressiert werden. Die Adresse 141.89.0.0 ist für das Netzwerk selbst
reserviert, die Adresse 141.89.255.255 bezeichnet die sogenannte Broadcast-Adresse: Pakete an diese
Adresse werden an alle Stationen im Netz verschickt.
Beispiel 2: Hier wird dem Host die Adresse 58.17.131.43 mit der Netmask 255.255.255.0 zugeteilt. Es
sind also 24 Bit für den Netz- und 8 Bit für den Hostanteil reserviert. Theoretisch kann es in diesem Netz
maximal 254 Hosts geben. Adresse für dieses Netzwerk ist 58.17.131.0, Broadcasts gehen an
58.17.131.255.
Beispiel 3: Man muss sich bei der Netzmaske keinesfalls auf ganze Bytes beschränken. Bei dieser
Adresse macht der Netzanteil 20 Bit aus, der Hostanteil 12 Bit. Die Netzadresse ist hier 123.5.6.0 (bis
zum 20. Bit), Broadcasts gehen an 123.5.112.255 (Alle Bits ab dem 21. sind auf 1 gesetzt).
Die verschiedenen Netzmasken lassen sich in verschiedene Klassen unterteilen: Class-A-Netz haben
die Netmask 255.0.0.0, Class-B-Netze die Netmask 255.255.0.0 und Class-C-Netze die Netmask
255.255.255.0. Netze mit anderen Netmasks bezeichnet man als Subnetze.
Adressen für private Netze
Nun wollen wir mit unserem Netz aber gar nicht fest an das Internet angebunden sein. Dann steht uns
die Wahl der Netzadressen im Grunde genommen frei, dies kann aber später zu Problemen führen.
Stellen wir uns vor, wir möchten ein Netzwerk mit der Adresse 141.89.0.0 aufbauen. Soweit kein
Problem, unsere Rechner bekommen IP-Nummern von 141.89.1.1 bis 141.90.254.254 mit Netzmaske
255.255.0.0 und alles sollte funktionieren. Wenn dieses Netzwerk später in das Internet eingebunden
wird kommt es zwangsläufig zu Konflikten mit Hosts welche die gleiche IP-Adresse besiten.
Private Adressräume:
Abhilfe schaffen hier die sogenannten privaten Adressräume. Hierbei handelt es sich um Bereiche von
IP-Adressen die im Internet nicht vorkommen und für "local Area Networks", LANs, frei verwendet
werden können. Im einzelnen sind diese in der folgenden Tabelle aufgeführt:
1
Class-A-Netz Adressbereich 10.0.0.0
16 Class-B-Netze Adressbereich 172.16.0.0
256 Class-C-Netze Adressbereich 192.168.0.0
bis
bis
bis
10.255.255.255
172.31.255.255
192.168.255.255
Protokollschichten
Die TCP/IP-Protokollsuite über vier Schichten bzw. "Layer". Im einzelnen handelt es sich hier um den
Link Layer, Network Layer, Transport Layer und Application Layer. Die folgende Abbildung zeigt diese
Schichten und Beispiele für zu diesen Schichten gehörende Protokolle.
Protokolle im Link Layer
Der Link Layer umfasst die Hardware-Schicht. Hierfindet man alle Netzwerkmedien,
über die man TCP/IP betreiben kann. Auf die verschieden Hardwareprotokolle soll an
dieser Stelle nicht detailliert einegangen werden, Ethernet und Tokenring sollen hier als
Beispiele angeführt werden.
Protokolle im Network Layer
IP - Das Internet Protocol
Das IP übernimmt die gesamte Paketvermittlung. Daten werden gegebenenfalls in
mehrere IP-Pakete verpackt und an einen bestimmten Empfänger abgeschickt. Beim
Empfänger können diese Pakete eventuell in falscher Reihenfolge ankommen. Das IP
hat nun dafür zu sorgen, diese fragmentierten Pakete wieder ordentlich
zusammenzusetzen. Dabei arbeitet das Protokoll verbindungslos und ungesichert, d.h.
vor dem Versenden der Pakete wird keine explizite Verbindung zum Empfänger
hergestellt, sondern einfach abgeschickt. Es existieren auf IP-Ebene keine
Sicherungsmechanismen, die sicher stellen, dass die Daten auch korrekt beim
Empfänger ankommen. Dies ist auch gar nicht notwendig, denn das IP hat für die
Vermittlung der Pakete zu sorgen, für die korrekte Übertragung sind die höheren
Protokollschichten zuständig. Die Adressierung in TCP/IP-Netzen wird ebenfalls durch
das IP gehandhabt.
ICMP - Internet Control Message Protocol
Das ICMP dient zur Übermittlung von Fehler- und Statusinformationen. So wird ICMP
aktiv, wenn der Zielrechner oder das Zielnetzwerk nicht erreichbar sind und gibt 'host
unreachable' bzw. 'network unreachable' zurück. Eine recht bekannte Anwendung von
ICMP ist das Programm ping, mit dem man die Erreichbarkeit eines anderen Rechners
prüfen kann. Dazu wird ein ICMP echo request an den Zielrechner geschickt, dieser
sendet ein ICMP echo reply zurück, wenn er denn verfügbar ist. Beispiel:
$ ping 192.168.102.1
PING 192.168.102.1 (192.168.102.1) from 192.168.102.1 : 56(84) bytes
of data.
64 bytes from 192.168.102.1: icmp_seq=0 ttl=255 time=0.4 ms
64 bytes from 192.168.102.1: icmp_seq=1 ttl=255 time=0.2 ms
64 bytes from 192.168.102.1: icmp_seq=2 ttl=255 time=0.2 ms
--- 192.168.102.1 ping statistics --3 packets transmitted, 3 packets received, 0\% packet loss
round-trip min/avg/max = 0.2/0.2/0.4 ms
Ist ein Rechner nicht erreichbar, erscheinen keine Antwortmeldungen.
Protokolle im Transport Layer
UDP - User Datagram Protocol
Das UDP ist das einfachste Protokoll auf der Transportebene. Es stellt im Gegensatz
zum noch folgenden TCP nicht sicher, ob die versendeten Pakete auch wirklich beim
Empfänger ankommen, sondern sendet auf gut Glück, bzw. nach dem Motto 'fire and
forget'. Dafür ist es sehr schnell und erzeugt nicht so eine hohe Netzlast wie TCP. Somit
eignet es sich gut für Hochgeschwindigkeitsanwendungen, wie verteilte Dateisysteme
(NFS) oder Nameserveranfragen (DNS).
TCP - Transmission Control Protocol
TCP ist ähnlich wie das Telefonnetz verbindungsorientiert aufgebaut. Bevor man also
Daten an einen anderen Rechner senden kann, muss man eine Verbindung zu diesem
aufgebaut haben. Durch diese festgelegte Verbindung können die zwei
Verbindungspartner auch sicherstellen, dass die gesendeten Daten auch wirklich korrekt
ankommen und zwar auch in der richtigen Reihenfolge.
Eine typische TCP-Verbindung sieht so aus, dass ein Client eine
Verbindungsanforderung an einen Server schickt. Dieser bestätigt diese Verbindung,
wenn er dies möchte. Damit besteht eine feste Verbindung zwischen den beiden
Partnern. Nun können Daten übertragen werden bis entweder der Server oder der Client
die Zeit gekommen sehen, die Verbindung zu trennen. Dazu sendet er einfach eine
Ende-Anforderung an den anderen Rechner und nach Bestätigung durch diesen wird
die Verbindung beendet.
Ports
Sowohl UDP als auch TCP verwenden neben der IP-Adresse auch Portnummern. Da
ein Rechner in der Regel mehr als einen Dienst anbietet (z.B. HTTP, SSH, FTP, Telnet,
...), muss man neben der IP-Adresse ein weiteres Adressierungsmerkmal finden. Dies
sind die sogenannten Ports. So erreicht man z.B. den Dienst FTP auf einem Rechner in
der Regel über Port 21, Telnet läuft über Port 23. Hinter jedem Port steht auf dem
Rechner ein Prozess, der auf Anfragen wartet, hinter Port 21 entsprechend der FTPDaemon. Bei allen Unix-ähnlichen Betriebssystemen sind in der Datei /etc/services alle
Ports aufgeführt, die auf dem Rechner verfügbar sind.
Protokolle im Application Layer
In dieser Schicht tauchen die Anwendungsprotokolle auf. Hier einige Beispiele:

DNS - Domain Name Service:
Dient zur Übersetzung von für Menschen leichter zu merkende
Rechner-Namen in leichter zu merkende IP-Adressen, z.B. von
193.100.232.131 zu www.heise.de. Das DNS ist hierarchisch
aufgebaut.

FTP - File Transfer Protocol:
FTP ist entworfen worden für die Übertragung von Dateien zwischen
zwei Rechnern. Secure Version von ftp ist sftp.

HTTP - Hypertext Transfer Protocol:
Das HTTP ist vor allem durch das World Wide Web bekannt geworden,
denn alle Webseiten werden mit Hilfe von HTTP übertragen.

Telnet :
Mit Telnet kann man sich auf einem entfernten Rechner einloggen und
dort Befehle ausführen. Secure Version von Telnet is SSH.

NFS - Network File System:
Mit dem hauptsächlich unter Unix verwendeten NFS kann man
Dateisysteme im Netz verfügbar machen. So kann man mit NFS auf
dem eigenen Rechner ein Verzeichnis einrichten, das eigentlich auf
einer ganz anderen Maschine liegt. NFS arbeitet dabei völlig
transparent. Neben dem DNS ist es eins der wenigen TCP/IPProtokolle, die auf UDP aufbauen.
IP-Interface Konfiguration
Wie kommt die Netzwerkkarte zu Ihrer Adresse?. In den meisten Fällen wird die
Konfiguration der Netzwerkkarte bereits bei der Installation vorgenommen. Wenn eine
Karte später eingebaut oder das System mit einer zweiten Karte erweitert wird, muss die
Konfiguration manuell erfolgen. Das Kommando ifconfig wird benutzt, um einem
Netzwerkinterface die benötigten Einstellungen zuzuweisen.



Loopback - ist ein „virtuelles“ Netzwerkinterface. Dieses bezieht sich immer auf
den Rechner selbst und hat die IP-Adresse: 127.0.0.1.
Interface: lo
Ethernet - um zwei oder mehrere Rechner miteinander zu vernetzen, verwendet
man eine Netzwerkkarte, Standard ist dabei der Einsatz von Ethernet-Karten.
Interface: eth0, eth1, eth2 ...
PPP - „Point-to-Point Protocol“ (Punkt-zu-Punkt-Protokoll), zur Verwndung über
serielle Verbindungen, wie zum Beispiel Modemstrecken, ISDN usw.
Interface: ppp0, ppp1, ppp2 ...
Wenn der Kernel die installierte Netzwerkkarte nicht erkennt, muss das passende Modul
geladen werden. Dies kann temporär mit dem Kommando insmod oder modprobe
durchgeführt werden. Wenn das richtige Modul gefunden wurde, müssen die nötigen
Werte in die Datei /etc/modules oder /etc/conf.modules eingetragen werden.
Um nun der Karte eine IP-Adresse zuzuweisen, dient das Kommando ifconfig. Im
einfachsten Fall, also ohne weitere Optionen, gibt ifconfig die bisher konfigurierten
Interfaces aus:
# /sbin/ifconfig
lo
Link encap:Local Loopback
inet addr:127.0.0.1 Bcast:127.255.255.255 Mask:255.0.0.0
UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1
RX packets:18584 errors:0 dropped:0 overruns:0 frame:0
TX packets:18584 errors:0 dropped:0 overruns:0 carrier:0
Collisions:0
Ruft man nun ifconfig mit dem Namen des Interfaces, eth0 für die erste, eth1 für die
zweite Karte usw., sowie mit der gewünschten IP-Nummer auf, ergibt sich folgende
Veränderung:
# /sbin/ifconfig eth0 192.109.42.23
# /sbin/ifconfig
lo
Link encap:Local Loopback
inet addr:127.0.0.1 Bcast:127.255.255.255 Mask:255.0.0.0
UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1
RX packets:18584 errors:0 dropped:0 overruns:0 frame:0
TX packets:18584 errors:0 dropped:0 overruns:0 carrier:0
Collisions:0
eth0
Link encap:Ethernet HWaddr 00:00:F7:C3:45:1B
inet addr:192.109.42.23
Bcast:192.109.42.255
Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:55 errors:0 dropped:0 overruns:0 frame:0
TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
Collisions:7
Interrupt:10 Base address:0x300
ifconfig gibt nun auch die Informationen zur Ethernetkarte aus. Die Werte für die
Netzmaske, Broadcast Adresse usw. wurden automatisch gesetzt. Wenn man bei diesen
Werten andere Einstellungen benötigt, so müssen diese ebenfalls mit ifconfig gesetzt
weren:
# /sbin/ifconfig eth0 192.109.42.23 netmask 255.255.255.240
Dies verändert die zuvor angegebenen Werte. Wenn man ein Interface komplett
deaktivieren will, benutzt man die Option down:
# /sbin/ifconfig eth0 down
Wenn die Netzwerkkarte bereits bei der Installation eingerichtet wurde, findet man
bereits die notwendigen Werte in der Datei /etc/network/interfaces .
# /etc/network/interfaces -- configuration file for ifup(8),
ifdown(8)
# The loopback interface
iface lo inet loopback
# The first network card - this entry was created during the Debian
installation
# (network, broadcast and gateway are optional)
iface eth0 inet static
address 192.109.42.18
netmask 255.255.255.240
network 192.109.42.16
broadcast 192.109.42.16
gateway 192.109.42.17
In dieser Datei sind einige Variablen definiert, die beim Aufruf des Programms ifup
ausgelesen werden. Wenn Sie Ihre Netzwerkkarte erst später eingerichtet haben,
erstellen Sie diese Datei und passen sie Ihren Bedürfnissen an.
IP Routing
Wenn wir der Netzwerkkarte die eigenen Einstellungen mitgeteilt haben, müssen wir
dem Linux-Kernel noch beibringen, die IP-Pakete auch an die richtige Stelle zu
schicken. Der Kernel hält diese Informationen, welcher Rechner oder welches Netzwerk
über welchen Weg zu erreichen ist, in der sogenannten Routing Table. Das
Kommando, um sich diese Tabelle anzusehen, lautet: route. Wenn wir bisher nur das
Loopback Device konfiguriert haben, wird das Ergebnis folgendes sein:
# /sbin/route
Kernel IP routing table
Destination
Gateway
Use Iface
127.0.0.0
*
2 lo
Genmask
Flags Metric Ref
255.0.0.0
U
0
0
Dies bedeutet, dass alle IP-Pakete für das Netzwerk 127 über das Loopback Device (lo)
geschickt werden sollen. Wenn wir nun eine Netzwerkkarte konfiguriert haben, müssen
wir diese auch in die Routing-Tabelle des Kernels eintragen:
# /sbin/route add -net 192.109.42.0
# /sbin/route
Kernel IP routing table
Destination
Gateway
Genmask
Use Iface
127.0.0.0
*
255.0.0.0
2 lo
192.109.42.0
*
255.255.255.0
137 eth0
Flags Metric Ref
U
0
0
U
0
0
Dies führt dazu, dass alle IP-Pakete für das (Class C) Netz 192.109.42.xxx über das
Interface "eth0" zu erreichen sind. Wenn wir darüberhinaus zwei Netzwerke miteinander
verbinden wollen, müssen wir dies über ein sogenanntes gateway oder über einen
router tun. Wenn über das neue Interface nur ein bestimmtes Netzwerk zu erreichen ist,
und wir die Adresse des Gateways für dieses Netz kennen, müssen wir die RoutingTabelle um genau diesen Eintrag ergänzen. Wir erreichen dies mit der Option -net:
# route add -net 193.174.1.0 gw 192.109.42.17
Dies bedeutet, dass das Netz 193.174.1.0 (Class C) über das Gateway 192.109.42.17
zu erreichen ist, setzt aber auch voraus, dass schon bekannt ist, wie das Netz
192.109.42.x zu ereichen ist. Eine andere häufig anzutreffende Möglichkeit ist es, alle
IP-Pakete, für die es keinen passenden Eintrag in der Routing-Tabelle gibt, an ein
Gateway zu schicken, die sogenannte default route.
# route add default gw 192.109.42.17
Dies würde zu folgender Routing-Tabelle führen.
Kernel IP routing table
Destination
Gateway
Use Iface
127.0.0.0
*
2 lo
Genmask
Flags Metric Ref
255.0.0.0
U
0
0
192.109.42.16
0 eth0
0.0.0.0
0 eth0
0.0.0.0
255.255.255.240 U
0
0
192.109.42.17
0.0.0.0
1
0
UG
Sehen wir uns die Einträge im einzelnen einmal an: die erste Zeile bezieht sich auf das
Loopback Device (127.0.0.0, lo). Wenn wir einen neueren Kernel verwenden, wird dies
unter Umständen nicht angezeigt. Werfen wir jedoch zunächst nochmal einen
genaueren Blick auf die Datei /etc/network/interfaces:
# /etc/network/interfaces -- configuration file for ifup(8),
ifdown(8)
# The loopback interface
iface lo inet loopback
# The first network card - this entry was created during the Debian
installation
# (network, broadcast and gateway are optional)
iface eth0 inet static
address 192.109.42.18
netmask 255.255.255.240
network 192.109.42.16
broadcast 192.109.42.16
gateway 192.109.42.17
Diese Datei definiert einige Variablen, wenn wir eine Änderung an dieser Datei
vornehmen, können wir diese einfach mit dem Kommando ifup eth0 aktivieren. In
den ersten Zeilen wird das sogenannte Loopback Device konfiguriert. Die folgenden
Zeilen beinhalten die benötigten Variablen für unser Netz. In dieser Datei werden IPNummern verwendet. Wenn wir das Kommando route aufrufen um uns die Routing
Tabelle anzeigen zu lassen, werden wir bemerken, dass dort die Namen der Rechner
und Netze verwendet werden. Wir können die Ausgabe der IP-Nummern mit der Option
-n hinter dem Kommando route erzwingen. In der Datei /etc/hosts finden wir den
Namen des lokalen Rechners, in der Datei /etc/networks den Namen des Netzes.
Systeme, deren Name nicht in der Datei /etc/hosts beschrieben sind, werden im
allgemeinen über den Nameserver aufgelöst.
Herunterladen