Einführung in Subnetting / IP-Berechnung ========================================= Grundlegendes zum Verständnis von Subnetting ============================================= Rechner im Internet werden über IP-Adressen angesprochen, die eindeutig sind. Eine IP-Adresse (IP) ist eine 32-bit-Zahl und enthält sowohl die Netzkennung als auch die Hostkennung eines Rechners. In der kürzeren Dezimalschreibweise sieht eine IP zum Beispiel aus wie "192.168.0.1", jede der 4 durch Punkte getrennten Zahlen repräsentiert eine 8bit-Binärzahl. Sie wird auch als Oktett bezeichnet und kann Werte zwischen 0 (binär 00000000) und 255 (binär 11111111) annehmen. Die zur IP gehörende Subnetmaske (ebenfalls 32bit) gibt an, welcher Teil der IP Hostkennung und welcher Netzkennung ist. Sie ermöglicht die Teilung eines Gesamtnetzes in mehrere kleinere Teilnetze. Am besten ist dies in der Binärdarstellung der Netmask zu sehen : Die Netzkennung ist (von links nach rechts betrachtet) der Teil der IP, bei dem die Bits der Netmask 1 sind. Als Beispiel betrachten wir die häufig in privaten LANs genutzte IP 192.168.0.1 mit einer typischen Subnetzmaske von 255.255.255.0. //Darstellung 1 : Dezimal- und Binärschreibweise von Subnetzmasken (siehe auch zur Hilfe Anhang A) IP(dez) : 192 168 0 1 SNM(dez) : 255 255 255 0 SNM(bin) : 11111111 11111111 11111111 00000000 |<-------- Netzkennung ---------------->| |<-- Hostkennung -->| Wie anhand der Darstellung zu sehen ist, befindet sich der Host im Subnetz 192.168.0. und ist hat die erste Hostadresse in diesem Netz. Da eine Subnetzmaske definiert, wie viele Bits zur Adressierung des Hosts, und wieviel zur Adressierung des Netzes zur Verfügung stehen, legt sie die maximale Anzahl der Hosts und Netze fest - je mehr Bits für die Hostkennung verwendet werden, desto weniger stehen für die Netzkennung zur Verfügung. Der gesamte IP4-Adressraum ist zwar relativ gross, aber begrenzt. Auch die CIDR-Darstellung der Netzwerkmaske lässt sich an obiger Darstellung gut illustrieren. Es handelt sich hierbei um eine Kurzdarstellung der Netzmaske, die die Anzahl der auf 1 gesetzten Bits in der Subnetzmaske angibt. Ihr wird meist ein Slash ("/") vorangesetzt, so dass man an Stelle unserer Darstellung "IP : 192.168.0.1, SNM : 255.255.255.0" in CIDR-Schreibweise auch "192.168.0.1/24" schreiben kann. Dies gibt an, das die Subnetzmaske 24 Bits hat, die auf 1 gesetzt sind (siehe Darstellung 1). Früher teilte man die IP-Adressen in Klassen ein, je nach Subnetzmaske. Gebräuchlich waren die Subnetzmasken 255.0.0.0 ("Klasse-A-Netze"), 255.255.0.0 ("Klasse-B-Netze") und 255.255.255.0 ("Klasse-C-Netze"). Unsere IP 192.168.0.1/24 wäre also ein Rechner in einem Klasse-C-Netz. Man Beachte : Es spricht nichts dagegen, Subnetzmasken wie /21 oder /7 zu benutzen, bei denen die Trennung von Host- und Netzteil in dezimaler Schreibweise nicht zwischen den einzelnen Oktetten liegt. Dies war aber damals nicht notwendig und daher nicht vorgesehen. Lediglich /8, /16 und /24 Netze (also Klasse A,B, und C) waren in Benutzung, man spricht daher von diesem Schema als klassenbasierte IP-Adressierung. Man teile die das Internets also in Klasse A, B, und C-Netze auf und definierte Adressbereiche für die einzelnen Netztypen : //Tabelle 1 : klassenbasierte IP-Adressierung Adressklasse | Netzbits | Hostbits | Adressbereich* | Anzahl Netze | Anzahl Hosts | Subnetzmaske --------------+----------+----------+----------------+--------------+--------------+--------------- A | 8 | 24 | 0 - 126 | 126 | 16777216 | 255.0.0.0 B | 16 | 16 | 128 - 191 | 16384 | 65536 | 255.255.0.0 C | 24 | 8 | 192 - 223 | 2097152 | 256 | 255.255.255.0 * erstes Oktett der IP in Dezimalschreibweise Man Beachte : Es spricht ebenfalls nichts dagegen, dass ein Rechner die Adresse IP : 10.11.12.12 SNM : 255.255.255.0 besitzt, obwohl das erste Oktett der Definition nach ein Klasse A Netz sein sollte und somit eine SNM von 255.0.0.0 habe sollte. Dies widerspricht lediglich der damaligen Definition, ist aber möglich. Beim Betrachten von Tabelle 1 ist auffällig, das einige Adressbereiche nicht aufgeführt sind. Diese Bereiche sind für besondere Aufgaben reserviert. Siehe dazu Anhang B. Jeder, der öffentliche IP-Adressen benötigte, bekam ein (oder auch mehrere) Adressbereiche zugeteilt - je nach Bedarf an IP-Adressen ein Class-A, -B oder -C-Netz. Bald wurden die ~ 4 Milliarden IP-Adressen knapp, und es wurden Massnahmen zur Bekämpfung des Mangels eingeführt. NAT (network address translation, Nutzung einer gemeinsamen öffentlichen IP durch viele Rechner mit privaten IPs hinter einem Router) und die klassenlose IP-Adressierung das Ergebnis. Man bezeichnet häufig Subnetze, die keine der SNMs von /8, /16 oder /24 haben, als klassenlose Subnetze. Durch klassenlose Adressierung lässt sich die Anzahl der maximalen Hosts pro Subnetz besser dosieren, weniger IP-Verschwendung ist die Folge. Hinweis : Eine längerfristige Lösung war die Einführung von IPv6, das die Adresslänge von 32 auf 128 Bit erhöht, und amit natürlich die Anzahl der zur Verfügung stehenden IP-Adressen dramatisch erhöht. Bis heute (Stand April 2004) ist aber IPv4 die mit Abstand am weitesten Verbreitete Adressierungsmethode, IPv6-Testnetze existieren aber seit geraumer Zeit, erste Produktionsumgebungen mit IPv6 bestehen ebenfalls. Dieses Dokument beschäftigt sich nicht mit IPv6, da bis zu dessen globalem Einsatz noch einige Jahre vergehen werden. Berechnen von Subnetzeigenschaften - kommentierte Beispiele ============================================================ Beispiel 1 : ------------- Aufgabe : Gegeben ist eine IP und die zugehörige Subnetzmaske in Dezimalschreibweise. Berechnen Sie die Netzwerkadresse des zugehörigen Subnetzes, dessen Broadcast-Adresse und die Anzahl der Hosts, die maximal in diesem Subnetz untergebracht werden können. Gegeben : IP 113.8.66.42, Netmask 255.255.255.240 Rechnung : Schritt 1 - Umwandlung der dezimalen Netmask in CIDR-Schreibweise Die dezimale Darstellung der Netmask ( hier z.B. 255.255.255.240) ist dem Verständnis der CIDR-Schreibweise eher hinderlich. Also wird die SNM zu erst in binary umgewandelt, daraus kann man die CIDR einfach ablesen : dezimal 255 255 255 240 bin 11111111 11111111 11111111 11110000 Anzahl Bits 1 : 8 + 8 + 8 + 4 = 28 CIDR /28 Die CIDR ist folglich 28. Schritt 2 - maximale Anzahl Hosts pro Subnetz bestimmen Mit Hilfe der CIDR kann die maximale Anzahl von Hosts berechnet werden, die in jedem einzelnen der entstehenden Subnetzte untergebracht werden können : Eine IP-Adresse hat 32 Bit, eine CIDR von 28 bedeutet, dass 28 Bit davon Netzkennung sind. Folglich bleiben 4 Bit für die Hostkennung übrig. Wir könnten also theoretisch 2^4 Hosts pro Subnetz unterbringen. Die erste IP des Subnetzes ist jedoch als Netzwerkadresse des Subnetzes selbst reserviert, die letzte IP eines Subnetzes dient den Hosts des Subnetztes als Broadcast- Adresse. Daher müssen diese beiden Adressen von der theoretisch maximalen Anzahl subtrahiert werden. Es ergibt sich in unserem Fall : 32 - 28 = 4 /* (Anzahl der Bits der IP-Adresse) - (CIDR) = (Anzahl Bits der Hostkennung) */ 2^4 = 16 /* 2 hoch (Anzahl Bits der Hostkennung) = theoretische Maximalanzahl der Hosts */ 16 - 2 = 14 /* 2 subtrahieren wegen Netzkennung und Broadcast */ Man kann folglich 14 Hosts pro Subnetz adressieren. Schritt 3 - Netzadresse des Gesamtnetzes bestimmen, in dem sich die IP befindet. Die in Schritt 1 bestimmte CIDR zeigt, dass die von links gesehen ersten 28 Bit der IP-Adresse die Netzkennung sind und die von rechts gesehen ersten 4 Bit die Hostkennunng. Das Umwandeln der IP in das Binärsystem ergibt folgendes : IP (dezimal): 113. 8. 66. 42 IP (binary) : 01110001 00001000 01000010 00101010 Um die Netzwerkadresse zu bestimmen, beachten wir nur den Teil der IP, bei dem die SNM auf 1 gesetzt ist : SNM (binary) : 11111111 11111111 11111111 11110000 Die Netzkennung lautet folglich in binary : 01110001 00001000 01000010 00100000 Beachten Sie, das die letzten 4 Bits Null sind, da die Subnetzmaske an diesen STellen 0 ist, und diese Zahlen folglich nicht zur Netzkennung, sondern zur Hostkennung gehören! Das Umwandeln ins Dezimalsystem ergibt : 113. 8. 66. 32 Folglich ist die Netzkennung 113.8.66.32. Schritt 4 - Bestimmen der Schrittweite der einzelnen Subnetze Zuerst ist das erste Oktett der Subnetzmaske zu bestimmen, dass nicht komplett aus Bits besteht, die auf 1 gesetzt sind. In der Dezimalschreibweise also von links nach rechts das erste Oktett, das nicht 255 lautet. In unserem Fall ist es das vierte Oktett, es lautet '240'. 256 - 240 = 16 Die Schrittweite ist also 16. Schritt 5 - Bestimmen der Start- und End-IP-Adressen der einzelnen Subnetze sowie von deren Broadcastadressen Die Netzkennung des ersten Subnetzes lautet 113.8.66.32 (siehe Schritt 3). Es wird nun das erste Oktett der IP benötigt, in dem die Hostkennung beginnt (also das von links gesehen erste, in dem die Subnetzmaske nicht 255 lautet). Dies ist in unserem Fall das vierte Oktett. Nur dieses betrachten wir im Folgenden : Die Netzkennung des ersten Subnetztes lautet im vierten Oktett 32, da die Schrittweite 16 beträgt (siehe Schritt 4), beginnt das nächste Subnetz bei 48, das darauf folgende bei 64, und so weiter. Daraus ergeben sich die IP-Adressen in den jeweiligen Subnetzen - sie liegen zwischen den Netzkennungen der SUbnetze. Die Broadcastadresse ist jeweils die letzte IP vor der Netzkennung des nächsten Subnetztes. Es ergibt sich in unserem Fall : Subnetz 1 Netzkennung 113.8.66.32 IP-Bereich : 113.8.66.33 - 113.8.66.46 Broadcastadresse : 113.8.66.47 Subnetz 2 Netzkennung 113.8.66.48 IP-Bereich : 113.8.66.49 - 113.8.66.62 Broadcastadresse : 113.8.66.63 Subnetz 3 Netzkennung 113.8.66.64 IP-Bereich : 113.8.66.65 - 113.8.66.78 Broadcastadresse : 113.8.66.79 . . . und so weiter Damit sind wir fertig. Unser Host mit der IP 113.8.66.42 liegt im Subnetz 1, die weiteren Subnetze hätten wir nicht berechnen müssen, zur Verdeutlichung ist es hier aber geschehen. Anhang ======= Anhang A - Potenzen von 2 in dezimal und binary ------------------------------------------------ Das flüssige Rechnen mit Potenzen von 2 im binären Zahlensystem ist für IP- und Subnetzberechnungen sehr hilfreich. Die folgenden Werte sollten bekannt sein. | 2^7 | 2^6 | 2^5 | 2^4 | 2^3 | 2^2 | 2^1 | 2^0 --------+----------+----------+----------+----------+-----------+----------+----------+---------- dezimal | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 binary | 10000000 | 01000000 | 00100000 | 00010000 | 00001000 | 00000100 | 00000010 | 00000001 addiert(d)->128------->192------->224------->240--------->248------->252------->254------->255 addiert(b)10000000 11000000 11100000 11110000 11111000 11111100 11111110 11111111 Anhang B - für besondere Aufgaben reservierte Adressbereiche ------------------------------------------------------------- 1. loopback - 127.0.0.1 Das gesammte Netz mit der Kennung 127.0.0.0 ist nicht verfügbar, da 127.0.0.1 als sogenannte Loopback-Adresse definiert ist - jeder Rechner kann sich selbst unter dieser Adresse ansprechen und löst diese meist in den DNS-Namen 'localhost' auf. Dies ist einfach in jeder Shell nachzuvollziehen : root@threat # ping localhost PING localhost (127.0.0.1): 56 data bytes 64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=10.5 ms 64 bytes from 127.0.0.1: icmp_seq=1 ttl=255 time=12.1 ms --- localhost ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max = 17.1/22.3/27.5 ms 2. private IP-Bereiche Als privat definierte Adressbereiche werden im Internet nicht geroutet und können somit problemlos von jedem in privaten Netzwerken verwendet werden, ohne sich um die Beschaffung einer öffentlichen IP kümmern zu müssen. Hinweis : Rechner mit IPs aus diesen Adressbereichen können nur über Router, die NAT ausführen, ans Internet angeschlossen werden. Bei der Einwahl zu Ihrem Internetprovider über Modem / ISDN wird Ihrem Rechner eine öffentliche IP aus dessen Pool zugewiesen, sie verwenden in diesem Fall keine private IP. Bei einem Rechner, der über eine mit einer privaten IP belegten Ethernet-Karte über einen DSL-Router ans Internet angeschlossen ist, führt dieser Router NAT aus und verfügt auf dem zum Internet gerichteten Anschluss ebenfalls über eine öffentliche IP. Folgende Adressbereiche sind als privat definiert : 10.0.0.0 bis 10.255.255.255 ( Class A ) 172.16.0.0 bis 172.31.255.255 ( Class B ) 192.168.0.0 bis 192.168.255.255 ( Class C ) 3. diverse für Testzwecke reservierte Adressbereiche Anhang C - Empfohlene Dokumente -------------------------------- [1] Understanding IP Addressing - http://www.3com.com/other/pdfs/infra/corpinfo/en_US/501302.pdf Quelle: http://it.rcmd.org/networks/subnetting/subnetting.txt