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 IPAdressen 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
16
Class-B-Netze Adressbereich 172.16.0.0
Adressbereich 10.0.0.0
256 Class-C-Netze Adressbereich 192.168.0.0
bis
10.255.255.255
bis
172.31.255.255
bis
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/IPNetzen 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) byte
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 EndeAnforderung 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 FTP-Daemon. 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 RechnerNamen 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/IP-Protokolle, 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 Routing-Tabelle 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
192.109.42.16
0.0.0.0
0 eth0
0.0.0.0
192.109.42.17
0 eth0
Genmask
Flags Metric Ref
255.0.0.0
U
0
0
255.255.255.240 U
0
0
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 IP-Nummern
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