Påstanden om at en VPN-pakke bærer nøyaktig to kontrollsummer høres ryddig ut og er ofte nok feil til at den er verdt å pakke ut. Antallet avhenger av hvilke IP-versjoner som opptrer, hvilken transportprotokoll som bæres og hvilket beskyttelsesformat tunnelen bruker. En headerkontrollsum, en kontrollsum i øvre lag og en kryptografisk integritetsetikett er tre mekanismer med tre dekningsområder. Å telle dem begynner med å markere hva hver av dem dekker.

Sjekk hvilke IP-versjoner som faktisk er på ledningen

IPv4-headere bærer en 16-bits headerkontrollsum, og IPv6-headere bærer ingenting slikt. Den ene kjensgjerningen endrer antallet for hver tunnel, fordi innpakking av IPv4 i IPv6 og av IPv6 i IPv4 gir forskjellige dokumenter. En tunnel kan bære begge familiene samtidig, og da kan én retning inneholde et felt som den andre ikke har. Fastslå versjonene før du teller noe som helst.

Skriv oppsettet som en headerliste i stedet for et bilde. Rekkefølgen betyr noe når man leser en opptak, og tilstedeværelsen eller fraværet av kontrollsumfeltet er det første som skal markeres.

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

Første linje har ingen IP-headerkontrollsum noe sted i IP-headerne sine, mens andre har to når begge headerne er IPv4. Samme tunnelteknologi, forskjellig antall, og ingen av linjene er et fullstendig ledningsformat.

Sjekk hva hver kontrollsum dekker

Dekningen er den delen folk hopper over, og den er det som gjør et antall meningsfullt. IPv4-headerkontrollsummen beskytter headeren og ingenting annet, så den sier ingenting om nyttelasten bak. En UDP-kontrollsum over IPv6 dekker en pseudo-header pluss UDP-headeren og nyttelasten, noe som betyr at den når inn i den bårne pakken når datagrammet tunneleres. TCP har sin egen kontrollsum med en lignende avhengighet av pseudo-headeren. Det er tre forskjellige dekningsområder selv om alle tre kalles kontrollsummer.

RFC 791 definerer IPv4-headerkontrollen og omregningen av den ved hvert hopp, og RFC 8200 definerer behandlingen i øvre lag over IPv6, inkludert pseudo-headeren. Ingen av dokumentene sier at en VPN-pakke har et fast antall kontrollsummer, fordi ingen av dem beskriver en tunnel.

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

Sjekk integritetsbeskyttelsen separat

ESP-integritet er kryptografisk beskyttelse med sin egen dekning og en algoritmeavhengig representasjon. Det er ikke en IP- eller UDP-kontrollsum under et annet navn, og lengden varierer med den valgte konstruksjonen. En integritetskontroll dekker en definert del av pakken, som avhengig av modus kan omfatte ESP-headeren og en del av nyttelasten. Å telle den som et kontrollsumfelt med kjent bredde er der de fleste av disse forklaringene faller fra hverandre.

Les den valgte konstruksjonen før du teller byte, og beskriv resultatet som integritetsbeskyttelse i stedet for som en kontrollsum med en annen etikett. Dekoderen navngir feltet for deg hvis du spør den.

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

Sjekk observasjonspunktet før du teller

Et opptak på det indre grensesnittet og et opptak på ledningen kan vise helt forskjellige lag. På det indre grensesnittet er tunnelen allerede fjernet, så du ser den bårne pakken og ingen av de ytre headerne. På ledningen ser du de ytre headerne og en kryptert nyttelast du ikke kan lese. Ingen av visningene er feil, og de er ikke visninger av samme objekt. Angi hvor opptaket ble gjort før du siterer noe antall.

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

Den første kommandoen viser den ytre pakken med sin integritetstrailer, og den andre viser den bårne pakken med sin egen transportkontrollsum. Å legge sammen tall fra begge opptakene teller ingenting dobbelt, men forklarer den samme pakken to ganger.

Hold antallet opp mot et ekte opptak

Dekod én pakke fullstendig og merk hvert felt dekoderen kaller en kontrollsum eller en integritetsverdi. Sammenlign deretter hvert merke med oppsettet du skrev, og slett dem som hører til et lag du ikke faktisk teller. Et antall som overlever den øvelsen, er forsvarlig, og et antall sitert fra hukommelsen er det ikke.

Gjenta for svarretningen, fordi en tunnel som bærer begge familiene, kan variere per retning og per flyt. Angi deretter antallet sammen med dekningsområdet, for eksempel tre kontrollsummer for denne indre pakken på dette observasjonspunktet, i stedet for som en egenskap ved VPN-pakker generelt.

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

Relaterte artikler