Страницата се вчитува, ping успева, а копирањето на датотека секој пат заглавува на истото место. Оваа шема укажува на големината на пакетот, а не на пропусната моќ или податоците за најава. Инкапсулацијата додава бајти на секој пакет, па полезниот товар што се вклопуваше на почетната патека може да ја надмине границата откако ќе помине низ тунел. Во овие разговори три различни броја се нарекуваат MTU, а нивното мешање води до поставка што ја поправа едната апликација и ја расипува другата.

Три броја што луѓето ги нарекуваат MTU

MTU на интерфејсот е конфигурираната граница за пакет на таа врска. MTU на патеката е најмалата граница по маршрутата и се открива, а не се конфигурира. TCP MSS е големината на полезниот товар што партнерот го објавува како прифатлив, и се изведува од другите две, а не е посебна физичка граница.

Тунелот има внатрешен и надворешен поглед. Надворешниот пакет го носи инкапсулираниот плус заглавијата што му се потребни на протоколот, па употребливата внатрешна големина е помала од она што го дозволува надворешната патека. Патеката до VPN серверот исто така се разликува од патеката на серверот до одредиштето.

Откривањето на MTU на патеката му овозможува на испраќачот да ја дознае работната големина, но зависи од тоа дали ќе пристигне повратна информација. Кога посреден уред ги филтрира соодветните ICMP пораки, испраќачот продолжува да праќа пакети што никогаш не се довршуваат, и тоа е класичната црна дупка. Симптомот е препознатлив кога ќе го знаеш: ракувањето успева, првиот товар со полна големина исчезнува, а врската на крајот се ресетира или заглавува. Ништо во дневникот на апликацијата не изгледа како мрежен проблем.

Испитајте ја патеката со товар што го контролирате

Тестот е доказ за една маршрута и една големина, не препорачана поставка. Користете домаќин што одговара и менувајте само големината на товарот.

ping -M do -s 1372 -c 2 203.0.113.20
ping -4 -f -l 1372 vpn.example

Првата команда праќа Linux тест со исклучено фрагментирање и товар од 1372 бајти, а втората го прави истото на Windows каде товарот се поставува со -l. Одговор значи дека таа големина ја преживеала патеката. Пораката дека е потребно фрагментирање е информативна, додека истекот на време е двосмислен бидејќи домаќинот или посреден уред може едноставно да го отфрли ICMP.

Спуштете ја големината во неколку чекори наместо бинарно пребарување до бајтот. Се обидувате да утврдите дали постои горна граница на големината, а не да објавите број за секоја мрежа. Бројот што ќе го најдете важи за оваа патека, овој протокол и ова семејство адреси.

IPv4 и IPv6 фрагментираат различно, па резултатот од едно семејство не кажува ништо за другото. Тестирајте го семејството што апликацијата навистина го користи.

Ограничувањето на MSS помага само на TCP

Кај TCP ефективниот товар се договара за време на ракувањето, а рутерот на патеката може да ја препише таа вредност надолу за да праќаат двата краја помали сегменти. Тоа го прави ограничувањето на MSS и работи без воопшто да го допре клиентот.

iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
ip link show tun0

Првото правило го ограничува објавениот MSS на MTU на патеката за препратените TCP ракувања, а второто го прикажува сопствениот MTU на тунелскиот интерфејс за да го споредите со она што го дозволува патеката. Ограничувањето е најмалку инвазивната поправка за TCP апликација што заглавува по ракувањето.

За UDP не прави ништо. Гласовен или играчки клиент што праќа големи датаграми целосно ќе ја игнорира поставката MSS, бидејќи нема ракување што би се препишало. Ако апликацијата што не успева е UDP, погледнете ги наместо тоа опциите за големина на пакетот кај самиот клиент. Двата протокола не успеваат различно и се поправаат со различни алатки, затоа протоколот припаѓа во првата реченица од тикетот.

OpenVPN нуди опции како tun-mtu, mssfix и поставки поврзани со фрагментирање, а нивното однесување зависи од верзијата и од тоа дали податочниот канал е AEAD. Прочитајте го прирачникот за верзијата што се користи и менувајте по една опција одеднаш.

Сменете една поддржана поставка и повторете ги двете извршувања

Задржете го оригиналниот профил, сменете една поддржана вредност и повторете го и малото барање што работеше и големиот пренос што не успеа. Ако се смени само големиот, сте ја бркале големината. Ако се сменат двата, нешто друго се помести со него.

Помала вредност може да го намали симптомот додека додава трошок, па најмалиот можен број не е целта. Целта е големина што патеката сигурно ја носи со најмалку расипување. Запишете ја вредноста, патеката и верзијата на клиентот во тикетот, бидејќи истиот број применет на друго место е претпоставка.

Ако истиот профил работи од друга доверлива мрежа, задржете ја таа разлика во дијагнозата наместо да го прогласите клиентот за поправен. Променливата што се смени е патеката, а патеката е она што тестот го измери.

Поврзани статии