Dwie awarie dają od użytkownika to samo zdanie: strona nie działa. Dzieje się na różnych warstwach, a ta różnica decyduje, co zmienisz. Awaria rozwiązywania nazwy zatrzymuje się, zanim powstanie jakiekolwiek połączenie. Awaria rozmiaru pakietu zdarza się po rozwiązaniu nazwy i po zakończeniu uścisku dłoni, dlatego strona zaczyna się ładować, a potem zawiesza. Znajdź etap, zanim znajdziesz ustawienie.

Dwie awarie na różnych warstwach

Rozwiązywanie zamienia nazwę na adres i nic innego w połączeniu nie może się zacząć, dopóki się to nie uda. Problemy z MTU ścieżki pojawiają się później, gdy pakiet większy niż limit jakiegoś łącza zostaje odrzucony, a nadawca nigdy się o tym nie dowiaduje. Jedno to wyszukiwanie; drugie to awaria dostarczenia, która pojawia się dopiero powyżej pewnego rozmiaru.

Objawy różnią się w sposób, który można zaobserwować bez żadnych narzędzi. Awaria DNS jest natychmiastowa i stała: przeglądarka mówi, że nie można znaleźć serwera. Awaria MTU jest częściowa: strona się zaczyna, część zasobów dochodzi, a duża odpowiedź lub wysyłanie się zatrzymuje.

Jeśli objaw jest częściowy, przestań patrzeć na DNS.

Etap 1: czy nazwa w ogóle się rozwiązuje

Użyj narzędzi wyszukiwania platformy z dokładnie tą nazwą hosta, której używa aplikacja. Prywatna nazwa w biurze może wymagać wewnętrznego resolvera, a własny bezpieczny DNS przeglądarki może zachowywać się inaczej niż resolver systemu operacyjnego, więc oba mogą się nie zgadzać co do tej samej nazwy.

Zapytaj resolver, którego użyłby system operacyjny, a potem porównaj:

dig +short vpn.example.com
dig +short vpn.example.com @10.0.0.53

Jeśli rozwiązywanie zawiedzie, problem leży w tej polityce i jej dostępności. Nie wysyłaj prywatnych nazw do dowolnych publicznych resolverów tylko po to, by uzyskać porównanie, bo samo porównanie ujawnia nazwy, które chciałeś trzymać wewnątrz.

Etap 2: gdzie zatrzymuje się transfer

Jeśli nazwa się rozwiąże i połączenie się zacznie, zanotuj, gdzie operacja się zatrzymuje. Strona, która się wyświetla i potem zawiesza na jednym zasobie, wysyłanie, które umiera w stałym punkcie, albo duże pobieranie, które nigdy się nie kończy, gdy małe żądania działają, to wszystko objawy w kształcie rozmiaru. Odpowiedź, która w ogóle się nie zaczyna, ma inny kształt.

Trzymaj punkt końcowy i cel aplikacji na stałym poziomie podczas porównywania, inaczej mierzysz dwie zmienne naraz. Inne przyczyny są na tym etapie nadal możliwe: błędy usługi, utrata, zachowanie filtra i ponowne połączenia tunelu dają zatrzymania.

Jedno powtarzalne zatrzymanie jest warte więcej niż dziesięć anegdotycznych.

Dlaczego MTU szkodzi dopiero po uścisku dłoni

Uścisk dłoni TCP używa małych pakietów, więc udaje się na ścieżce, która nie może przenieść segmentu pełnego rozmiaru. Awaria pojawia się, gdy nadawca wysyła duży pakiet z bitem zakazu fragmentacji, łącze go odrzuca, a komunikat ICMP, który zgłosiłby limit, nigdy nie dociera, bo filtr go zjadł. Nadawca próbuje wtedy tego samego rozmiaru i transfer się zatrzymuje.

Dlatego objaw zależy od rozmiaru i jest powtarzalny, a nie losowy. Wyjaśnia to też, dlaczego ping do hosta niczego nie dowodzi, bo małe echo ICMP może przejść ścieżką, która nie przeniesie ładunku pełnego rozmiaru. Zmierz rozmiar z obu końców ścieżki, jeśli możesz. Limit, który pojawia się tylko w jednym kierunku, to asymetria routingu, a nie MTU tunelu.

Zmierz rozmiar wprost, zamiast go wnioskować:

ping -M do -s 1472 203.0.113.20
tracepath 203.0.113.20

Zmień jedną warstwę, potem to udowodnij

Dla nazw zmień politykę resolvera i uruchom to samo wyszukiwanie ponownie. Dla rozmiaru użyj procedury MTU z zapisanymi wartościami pierwotnymi i gotowym wycofaniem, bo ograniczanie MSS bez znajomości rzeczywistego MTU tunelu zamienia jedno zatrzymanie na inne.

Strona, która wczyta się raz po zmianie kilku ustawień, nie wskazuje naprawy. Zmień jedną rzecz, uruchom ten sam test ponownie i trzymaj wynik obok pierwszego zapisanego nieudanego etapu.

Właśnie ten zapis powstrzymuje DNS, rozmiar pakietu i uwierzytelnianie przed zamienieniem się w stos trwałych obejść, których nikt nie potrafi wyjaśnić. Testowanie przez surowy IP to dobry przykład skrótu, który zmienia tożsamość TLS, a wyłączenie weryfikacji certyfikatu, aby porównanie się udało, nie jest diagnozą.

Powiązane artykuły