Apgalvojums, ka VPN pakete pārnēsā tieši divas kontrolsummas, izklausās kārtīgi un ir pietiekami bieži nepatiess, lai to būtu vērts izjaukt. Skaits ir atkarīgs no tā, kuras IP versijas parādās, kurš transporta protokols tiek pārnēsāts un kādu aizsardzības formātu izmanto tunelis. Galvenes kontrolsumma, augšējā slāņa kontrolsumma un kriptogrāfiska integritātes atzīme ir trīs mehānismi ar trim tvērumiem. To skaitīšana sākas ar atzīmēšanu, ko katrs no tiem sedz.

Pārbaudiet, kuras IP versijas patiešām ir uz vada

IPv4 galvenes pārnēsā 16 bitu galvenes kontrolsummu, un IPv6 galvenes nepārnēsā neko tamlīdzīgu. Šis viens fakts maina skaitu katrai tunelai, jo IPv4 iesaiņošana IPv6 un IPv6 iesaiņošana IPv4 rada atšķirīgus dokumentus. Tunelis var pārnēsāt abas saimes vienlaikus, un tad vienā virzienā var būt lauks, kura otrā nav. Nosakiet versijas pirms kaut kā skaitīšanas.

Uzrakstiet izkārtojumu kā galveņu sarakstu, nevis attēlu. Secība ir svarīga, lasot ierakstu, un kontrolsummas lauka esamība vai neesamība ir pirmā atzīmējamā lieta.

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

Pirmajā rindā nekur tās IP galvenēs nav IP galvenes kontrolsummas, bet otrajā tās ir divas, ja abas galvenes ir IPv4. Tā pati tuneļa tehnoloģija, cits skaits, un neviena no rindām nav pilnīgs vada formāts.

Pārbaudiet, ko sedz katra kontrolsumma

Pārklājums ir tā daļa, ko cilvēki izlaiž, un tieši tas padara skaitli jēgpilnu. IPv4 galvenes kontrolsumma aizsargā galveni un neko citu, tāpēc neko nepasaka par kravu aiz tās. UDP kontrolsumma virs IPv6 sedz pseidogalveni, kā arī UDP galveni un kravu, kas nozīmē, ka tā sniedzas pārnēsātajā paketē, kad datagramma tiek tunelēta. TCP ir sava kontrolsumma ar līdzīgu atkarību no pseidogalvenes. Tie ir trīs dažādi tvērumi, lai gan visus trīs sauc par kontrolsummām.

RFC 791 definē IPv4 galvenes pārbaudi un tās pārrēķinu katrā lēcienā, un RFC 8200 definē augšējā slāņa apstrādi virs IPv6, tostarp pseidogalveni. Neviens dokuments nesaka, ka VPN paketei ir fiksēts kontrolsummu skaits, jo neviens neapraksta tuneli.

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

Pārbaudiet integritātes aizsardzību atsevišķi

ESP integritāte ir kriptogrāfiska aizsardzība ar savu pārklājumu un no algoritma atkarīgu attēlojumu. Tā nav IP vai UDP kontrolsumma citā nosaukumā, un tās garums mainās atkarībā no izvēlētās konstrukcijas. Integritātes pārbaude sedz noteiktu paketes daļu, kas atkarībā no režīma var ietvert ESP galveni un daļu kravas. Skaitīt to kā zināma platuma kontrolsummas lauku ir vieta, kur lielākā daļa šo skaidrojumu sabrūk.

Izlasiet izvēlēto konstrukciju pirms baitu skaitīšanas un aprakstiet rezultātu kā integritātes aizsardzību, nevis kā kontrolsummu ar citu etiķeti. Dekodētājs nosauks lauku, ja to pajautāsiet.

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

Pirms skaitīšanas pārbaudiet novērošanas punktu

Ieraksts iekšējā saskarnē un ieraksts uz vada var parādīt pilnīgi atšķirīgus slāņus. Iekšējā saskarnē tunelis jau ir noņemts, tāpēc redzat pārnēsāto paketi un nevienu no ārējām galvenēm. Uz vada redzat ārējās galvenes un šifrētu kravu, ko nevarat nolasīt. Neviens no skatiem nav nepareizs, un tie nav viena un tā paša objekta skati. Norādiet, kur ieraksts veikts, pirms citējat jebkādu skaitli.

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

Pirmā komanda parāda ārējo paketi ar tās integritātes treileri, bet otrā parāda pārnēsāto paketi ar savu transporta kontrolsummu. Abu ierakstu skaitļu saskaitīšana neko neskaita divreiz, bet izskaidro to pašu paketi divreiz.

Salīdziniet skaitli ar īstu ierakstu

Atšifrējiet vienu paketi pilnībā un atzīmējiet katru lauku, ko dekodētājs nosauc par kontrolsummu vai integritātes vērtību. Pēc tam salīdziniet katru atzīmi ar izkārtojumu, ko uzrakstījāt, un izdzēsiet tos, kas pieder slānim, kuru jūs faktiski neskaitāt. Skaitlis, kas iztur šo vingrinājumu, ir aizstāvams, un no atmiņas citēts skaitlis nav.

Atkārtojiet atbildes virzienam, jo tunelis, kas pārnēsā abas saimes, var atšķirties pēc virziena un pēc plūsmas. Pēc tam pasakiet skaitli kopā ar tā tvērumu, piemēram, trīs kontrolsummas šai iekšējai paketei šajā novērošanas punktā, nevis kā VPN pakešu vispārēju īpašību.

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

Saistītie raksti