Laptop się łączy, intranet się ładuje, a kilka publicznych witryn zawiesza. Uwierzytelnianie i routing wyraźnie działają, więc wyjaśnieniem pozostaje rozmiar pakietu. W tunelu L2TP/IPsec użyteczne MTU jest mniejsze niż to, które adapter wciąż ogłasza, a klient nadal wysyła pakiety pełnego rozmiaru z ustawionym bitem „nie fragmentuj”. Bramie pfSense można nakazać wyczyszczenie tego bitu, i to najszybszy sposób potwierdzenia diagnozy przed właściwą naprawą.

Zacznij od stron, które zawodzą

Przed dotknięciem jakiegokolwiek ustawienia zanotuj, które cele zawodzą, a które się udają. Uściski dłoni, które pozostają poniżej limitu tunelu, kończą się normalnie, natomiast transfery wymagające segmentu pełnego rozmiaru zatrzymują się w połowie. Ten podział jest sygnaturą problemu z rozmiarem, a nie z filtrem, ponieważ zablokowany cel zawodzi przy nawiązywaniu połączenia, a nie w środku strony. Oba spostrzeżenia nic nie kosztują i natychmiast zawężają poszukiwania.

Sprawdź pingiem, który ustawia bit i kontroluje rozmiar ładunku. Największy ładunek, który przechodzi, podaje rzeczywiste MTU ścieżki, a ogłaszana wartość adaptera pokazuje, jak daleko są od siebie.

Zapisz obie liczby. Poprawka zależy od tego, która jest błędna, a właśnie tę parę potwierdzi później zrzut.

Co robi bit DF na wyjściu

Przyczyną różnicy liczb jest enkapsulacja. IPsec dodaje ESP, L2TP dodaje kolejny nagłówek, więc tunel przenosi mniej ładunku niż łącze fizyczne. Windows nadal zgłasza 1500 bajtów na adapterze i ustawia „nie fragmentuj” na tym, co wysyła. Gdy taki pakiet się nie mieści, prawidłową odpowiedzią bramy jest komunikat ICMP proszący nadawcę o zmniejszenie. Dlatego tunel, który przepuszcza małe pingi, nadal może zawieść przy pobieraniu pliku.

Ten komunikat często nigdy nie dociera. Jakiś przeskok może filtrować ICMP albo nic go nie generuje, a nadawca powtarza ten sam rozmiar, aż transfer się podda.

Cisza jest tu normalną postacią zjawiska, dlatego objaw czyta się jako selektywne blokowanie. Nic w dzienniku klienta nie odnotowuje brakującego komunikatu ICMP.

Opcja pfSense i czego nie robi

Opcja znajduje się na stronie System, Zaawansowane, Zapora i NAT, z etykietą „Wyczyść nieprawidłowe bity DF zamiast odrzucać pakiety”. Zamiast wyrzucać zbyt duży pakiet niosący flagę, filtr usuwa flagę i pozwala pakietowi podzielić się dalej. Pakiet uznaje się za nieprawidłowy, gdy nie może przejść interfejsu wyjściowego w jednym kawałku.

Opcja przywraca łączność bez dotykania klienta, dlatego jest popularna. Jest też obejściem: fragmentacja kosztuje CPU i czyni każdy utracony fragment droższym.

Dotyczy tylko ruchu przekazywanego, nie ruchu, który sama zapora tworzy. Ta sama strona oferuje „Wyłącz czyszczenie zapory”, co całkowicie wyłącza normalizację, a to znacznie szersza zmiana, niż potrzebuje ten problem.

Węższa poprawka, która zostawia TCP bez fragmentacji

Niemal wszystkie zawieszone przepływy to TCP, a TCP może wynegocjować mniejszy segment zamiast polegać na fragmentacji. Ograniczenie MSS na interfejsie tunelu przepisuje ogłaszaną wartość podczas uścisku dłoni, więc każda strona wysyła to, co naprawdę się mieści. Ścieżka zachowuje się wtedy przewidywalnie i żaden pakiet nie wymaga dzielenia.

To zostawia UDP wykrywaniu albo opcji DF. Gdy zawodzące witryny to zwykłe strony internetowe, ograniczenie jest zmianą, której warto dać pierwszeństwo.

Klient może zgłosić własne MTU adaptera przez netsh interface ipv4 show subinterfaces. Porównaj tę liczbę z tym, co serwer uważa za wynegocjowane, bo obie nie zawsze są takie same. To właśnie tę wartość system operacyjny faktycznie wykorzysta, cokolwiek zgłosiły negocjacje.

Potwierdź zrzutem, a potem zresetuj stan

Przed decyzją wykonaj zrzut po obu stronach: jeden ślad tam, gdzie biegnie tunel, drugi tam, gdzie działa interfejs WAN. Pakiety wychodzące w pełnym rozmiarze bez powracającego ICMP wskazują na ograniczenie jako właściwą warstwę. Odpowiedzi, które docierają i potem giną w drodze powrotnej, wskazują zamiast tego na MTU tunelu.

Wyczyść tablicę stanów przed ponowną próbą, bo istniejące przepływy zachowują stare rozmiary segmentów. Potem wczytaj stronę, która zawiodła, i czytaj widok stanów dla ruchu dwukierunkowego, a nie liczniki jednostronne. Jeśli nadal się zatrzymuje, wykonaj zrzut ponownie zamiast próbować kolejnego pola wyboru.

Powiązane artykuły