Твърдението, че един VPN пакет носи точно две контролни суми, звучи подредено и е достатъчно често грешно, за да си струва разглеждането. Броят зависи от това кои версии на IP се появяват, кой транспортен протокол се пренася и какъв формат на защита използва тунелът. Контролната сума на заглавката, контролната сума на горния слой и криптографският маркер за цялост са три механизма с три обхвата. Броенето им започва с отбелязване какво покрива всеки от тях.

Проверете кои версии на IP реално са в мрежата

Заглавките на IPv4 носят 16-битова контролна сума на заглавката, а заглавките на IPv6 не носят нищо подобно. Този единствен факт променя броя за всеки тунел, защото обвиването на IPv4 в IPv6 и на IPv6 в IPv4 дава различни документи. Тунелът може да пренася двете семейства наведнъж, като в този случай едната посока може да съдържа поле, което другата няма. Установете версиите, преди да броите каквото и да е.

Запишете оформлението като списък на заглавките, а не като картинка. Редът е важен при четене на заснемане, а наличието или липсата на полето за контролна сума е първото, което трябва да се отбележи.

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

Първият ред няма контролна сума на IP заглавка никъде в IP заглавките си, докато вторият има две, когато и двете заглавки са IPv4. Същата тунелна технология, различен брой и нито един от редовете не е пълен мрежов формат.

Проверете какво покрива всяка контролна сума

Обхватът е частта, която хората пропускат, и именно той прави броя смислен. Контролната сума на IPv4 заглавката защитава заглавката и нищо друго, така че не казва нищо за полезния товар зад нея. Контролната сума на UDP върху IPv6 покрива псевдозаглавка плюс UDP заглавката и полезния товар, което означава, че стига до пренасяния пакет, когато дейтаграмата е тунелирана. TCP има своя собствена контролна сума с подобна зависимост от псевдозаглавка. Това са три различни обхвата, макар и трите да се наричат контролни суми.

RFC 791 дефинира проверката на IPv4 заглавката и преизчисляването ѝ на всеки хоп, а RFC 8200 дефинира обработката на горния слой върху IPv6, включително псевдозаглавката. Нито един документ не казва, че VPN пакетът съдържа фиксиран брой контролни суми, защото нито един не описва тунел.

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

Проверете защитата на цялостта отделно

Цялостта на ESP е криптографска защита със собствен обхват и представяне, зависещо от алгоритъма. Тя не е контролна сума на IP или UDP под друго име и дължината ѝ варира според избраната конструкция. Проверката за цялост покрива определена част от пакета, която според режима може да включва ESP заглавката и част от полезния товар. Броенето ѝ като поле за контролна сума с известна ширина е мястото, където повечето от тези обяснения се разпадат.

Прочетете избраната конструкция, преди да броите байтове, и опишете резултата като защита на цялостта, а не като контролна сума с друг етикет. Декодерът ще назове полето вместо вас, ако го попитате.

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

Проверете точката на наблюдение, преди да броите

Заснемане на вътрешен интерфейс и заснемане в мрежата могат да покажат напълно различни слоеве. На вътрешния интерфейс тунелът вече е премахнат, така че виждате пренасяния пакет и нито една от външните заглавки. В мрежата виждате външните заглавки и шифрован полезен товар, който не можете да прочетете. Нито един изглед не е грешен и те не са изгледи на един и същ обект. Посочете къде е направено заснемането, преди да цитирате какъвто и да е брой.

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

Първата команда показва външния пакет с неговия трейлър за цялост, а втората показва пренасяния пакет със собствената му транспортна контролна сума. Събирането на числа от двете заснемания не брои нищо двойно, но обяснява един и същ пакет два пъти.

Сравнете броя с реално заснемане

Декодирайте един пакет напълно и отбележете всяко поле, което декодерът нарича контролна сума или стойност за цялост. След това сравнете всяка отметка с оформлението, което сте записали, и изтрийте онези, които принадлежат на слой, който всъщност не броите. Брой, който издържи това упражнение, е защитим, а брой, цитиран по памет, не е.

Повторете за посоката на отговора, защото тунел, пренасящ двете семейства, може да се различава по посока и по поток. След това посочете броя заедно с неговия обхват, например три контролни суми за този вътрешен пакет в тази точка на наблюдение, а не като свойство на VPN пакетите изобщо.

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

Подобни статии