3. Internet Protocol (IP) Lernziele: – Detailliertes Verständnis von IP – Praktische Einsetzbarkeit dieses Wissens 3.1 Paketformat und Grundlagen RFCs J. Postel. Internet Protocol. RFC 791. 1981. J. Mogul and J. Postel. Internet Standard Subnetting Procedure. RFC 950. 1985. Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 3 Hauptaufgabe von IP Übermittlung von Daten von einem System im Internet zu einem beliebigen anderen System im Internet. IP bietet diese Funktionalität als einen verbindungslosen und unzuverlässigen Datagramm Dienst an. Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 4 IP Paketformat 0 15 7 version hlength type of service identification time to live 31 total length flags protocol fragment offset header checksum source IP address destination IP address options (if any) data Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 5 IP Header Felder I version (4-bits): – aktuell IPv4, Nachfolger IPv6 header length (4 bits): – Anzahl an 32-bit Worten im Header type-of-service (8 bits): – nur 4 bits werden tatsächlich verwendet: • minimize-delay, maximize throughput, maximize reliability, minimize monetary costs – signalisiert den Wunsch des Senders nach einer bestimmten Handhabung des Datagrammes – keine Garantie! – weitgehend von Routern ignoriert Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 6 IP Header Felder II total length (16 bits): – Gesamtgröße des Datagramms in byte identification (16 bits), flags (3 bits), fragment offset (13 bit): – dienen zur Identifizierung der im Datagramm enthaltenen Daten – werden später bei der Fragmentierung behandelt Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 7 IP Header Felder III time-to-live (8 bits): – begrenzt die Anzahl der Router, die durchlaufen werden dürfen, schützt vor zirkulierenden Datagrammen – wird in jedem Router dekrementiert – wenn =0 Datagramm wird verworfen protocol – identifiziert das Protokoll welches das IP Datagramm erzeugte (z.B. TCP, UDP) – Empfänger kann anhand dieses Feldes das Datagramm an die richtige Protokollinstanz weiterleiten (demultiplexen) Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 8 IP Header Felder IV checksum (16 bits): – wird über den gesamten IP Header berechnet – Berechnung beim Sender: • setze das checksum Feld auf 0 • XOR über alle 16-bit Worte im Header • das Ergebnis wird bitweise invertiert und stellt dann den Wert für das checksum Feld dar. – Check beim Emfänger: • XOR über alle 16-bit Worte im Header (inkl. checksum) • OK, wenn im Ergebnis alle bits auf 1 stehen Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 9 IP Header Felder V source/destination IP address (32 bits): Class A: Class B: Class C: 7 bits 24 bits 0 netid hostid 1 0 0.0.0.0 - 127.255.255.255 14 bits 16 bits netid hostid 1 1 0 128.0.0.0 - 191.255.255.255 21 bits 8 bits netid hostid 28 bits multicast group ID Class D: 1 1 1 0 Class E: 27 bits 1 1 1 1 0 (reserved for future use) Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 192.0.0.0 - 223.255.255.255 224.0.0.0 - 239.255.255.255 240.0.0.0 - 247.255.255.255 10 Subnetz Adressierung I Class A und Class B Adressen mehr Bits für hostid als nötig (222 bzw. 216 Hosts) für ein Netzwerk Weitere Strukturierung der Adresse: Class B: 1 0 14 bits 8 bits 8 bits netid subnetid hostid Aufteilung der bits subnetid, hostid lokal und verschieden für jede netid Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 11 Subnetz Adressierung II subnetid ist ausserhalb eines Netzes nicht sichtbar, wird nur lokal verwendet (z.B. innerhalb der Uni Mannheim) Internet 134.155.xxx.xxx subnetid = 15 Uni-Mannheim Router weitere subnetids LAN in L15,16 Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 12 Subnet Adressierung III subnet mask Bsp. für Class B: 16 bits 8 bits 8 bits 1111111111111111 11111111 00000000 subnet mask: 0xffffff00=255.255.255.0 – identifiziert das subnet einer IP Adresse – muß auf jedem System zu jeder IP Adresse vorhanden sein Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 13 Subnet Adressierung Eigene IP Adresse + subnetid erlaubt für ein IP-Datagramm festzustellen wo der Empfänger ist: – im selben Subnetz – im selben Netz aber in anderem Subnetz – in anderem Netz Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 14 Weiteres Vorgehen Internet Control Message Protocol IP tools - ping/traceroute IP-Routing IPv6 Wireless IP Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 15 2.1 Internet Control Message Protocol (ICMP) RFCs J. Postel. Internet Control Message Protocol. RFC 792. 1981 Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 17 Problem Man braucht IP um ICMP Nachrichten zu übertragen. Man braucht ICMP um IP zu verstehen. Wir gehen im folgenden davon aus das IP auf eine später zu beschreibende Art Pakete von einem System zu einem beliebigen anderen System weiterleiten kann und erkunden zunächst ICMP. Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 18 ICMP Aufgabe Übertragung von Fehlernachrichten und Netzwerkspezifischen Informationen – – – – – echo request (8) echo reply (0) destination unreachable (3) timestamp request (13) timestamp reply (14) ICMP ist Bestandteil jeder IP Implementierung Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 19 ICMP Packetformat 0 15 7 31 IP header (20 bytes) type code checksum content abhängig von type und code Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 20 ICMP Header Felder type: um welche ICMP Nachrichtentyp handelt es sich? Z.B. 3 für destination unreachable. code: um welche Unterklasse handelt es sich? Z.B. type=3 code=0 für network unreachable. checksum: wie für IP berechnet, bezieht sich jedoch auf die vollständige ICMP Nachricht (nicht den IP header!). Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 21 Zwei Klassen von ICMP Nachrichten query: – bestehen jeweils aus 2 Typen, einen für request und einen für reply – wird aktiv benutzt um Informationen von einem System zu bekommen – ein Beispiel ist echo request/reply, wird u.A. für das ping Tool verwendet (behandeln wir ausführlich im Anschluß an dieses Kapitel!) Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 22 Zwei Klassen von ICMP Nachrichten error – wird ausgelöst durch ein IP Paket, i.d.R. weil ein Fehler aufgetreten ist – enthält im Paket Rumpf immer den IP Header und die ersten 8 Bytes des Paketes das den ICMP error ausgelöst hat – im Folgenden genauer betrachtet Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 23 ICMP Error werden nicht generiert als Reaktion auf: – ICMP error Nachricht – IP Paket an einen broadcast oder multicast Adresse – ein IP Paket das als link layer broadcast verschickt wurde – ein Fragment welches nicht das erste eines IP Paketes ist – ein IP Paket dessen Absender keine einzelnes System ist (multicast/broadcast/etc.) Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 24 ICMP Port Unreachable Error Wird von einem System erzeugt, wenn ein UDP Paket empfangen wurde für einen Port der von keinem Prozeß auf diesem System benutzt wird. wird an den Absender des Pakets geschickt das ist üblich für ICMP Pakete! Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 25 ICMP Port Unreachable Nachricht 0 15 7 31 IP header (20 bytes) type (3) code (3) checksum unused (0) IP header (incl. options) + first 8 bytes of original IP packet data Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 26 Demo tfpt - trivial file transfer protocol Dateiübertragung per UDP $ tftp $ connect <host> <port> illegalen port verwenden! $ get <file> # tcpdump host <host> and icmp (parallel zu get) Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 27 3.3 ping ping wird benutzt um festzustellen, ob zwei Systeme über IP miteinander kommunizieren können ping-client sendet einen ICMP echo request ping-server antwortet mit einem ICMP echo reply ping client/server ist Bestandteil der meisten Betriebssysteme Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 29 ICMP echo request/reply 0 15 7 31 IP header (20 bytes) type=0/8 code=0 checksum identifier sequence number timestamp data (optional) Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 30 Demo $ ping <host> Achtung, ping ist auf verschiedenen Betriebssystemen verschieden implementiert! Insbesondere die Optionen heissen immer anders als man denkt. ein Blick in die man pages hilft! Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 31 IP Record Route Option IP (nicht ICMP!) hat eine Option, die dafür sorgt, daß jeder Router seine IP Adresse in den IP header einträgt. Dies ist die IP Adresse des Interfaces auf welches das Paket weitergeleitet wird. Diese Option kann von ping „eingeschaltet“ werden um den Weg zu bestimmen, den ein IP Paket zurücklegt. Diese Informationen werden vom ping-server im Datenteil des echo reply zum client zurückgeschickt. Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 32 IP Paketformat 0 15 7 version hlength type of service identification time to live 31 total length flags protocol fragment offset header checksum source IP address destination IP address options (if any) data Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 33 IP Record Route Option Paketformat 0 15 7 version hlength type of service identification time to live 31 total length flags protocol fragment offset header checksum source IP address destination IP address code (7) option length pointer IP address 1 IP address 1 IP address 2 IP address 9 data data Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 34 Demo record route kann bei ping üblicherweise mit -R eingestellt werden funktioniert nicht auf allen Systemen/mit allen routern maximal 9! router haben Platz im header traceroute ist besser geeignet für diese Aufgabe! Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 35 3.4 traceroute traceroute - Aufgabe traceroute gibt Informationen über alle Router, die auf dem Weg zu einer IP Adresse liegen. Dabei wird auch die round-trip Zeit zu jedem router bestimmt. Es gibt keine Beschränkung über die Anzahl der Router (wie etwa bei ping). Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 37 traceroute - Funktionsweise I traceroute schickt ein UDP Paket an die Adresse, für die der Weg untersucht werden soll; ttl im IP header wird auf 1 gesetzt der erste Router verwirft das IP Paket (ttl=1!) und schickt ein ICMP time exceeded error an den Absender traceroute wiederholt dies mit ttl=2, etc. Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 38 ICMP time exceeded Nachricht 0 15 7 31 IP header (20 bytes) type (11) code (0) checksum unused (0) IP header (incl. options) + first 8 bytes of original IP packet data Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 39 traceroute - Funktionsweise II Wie erkennt man ob das Paket schließlich beim Empfänger angekommen ist? traceroute sendet UDP an einen Port der wahrscheinlich nicht verwendet wird und erwartet eine ICMP port unreachable Nachricht vom Empfänger! traceroute ist ein „hack“, besser wäre ein geeignetes Protokoll Design! Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 40 Demo $ traceroute <host> Achtung! Traceroute berichtet die IP Adresse des Interfaces auf dem das Paket ankommt! Unterschied zu ping -R! Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 41 traceroute & source routing es gibt eine IP Option für source routing die von manchen traceroute Implementierungen verwendet werden kann (-g Parameter) source routing: – erlaubt es dem Absender eine Liste von IP Adressen (i.d.R. von Routern) im IP header anzugeben, die nacheinander durchlaufen werden, bevor das Paket dem Empfänger zugestellt wird – ermöglicht es als Absender den Weg eines Paketes zum großen Teil zu bestimmen Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 42 IP Source Routing Option Paketformat 0 15 7 version hlength type of service identification time to live 31 total length flags protocol fragment offset header checksum source IP address destination IP address (erste angegebene IP Adresse) code (0x83/0x87) option length pointer IP address 1 IP address 1 (zweite angegebene IP Adresse) IP address 2 IP address 9 (eigentliche Zieladresse) data data Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 43 IP Source Routing Funktionsweise I der Sender nimmt die source route Liste von der Anwendung, und hängt die eigentliche Zieladresse an diese Liste an. Die Empfänger Adresse im IP Paket wird auf den ersten Eintrag in der Liste gesetzt und der Rest der Liste in die IP Source Routing Option geschrieben (max. 9 Eintäge!) Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 44 IP Source Routing Funktionsweise II Ein Empfänger eines IP Paketes überprüft, ob die Liste vollständig abgearbeitet wurde. – Wenn ja, dann ist er endgültiger Empfänger. – Wenn nein, dann wird die IP Adresse auf die das pointer Feld zeigt als neue Empfänger Adresse in das IP Paket eingetragen. Die IP Adresse des Interfaces auf welches das IP Paket weitergeleitet wird wird in das Feld geschrieben (auf die Position auf die das pointer Feld zeigt). Der Inhalt des pointer Feldes wird um 4 erhöht. Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 45 IP Source Routing Beispiel 134.155.48.97 thales Mannheim1.BelWue.de 129.143.61.5 129.143.1.161 194.163.254.162 www.spiegel.de Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 46 IP Source Routing Beispiel 0 15 7 version hlength type of service total length identification time to live 31 flags protocol fragment offset header checksum 134.155.48.97 (thales) 129.143.61.5 (Mannheim1.....) code (0x83) option length= 7 pointer=4 194.163.254.162 www.spiegel.de 194.163.254.162 data data Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 47 IP Source Routing Beispiel 0 15 7 version hlength type of service total length identification time to live 31 flags protocol fragment offset header checksum 134.155.48.97 (thales) 194.163.254.162 (www.spiegel.de) code (0x83) option length= 7 pointer=8 129.143.1.161 (Mannheim1.....) 129.143.1.161 data data Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 48 IP Source Routing loose: die Angegebenen IP Adressen müssen nicht benachbart sein strict: die Angegebenen IP Adressen müssen benachbart sein, sonst wird das Paket verworfen und eine ICMP source route failed Nachricht an den Sender geschickt. Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 49 Keine Live-Demo! Source Routing ist nahezu überall abgeschaltet da es ein Sicherheitsrisiko darstellt - IP Spoofing! Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 50 3.5 IP-Routing Begriffe Endsystem: – mindestens ein Netzwerkinterface/eine IP Adresse – kann IP Pakete empfangen und senden – leitet keine Pakete weiter Router oder Gateway: – mindestens zwei Netzwerkinterfaces/zwei IP Adressen – kann IP Pakete empfangen, senden und weiterleiten System = Endsystem oder Router Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 52 Routing Tabelle Gibt es in jedem System! Einträge haben die folgenden Felder: – Destination • vollständige IP Adresse oder • netz/subnetz Bezeichnung • „künstliche“ Adresse z.B. local host 127.0.0.1 – – – – Gateway Mask Interface Flags (U: route ist „up“, G: route führt über einen Router, H: route ist zu einem Endsystem) Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 53 Demo ifconfig wird zur Einrichtung von Netzwerkschnittstellen verwendet $ ifconfig -a gibt uns detaillierte Infos über die Schnittstellen netstat gibt uns Netzwerkinfos über eine System $ netstat -r Routingtabelle $ netstat -i Interfaceinfos Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 54 Routing bei gegebener Routing Tabelle Ist die Empfägeradresse des IP Paketes identisch mit einer vollständigen destination Adresse in der Routing Tabelle erkennbar an flag H? – ja: wähle diesen Eintrag und handele entsprechend! – nein: weiter. Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 55 Routing bei gegebener Routing Tabelle Gehört die Empfägeradresse des IP Paketes zu einem der Subnetze die unter den Destination Adressen in der Routing Tabelle genannt sind? – um dies festzustellen: nimm die Emfängeradresse des IP Pakete, führe eine logische UND Verknüpfung mit der (subnet) Mask durch und schaue, ob das Ergebnis mit dem Eintrag unter Destination übereinstimmt. – Wenn ja: wähle diesen Entrag und handele entsprechend – Wenn nein: wähle den default Eintrag und handele entsprechend Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 56 Beispiel Destination 134.155.48.0 127.0.0.0 default Gateway Mask * 255.255.240.0 * 255.0.0.0 mannhattan 0.0.0.0 Flags U U UG Interface eth0 lo eth0 IP Empfängeradresse: 134.155.48.10 Es gibt keine passende vollständige IP Adresse unter Destination! 134.155.48.10 & 255.255.240.0 = 134.155.48.0 d.h. es wird der erste Eintrag der Routing Tabelle benutzt! Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 57 Eintrag gefunden, was nun? Ist ein Gateway angegenben (flag G gesetzt)? – ja: leite das Paket an das Gateway (Router) weiter. Benutze dazu das in der Tabelle angegebene Schicht 2 Interface. Schicht 2 Adresse = Adresse des Routers. – nein: Empfänger ist in einem Netzt an das wir direkt angrenzen. Das Paket kann direkt an den Empfänger weitergeleitet werden. Eventuell wird dazu ARP benötigt! Schicht 2 Adresse = Adresse des Empfängers. Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 58 Live Übung Destination 134.155.0.0 134.155.48.10 134.155.48.11 134.155.48.20 134.156.110.0 134.156.110.2 127.0.0.0 default Gateway 132.15.50.200 132.15.50.100 132.15.50.100 132.15.50.100 * * * 138.154.20.100 Mask 255.255.0.0 255.255.255.255 255.255.255.255 255.255.255.255 255.255.240.0 255.255.255.255 255.0.0.0 0.0.0.0 Flags Interface UG eth1 UHG eth1 UHG eth1 HG eth1 U eth0 UH eth0 U lo UG eth3 Routen sie die folgenden IP Adressen: 134.155.48.30 134.156.111.1 134.155.48.20 134.156.200.1 Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 134.155.48.11 134.156.110.2 110.40.4.4 134.155.59.50 59 Wie kommen die Einträge in die Routing Tabelle? Wenn das System gestartet wird, werden vom Systemverwalter konfigurierte Einträge geladen. Zur Laufzeit kann man Einträge mit dem route Befehl hinzufügen/löschen – Beispiel: route add -host 134.155.48.10 -gw 134.155.50.200 eth0 Endsystem: dynamic default router discovery. Router: Dynamisch mit Hilfe von Routing Protokollen Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 60 Dynamic Default Router Discovery ICMP Router Advertisement Messages werden periodisch auf die „all hosts“ multicast Adresse 224.0.0.1 gesendet (üblicherweise alle 7 Minuten). ICMP Router Solicitation Messages werden von Endsystemen auf die „all routers“ multicast adresse 224.0.0.2 geschickt um ICMP Router Advertisment Messages ausser der Reihe zu erzeugen. Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 61 ICMP Router Advertisement Nachricht 0 15 7 31 IP header (20 bytes) type (9) code (0) checksum num addr. addr. size lifetime Router Address 1 preference 1 Router Address 2 preference 2 Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 62 ICMP Router Solicitation Nachricht 0 15 7 31 IP header (20 bytes) type (10) code (0) checksum reserved Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 63 Problem Endsystem LAN router LAN Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP default router Internet 64 Lösung(sversuch) Wenn ein Router ein Paket auf das selbe Interface zurückschickt von dem er es bekommen hat, kann er einen ICMP redirect error an den Absender des Paketes verschicken. Empfäng ein Endsystem einen ICMP redirect error, so sollte er seine Routingtabelle entsprechen ändern. Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 65 ICMP Redirect Error 0 15 7 31 IP header (20 bytes) type (5) code (0-3) checksum IP Adresse des alternativen Routers der besser geeignet ist IP header (incl. options) + first 8 bytes of original IP packet data code 0: redirect packet for the network code 1: redirect packet for the host code 2: redirect packet for the Type of Service and network code 1: redirect packet for the Type of Service and host Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 66 ICMP Redirect Probleme Sicherheitsrisiko! Man kann damit das routing eines Endsystems beeinflussen. Keine Unterstützung für subnets. Meist abgeschaltet! Mauve - Internet Protokolle - WS00/01 - Kapitel 3: IP 67