Hvor mange kontrolsummer har en VPN-pakke? Det afhænger af det
Antallet afhænger af IP-versioner, den transporterede protokol og beskyttelsesformatet. Kontrolsummer i header, øverste lag og integritetstags er forskellige.
Påstanden om, at en VPN-pakke bærer præcis to kontrolsummer, lyder ryddelig og er ofte nok forkert til at være værd at pakke ud. Antallet afhænger af, hvilke IP-versioner der optræder, hvilken transportprotokol der bæres, og hvilket beskyttelsesformat tunnelen bruger. En headerkontrolsum, en kontrolsum i øverste lag og et kryptografisk integritetstag er tre mekanismer med tre dækninger. At tælle dem begynder med at markere, hvad hver af dem dækker.
Tjek hvilke IP-versioner der faktisk er på ledningen
IPv4-headere bærer en 16-bit headerkontrolsum, og IPv6-headere bærer intet lignende. Den ene kendsgerning ændrer antallet for hver tunnel, fordi indpakning af IPv4 i IPv6 og af IPv6 i IPv4 giver forskellige dokumenter. En tunnel kan bære begge familier på én gang, og så kan den ene retning indeholde et felt, den anden ikke har. Fastlæg versionerne, før du tæller noget som helst.
Skriv layoutet som en headerliste i stedet for et billede. Rækkefølgen betyder noget, når man læser en optagelse, og tilstedeværelsen eller fraværet af kontrolsumfeltet er det første, der skal markeres.
outer IPv6 | ESP | inner IPv6 | UDP | application data
outer IPv4 | ESP | inner IPv4 | TCP | application data
Den første linje har ingen IP-headerkontrolsum nogen steder i sine IP-headere, mens den anden har to, når begge headere er IPv4. Samme tunnelteknologi, forskelligt antal, og ingen af linjerne er et komplet ledningsformat.
Tjek hvad hver kontrolsum dækker
Dækningen er den del, folk springer over, og den er det, der gør et antal meningsfuldt. IPv4-headerkontrolsummen beskytter headeren og intet andet, så den siger intet om nyttelasten bag den. En UDP-kontrolsum over IPv6 dækker en pseudo-header plus UDP-header og nyttelast, hvilket betyder, at den når ind i den bårede pakke, når datagrammet tunneleres. TCP har sin egen kontrolsum med en lignende afhængighed af pseudo-headeren. Det er tre forskellige dækninger, selv om alle tre kaldes kontrolsummer.
RFC 791 definerer IPv4-headerens kontrol og dens genberegning ved hvert hop, og RFC 8200 definerer behandlingen i øverste lag over IPv6 inklusive pseudo-headeren. Ingen af dokumenterne siger, at en VPN-pakke har et fast antal kontrolsummer, fordi ingen af dem beskriver en tunnel.
tshark -r capture.pcap -Y "ip.proto == 50" -V | grep -i checksum
Tjek integritetsbeskyttelsen separat
ESP-integritet er kryptografisk beskyttelse med sin egen dækning og en algoritmeafhængig repræsentation. Det er ikke en IP- eller UDP-kontrolsum under et andet navn, og dens længde varierer med den valgte konstruktion. En integritetskontrol dækker en defineret del af pakken, som afhængigt af tilstanden kan omfatte ESP-headeren og en del af nyttelasten. At tælle den som et kontrolsumfelt med kendt bredde er, hvor de fleste af disse forklaringer falder fra hinanden.
Læs den valgte konstruktion, før du tæller bytes, og beskriv resultatet som integritetsbeskyttelse frem for som en kontrolsum med en anden etiket. Dekoderen navngiver feltet for dig, hvis du spørger den.
tshark -r capture.pcap -Y esp -V | grep -iE "integrity|icv"
Tjek observationspunktet, før du tæller
En optagelse på det indre interface og en optagelse på ledningen kan vise helt forskellige lag. På det indre interface er tunnelen allerede fjernet, så du ser den bårede pakke og ingen af de ydre headere. På ledningen ser du de ydre headere og en krypteret nyttelast, du ikke kan læse. Ingen af synene er forkerte, og de er ikke syn på det samme objekt. Angiv, hvor optagelsen blev taget, før du citerer noget antal.
sudo tcpdump -ni eth0 -vv -c 5 esp
sudo tcpdump -ni tun0 -vv -c 5
Den første kommando viser den ydre pakke med sin integritetstrailer, og den anden viser den bårede pakke med sin egen transportkontrolsum. At lægge tal fra begge optagelser sammen tæller intet dobbelt, men forklarer den samme pakke to gange.
Hold antallet op mod en rigtig optagelse
Afkod én pakke fuldt og markér hvert felt, som dekoderen kalder en kontrolsum eller en integritetsværdi. Sammenlign derefter hvert mærke med det layout, du skrev, og slet dem, der hører til et lag, du ikke faktisk tæller. Et antal, der overlever den øvelse, kan forsvares, og et antal citeret fra hukommelsen kan ikke.
Gentag for svarretningen, fordi en tunnel, der bærer begge familier, kan variere pr. retning og pr. flow. Angiv derefter antallet sammen med dets dækning, for eksempel tre kontrolsummer for denne indre pakke på dette observationspunkt, i stedet for som en egenskab ved VPN-pakker generelt.
tshark -r capture.pcap -T fields -e ip.checksum -e udp.checksum -e tcp.checksum