Wow, ist das Zirpen der Grillen ohrenbetäubend. Sicherlich hat jemand die Fähigkeiten, die uns durch dieses Dilemma zu bekommen? ![]()
OK, einige Hinweise Sie durch die Herausforderung zu bekommen. Beginnen wir mit der Lösung dieses wie eine IPv4-Adresse zu starten und dann werden wir unseren Weg in IPv6 arbeiten. Nehmen Sie den Adressbereich wollen wir erfassen ist 192.168.1.10 - 192.168.1.20. Das große Problem ist die IPs nicht auf einer geraden Byte-Grenze. Wir könnten etwas tun:
src net 192.168.1.0/27
aber das würde uns Adressen von 0,0 bis 0,31, mehr IPs als wir eigentlich sehen wollte. Zur Lösung dieses Problems werden wir brauchen, um einige Operatoren und Primitiven verwenden. Eine Möglichkeit ist:
(Ip [12] = 192 und ip [13] = 168 und ip [14] = 1 und (ip [15]> = 10 und ip [15] <= 20))
Beginnend mit dem innersten Klammern, liest die obige Aussage "Byte 15 muss größer als oder gleich 10, aber es muss auch weniger als oder gleich 20 ist. Wenn diese Aussage wahr ist, stellen Sie sicher, Byte 12 ist gleich 192, wird Byte 13 gleich 168 und Byte 14 ist gleich 1 ist. "
Können wir verkürzen dieser Ausdruck? Absolut! Zuerst müssen wir es aber Hex umwandeln. Warum Hex? Wenn ich eine Aussage wie schreiben "ip [12.02] =" tcpdump davon aus, dass das Ergebnis einer 16-Bit-Zahl, nicht zwei 8-Bit-Zahlen. Aus diesem Grund können Sie so etwas wie "tcp [2:2] = 12345" zu schreiben und zu arbeiten. tcpdump wandelt die zwei Bytes zu einem 16-Bit-Wert und vergleicht sie gegen den Wert, den Sie angegeben. Durch die Umstellung auf Hex wir dieses Problem zu vermeiden. Also:
192.168.1.10 = 0xC0A8010A
192.168.1.20 = 0xC0A80120
Jetzt schreiben wir einfach unser Ausdruck:
ip [12.04]> = 0xC0A8010A und ip [0.04] <= 0xC0A80120
Das ist alles dort ist zu ihm.
Während IPv4 verwendet 4-Byte-Adressen verwendet IPv6 16 Byte. Da die Adressen so lang sind, schreiben wir sie in Hex, um Speicherplatz zu sparen. So die Adressen Ich habe Ihnen in der Herausforderung waren:
2001:0 db8: 0000:0000:0000:0000:0000:0010
2001:0 db8: 0000:0000:0000:0000:0000:0020
Beachte, dass ich zunächst nicht schreiben sie auf diese Weise. Es gibt ein paar Konventionen, die Sie verwenden, um Platz zu sparen kann beim Schreiben einer IPv6-Adresse. Erstens können wir abschneiden führenden Nullen. Also:
2001:0 db8: 0000:0000:0000:0000:0000:0010
wird:
2001: db8: 0000:0000:0000:0000:0000:10
Jetzt sehen alle, die Nullen in der Mitte? Wir können hacken Sie sie auch. Wenn Sie sehen "::" das bedeutet, in diesem Raum mit genügend Nullen füllen, um die Adresse wieder zu erweitern out bis 16 Byte. So in dieser Trick auch hinzufügen, und wir bekommen:
2001: db8:: 10
Weit einfacher zu schreiben. Der Nachteil ist, kann man nur entfernen Sie eine Gruppe von Nullen mit dem doppelten Doppelpunkt Trick. Betrachten Sie die folgende Adresse:
2001:: 1234:: 10
Wir haben keine Ahnung, wo die Byte-Reihenfolge statt "1234" in der Adresse. Es beginnen überall von Byte 6 bis Byte 12.
Bei der Arbeit mit IPv4 verwenden tcpdump und WinDump das Protokoll Stichwort "ip", wie in den obigen Beispielen gezeigt. Die IPv6 Kompliment, das "ip6". Wo ist die Quell-Adresse Feld im IPv6-Header? Nun, ich kann Ihnen nicht alles beantwortet, oder es ist nicht mehr eine "Herausforderung" ![]()
Related posts:


Die IPv6-rfc http://www.faqs.org/rfcs/rfc2460.html hat die Quell-Adresse in der Kopfzeile zwischen den Bytes 8 und 23 *.
* (Dezimal)