Notebook se připojí, intranet se načte a několik veřejných webů zamrzne. Autentizace i směrování zjevně fungují, takže vysvětlením zůstává velikost paketu. V tunelu L2TP/IPsec je použitelná MTU menší, než adaptér stále inzeruje, a klient dál posílá pakety plné velikosti s nastaveným bitem „nefragmentovat“. Bráně pfSense lze přikázat, aby tento bit vymazala, a to je nejrychlejší způsob, jak diagnózu potvrdit, než ji pořádně opravíte.

Začněte u stránek, které selhávají

Než se dotknete jakéhokoli nastavení, poznamenejte si, které cíle selhávají a které procházejí. Navazování spojení, která zůstanou pod limitem tunelu, proběhnou normálně, zatímco přenosy vyžadující segment plné velikosti se zaseknou v půlce. Toto rozdělení je podpisem problému s velikostí, ne s filtrem, protože blokovaný cíl selže při navazování spojení, nikoli uprostřed stránky. Obě pozorování nic nestojí a hledání okamžitě zúží.

Otestujte to pingem, který nastaví bit a řídí velikost užitečného zatížení. Největší zatížení, které projde, vám řekne skutečnou MTU cesty a inzerovaná hodnota adaptéru ukáže, jak daleko jsou obě od sebe.

Zapište obě čísla. Oprava závisí na tom, které je špatné, a právě dvojici později potvrdí zachycení.

Co bit DF dělá na cestě ven

Důvodem rozdílu čísel je zapouzdření. IPsec přidává ESP, L2TP přidává další hlavičku, a tunel proto nese méně užitečného zatížení než fyzické spojení. Windows stále hlásí 1500 bajtů na adaptéru a na to, co posílá, nastavuje „nefragmentovat“. Když se takový paket nevejde, správnou odpovědí brány je zpráva ICMP, která odesílatele žádá, aby se zmenšil. Proto tunel, který projde malými pings, může stále selhat při stahování souboru.

Tato zpráva často nikdy nedorazí. Některý uzel na cestě může ICMP filtrovat, nebo ji nic nevygeneruje, a odesílatel opakuje stejnou velikost, dokud přenos nevzdá.

Ticho je zde normální projev, a proto se symptom čte jako selektivní blokování. V logu klienta se chybějící zpráva ICMP nikde nezaznamená.

Volba na pfSense a co nedělá

Volba je na stránce Systém, Pokročilé, Firewall a NAT s popiskem „Vymazat neplatné bity DF místo zahazování paketů“. Místo aby filtr zahodil příliš velký paket s příznakem, příznak odstraní a paket nechá rozdělit dál po cestě. Paket se počítá jako neplatný, když nemůže projít odchozím rozhraním v jednom kuse.

Volba obnoví konektivitu, aniž by se dotkla klienta, a proto je oblíbená. Je to ale obejití: fragmentace stojí CPU a každý ztracený fragment je dražší.

Platí jen pro předávaný provoz, ne pro provoz, který vytváří sama brána firewall. Stejná stránka nabízí „Vypnout čištění firewallu“, což normalizaci vypne úplně, a to je mnohem širší změna, než tento problém potřebuje.

Užší oprava, která udrží TCP bez fragmentace

Téměř všechny zaseknuté toky jsou TCP a TCP umí vyjednat menší segment místo spoléhání na fragmentaci. Omezení MSS na tunelovém rozhraní přepíše inzerovanou hodnotu během navazování spojení, takže každá strana posílá to, co se skutečně vejde. Cesta se pak chová předvídatelně a žádný paket se nemusí dělit.

Tím zůstává UDP na zjišťování nebo na volbě DF. Když jsou selhávající weby běžné webové stránky, je omezení tou změnou, které dát přednost.

Klient umí nahlásit vlastní MTU adaptéru pomocí netsh interface ipv4 show subinterfaces. Porovnejte toto číslo s tím, co server považuje za vyjednané, protože obě se ne vždy shodují. Právě tuto hodnotu operační systém skutečně použije, ať vyjednávání nahlásilo cokoli.

Potvrďte zachycením a pak resetujte stav

Před rozhodnutím zachyťte provoz na obou stranách: jeden záznam tam, kde běží tunel, druhý tam, kde pracuje rozhraní WAN. Pakety odcházející v plné velikosti bez vracejícího se ICMP ukazují na omezení jako správnou vrstvu. Odpovědi, které dorazí a pak na zpáteční cestě umřou, ukazují místo toho na MTU tunelu.

Před dalším pokusem vymažte tabulku stavů, protože existující toky si drží staré velikosti segmentů. Pak načtěte stránku, která selhala, a čtěte zobrazení stavů pro obousměrný provoz, ne jednostranné počítadla. Pokud se stále zasekává, zachyťte znovu, místo abyste zkoušeli další zaškrtávací políčko.

Související články