5. Termin 1: Discover a Network

Versetzt euch bitte in folgende Situation:

Ihr habt das Studium gerade (erfolgreich) beendet und eine Stellung als Systemadministrator in einem mittelgroßen Unternehmen angenommen (ihr wolltet schon immer mal "Herr über tausend Rechner" sein). Euer Vorgänger wurde leider "unsanft" aus der Firma gedrängt und hat aus Rache einige wichtige Unterlagen "verlegt". So auch einen Plan über das gesamte Firmennetzwerk.

Die erste Aufgabe, die euch euer Chef erteilt, besteht nun erwartungsgemäß darin, die vorhandene Netzwerkstruktur auszukundschaften und deren Topologie in einem Plan festzuhalten. Aber das ist ja kein großes Problem, da ihr so etwas während des Studiums im Praktikum Kommunikationsnetze schon einmal gemacht habt.

Die TU-Berlin hat ein sehr großes und komplexes Netzwerk, bei dem es wirklich sehr interessant wäre, mal Systemadministrator zu spielen und auszuspionieren, welche Rechner bzw. Subnetze miteinander verbunden sind.

Aber leider ist so ein komplexes Netzwerk auch sehr aufwendig in der Verwaltung und anfällig für Fehlkonfiguration und Ausfall, sodass es uns leider nicht als Spielfeld für Versuche zur Verfügung steht.

Deswegen wird auf einem simulierten Netzwerk gearbeitet. Das Simulationsprogramm, das ihr dazu verwendet, heißt KNet (siehe Kapitel: Das KNet-Programm).

Jede Instanz dieses Programms simuliert einen Rechner (Netzknoten) bzw. ein Subnetz (beliebiger Größe), je nachdem wie diese Instanz konfiguriert wurde (üblicherweise durch eine Konfigurationsdatei, die beim Programmstart als Argument angegeben wird).

Damit ihr "ordentlich etwas zu tun habt", und auf einem "richtig großen" Netzwerk spielen könnt, werdet ihr hier mit 12 Instanzen arbeiten, die auf einem oder mehreren Rechnern verteilt sind.

Für jede KNet-Instanz müsst Ihr ein eigenes Terminal (z.B. terminal) starten. Je nach Konfigurationsdatei simuliert dann KNet einen der Firmenrechner bzw. Subnetze, die "irgendwie" miteinander verbunden sind.

Wenn KNet gestartet ist, erhaltet ihr folgende Zeile in der Eingabeaufforderung (KNet-Prompt):

KNet (hostname) :

wobei hostname der in der Konfigurationsdatei definierte Hostname ist (z.B. Aachen).

Die Netzwerktopologie könnt ihr auskundschaften, indem ihr von jedem der 12 "Firmenrechner" (Netzwerkknoten) zu jedem der 11 anderen einen traceroute-Befehl ausführt und abschließend alle so erhaltenen Verbindungsinformationen (und Hostnamen !! (A = Aachen), .. ) miteinander vergleicht.

KNet(Aachen):traceroute A
KNet(Aachen):traceroute C
KNet(Aachen):traceroute D
...
KNet(Bremen):traceroute A
KNet(Bremen):traceroute C
...
KNet(Ludwbg);traceroute A
KNet(Ludwbg):traceroute B

traceroute liefert dabei folgende Ausgabe:

KNet(Giessen):traceroute A
TraceRoute: Timeout, no answer from Host Aachen!!

falls kein Weg zu dem Knoten hostname hin bzw. von ihm zurück existiert und die Daten irgendwo verloren gegangen sind. Dies kann mehrere Ursachen haben:

Zum einen ist es müglich, dass einer der Netzwerkknoten nicht gestartet wurde oder ein Fehler bei der Initialisierung geschehen ist (z.B. der IP-Port schon belegt war).

Zum anderen kann es aber auch sein, dass der Netzwerkknoten nur von bestimmten Knoten aus erreichbar ist. Sucht auf allen Konsolen nach Fehlermeldungen. Die werden euch dabei weiterhelfen! Falls mann eine Antwort auf die gesendeten Daten bekommt, erhält man so eine Liste aller Knoten (auch des eigenen), über die diese Daten geleitet wurden:

KNet(Giessen):traceroute A
TraceRoute to Aachen (31.55.93.1)
Giessen --> Duisbg --> Aachen
Aachen-->Celle-->Hannover-->Frankfurt-->Giessen
 
KNet(Duisbg):traceroute F
TraceRoute to Frankfurt (31.55.157.1)
Duisbg --> Frankfurt
Frankfurt --> Essen --> Duisbg

Zeichnet die erhaltene Topologie, inklusive der Adresshierarchie (Einteilung der Netzwerkadressen in Subnetze) und der erhaltenen Namen auf. Notiert dazu, welche Rechner (bzw. Adressen) von welchem Rechner aus erreichbar sind und über welche Knoten die Daten geleitet wurden.

Wenn ihr die Struktur und die Adresshierarchie des Netzwerkes erkannt habt, probiert auch mal traceroute oder ping zu Adressen aus, die dem einen oder anderen Knoten "ähnlich" sind:

KNet(Giessen):traceroute A
TraceRoute to Aachen (31.55.93.1)
Giessen --> Duisbg --> Aachen
Aachen -->Celle-->Hannover-->Frankfurt-->Giessen
 
KNet(Giessen):traceroute 31.55.93.17
TraceRoute to Aachen (31.55.93.17)
Giessen --> Duisbg --> Aachen
Aachen-->Celle-->Hannover-->Frankfurt-->Giessen
 
KNet(Giessen):traceroute 31.55.93.31
TraceRoute to Aachen (31.55.93.31)
Giessen --> Duisbg --> Aachen
Aachen-->Celle-->Hannover-->Frankfurt-->Giessen
 
KNet(Giessen):traceroute 31.55.93.32
TraceRoute: Timeout, no answer from Host 31.55.93.32 !!
 
KNet(Giessen):traceroute 31.55.92.1
TraceRoute: Timeout, no answer from Host 31.55.92.1 !!
 
KNet(Giessen):traceroute 31.55.94.1
TraceRoute: Timeout, no answer from Hast 31.55.94.1 !!

Aus diesem Beispiel könnt ihr schließen, dass der Knoten A (=Aachen, 31.55.93.1) auf alle Netzwerkadressen von 31.55.93.1 bis 31.55.93.31 antwortet (ihr könnt auch alle Adressen ausprobieren).

Netzwerkadressen werden (im Internet) immer in Gruppengrößen einer Zweier-Potenz (4, 8, 16, 32, 64, 128) zusammengefasst (siehe Kapitel Das Internet).

Der Grund dieser Konvention ist, dass man eine Netzwerkadresse bitweise mit einer Netzwerkmaske UND-verknüpft, um festzustellen, wohin das dazugehörige Datenpaket gesendet werden soll. Um zum Beispiel alle Adressen zwischen 32 und 63 (eine Gruppe aus 32 Adressen) auszuwerten, wird die Adresse mit 224 (= 255 - 31 = 0xE0) UND-verknüpft. Ist das Ergebnis 32, so liegt die Adresse in dem gesuchten Bereich. Die Netzmaske wäre im obigen Fall 255.255.255.224 (OxFF.FF.FF.EO).

Hinweis:
Um es euch nicht zu einfach zu machen, sind bei dieser Aufgabe die KNet-Befehle "HOSTS", "LINKS" und "ROUTES", mit denen man sich die internen Tabellen ansehen kann, für euch gesperrt.