De bewering dat een VPN-pakket precies twee controlesommen draagt, klinkt netjes en is vaak genoeg onjuist om te ontleden. Het aantal hangt af van welke IP-versies voorkomen, welk transportprotocol wordt vervoerd en welk beschermingsformaat de tunnel gebruikt. Een controlesom in de kop, een controlesom van de bovenlaag en een cryptografisch integriteitslabel zijn drie mechanismen met drie bereiken. Ze tellen begint met te markeren wat elk ervan dekt.

Controleer welke IP-versies werkelijk op de draad zitten

IPv4-koppen dragen een 16-bits controlesom van de kop, en IPv6-koppen dragen niets dergelijks. Dat ene feit verandert het aantal voor elke tunnel, omdat IPv4 in IPv6 verpakken en IPv6 in IPv4 verpakken verschillende documenten oplevert. Een tunnel kan beide families tegelijk dragen, en dan kan de ene richting een veld bevatten dat de andere niet heeft. Stel de versies vast voordat u iets telt.

Schrijf de opbouw als een koppenlijst in plaats van een afbeelding. De volgorde is belangrijk bij het lezen van een opname, en de aanwezigheid of afwezigheid van het controlesomveld is het eerste dat gemarkeerd moet worden.

outer IPv6 | ESP | inner IPv6 | UDP | application data
outer IPv4 | ESP | inner IPv4 | TCP | application data

De eerste regel heeft nergens in zijn IP-koppen een IP-kopcontrolesom, terwijl de tweede er twee heeft wanneer beide koppen IPv4 zijn. Dezelfde tunneltechnologie, een ander aantal, en geen van beide regels is een volledig draadformaat.

Controleer wat elke controlesom dekt

De dekking is het deel dat mensen overslaan, en dat is wat een aantal betekenisvol maakt. De IPv4-kopcontrolesom beschermt de kop en niets anders, dus zegt niets over de lading erachter. Een UDP-controlesom over IPv6 dekt een pseudo-kop plus de UDP-kop en lading, wat betekent dat hij tot in het gedragen pakket reikt wanneer het datagram wordt getunneld. TCP heeft zijn eigen controlesom met een vergelijkbare afhankelijkheid van de pseudo-kop. Dat zijn drie verschillende bereiken ook al heten alle drie controlesommen.

RFC 791 definieert de IPv4-kopcontrole en de herberekening ervan bij elke hop, en RFC 8200 definieert de behandeling van de bovenlaag over IPv6 inclusief de pseudo-kop. Geen van beide documenten zegt dat een VPN-pakket een vast aantal controlesommen heeft, omdat geen van beide een tunnel beschrijft.

tshark -r capture.pcap -Y "ip.proto == 50" -V | grep -i checksum

Controleer de integriteitsbescherming apart

ESP-integriteit is cryptografische bescherming met een eigen dekking en een algoritmeafhankelijke weergave. Het is geen IP- of UDP-controlesom onder een andere naam, en de lengte varieert met de gekozen constructie. Een integriteitscontrole dekt een bepaald deel van het pakket, dat afhankelijk van de modus de ESP-kop en een deel van de lading kan omvatten. Het als een controlesomveld van bekende breedte tellen is waar de meeste van deze uitleg uit elkaar valt.

Lees de gekozen constructie voordat u bytes telt, en beschrijf het resultaat als integriteitsbescherming in plaats van als een controlesom met een ander label. De decoder noemt het veld voor u als u het vraagt.

tshark -r capture.pcap -Y esp -V | grep -iE "integrity|icv"

Controleer het observatiepunt voordat u telt

Een opname op de interne interface en een opname op de draad kunnen volledig verschillende lagen tonen. Op de interne interface is de tunnel al verwijderd, dus ziet u het gedragen pakket en geen van de buitenste koppen. Op de draad ziet u de buitenste koppen en een versleutelde lading die u niet kunt lezen. Geen van beide weergaven is fout, en het zijn geen weergaven van hetzelfde object. Vermeld waar de opname is gemaakt voordat u een aantal citeert.

sudo tcpdump -ni eth0 -vv -c 5 esp
sudo tcpdump -ni tun0 -vv -c 5

De eerste opdracht toont het buitenste pakket met zijn integriteitstrailer, en de tweede toont het gedragen pakket met zijn eigen transportcontrolesom. Getallen uit beide opnames optellen telt niets dubbel, maar verklaart hetzelfde pakket twee keer.

Houd het aantal tegen een echte opname

Decodeer één pakket volledig en markeer elk veld dat de decoder een controlesom of een integriteitswaarde noemt. Vergelijk daarna elke markering met de opbouw die u hebt geschreven, en verwijder degene die bij een laag horen die u niet werkelijk telt. Een aantal dat die oefening overleeft is verdedigbaar, en een aantal dat uit het geheugen wordt geciteerd niet.

Herhaal dit voor de antwoordrichting, omdat een tunnel die beide families draagt per richting en per stroom kan verschillen. Vermeld daarna het aantal samen met het bereik, bijvoorbeeld drie controlesommen voor dit binnenste pakket op dit observatiepunt, en niet als een eigenschap van VPN-pakketten in het algemeen.

tshark -r capture.pcap -T fields -e ip.checksum -e udp.checksum -e tcp.checksum

Gerelateerde artikelen