Zła suma kontrolna w przechwyceniu VPN to nie uszkodzenie pliku
Przechwycenie może zobaczyć pakiet, zanim adapter go ukończy. Oddziel werdykt analizatora od otrzymanego pliku i udowodnij integralność hashem.
Analizator oznacza pakiet jako mający złą sumę kontrolną, a pobrany plik wygląda źle, więc obie obserwacje łączą się w jedną historię o uszkodzeniu w VPN. To różne pomiary wykonane w różnych punktach. Jeden opisuje, co mechanizm przechwytywania zobaczył, zanim adapter sieciowy zakończył pracę; drugi opisuje bajty zapisane przez aplikację. Ustalenie, który z nich naprawdę się zmienił, to cała diagnoza.
Gdzie przechwycenie znajduje się względem adaptera
Przechwycenie pakietów to migawka w jednym punkcie ścieżki zawierającej kilka przekształceń. Między stosem hosta a przewodem znajdują się segmentacja, obliczanie sumy kontrolnej i, przy odbiorze, scalanie. Punkt przechwytywania pokazuje stan w danej chwili, który rzadko jest identyczny z końcową ramką na przewodzie. Czytanie go tak, jakby był przewodem, to właśnie sposób, w jaki pole zastępcze staje się oskarżeniem.
Dlatego użyteczne pytanie o każde podejrzane pole nie brzmi, czy wygląda źle, ale gdzie je zaobserwowano. Obok ustalenia zapisz interfejs przechwytywania, wersję analizatora i warstwę pakietu; bez tych trzech etykiety sumy kontrolnej nie da się w ogóle zinterpretować.
Co offload transmisji robi ze śladem
Gdy offload sumy kontrolnej transmisji jest włączony, adapter oblicza sumę i wypełnia pole po tym, jak host umieścił pakiet w kolejce. Przechwycenie po stronie hosta zapisuje więc wartość zastępczą, a analizator zgłasza sumę kontrolną, której przewód nigdy nie przeniósł. Offload segmentacji tworzy podobny artefakt, ponieważ host może przekazać adapterowi jeden duży bufor, który później staje się kilkoma ramkami.
Dokumentacja offloadu w Wiresharku opisuje oba efekty i zauważa, że rozpoznawanie częściowych sum kontrolnych zależy od wersji analizatora i typu pakietu. Dlatego starsze narzędzie przechwytywania i nowsze mogą nie zgadzać się co do tego samego śladu, choć oba czytają go poprawnie.
Enkapsulacja dodaje drugi obiekt
VPN wstawia w obraz drugi pakiet. Interfejs tunelu pokazuje pakiet wewnętrzny, który aplikacja naprawdę wysłała, a interfejs fizyczny pokazuje zewnętrzne połączenie enkapsulowane, które go niesie. Suma kontrolna lub długość wzięta z pakietu wewnętrznego nie należy do ramki zewnętrznej, a porównywanie obu tak, jakby opisywały ten sam obiekt, daje nonsens.
Gdy trzeba porównywać, porównuj podobne z podobnym: wewnętrzne z wewnętrznym, zewnętrzne z zewnętrznym, w tym samym punkcie ścieżki. Niepasująca para pól dowodzi tylko, że zmierzono dwa różne obiekty. Zanotuj, z którego interfejsu pochodzi każdy ślad, bo czysto wyglądające przechwycenie tunelu nic nie mówi o tym, co wysłał adapter.
Udowodnij integralność pliku hashami
Dla samego pliku oblicz hash zawartości z odtwarzalnego źródła i z zapisanego wyniku, a następnie porównaj skróty. To odpowiada na inne pytanie niż jakakolwiek etykieta na pakiet, i odpowiada na nie w odniesieniu do obiektu, na którym użytkownikowi naprawdę zależy.
sha256sum payload.bin
sha256sum /srv/transfer/payload.bin
cmp -l payload.bin /srv/transfer/payload.bin | head
Równe skróty zamykają kwestię uszkodzenia dla tego transferu. Różne skróty otwierają węższą: znajdź najwcześniejszy etap, w którym bajty się rozchodzą, i sprawdź, czy coś celowo przekształciło plik. Częściowy zapis, ponownie zakodowany załącznik i strona błędu zapisana pod oczekiwaną nazwą pliku zmieniają bajty bez żadnego defektu sieci.
Zlokalizuj ścieżkę adaptera, nie czyniąc jej trwałą
W przypadku powtarzalnego problemu związanego z jednym dokiem lub adapterem utrzymuj stałe profil VPN, aplikację, obiekt testowy i miejsce docelowe, a następnie powtórz transfer przez obsługiwany interfejs alternatywny. Wynik, który zmienia się wraz z adapterem, lokalizuje usterkę na tej ścieżce; nie wskazuje jeszcze ustawienia sterownika ani nie dowodzi wady całego modelu.
Wyłączenie offloadu globalnie to kuszący test i zły domyślny wybór. Ustawienie dla całego hosta wpływa na ruch daleko poza eksperymentem i może nieść realny koszt wydajności, więc każdą taką zmianę traktuj jako tymczasową, zapisz ją i cofnij. Zanim zachowasz obejście zapożyczone z innej maszyny, użyj obsługiwanej przez producenta diagnostyki.
Raport powinien wskazać, który z trzech wyników się zmienił: interpretacja pakietu przez analizator, ukończone bajty aplikacji czy powtarzalność jednej ścieżki adaptera. Prowadzą one do trzech różnych kolejnych działań, a tylko jedno z nich dotyczy szyfrowania.