Эмне үчүн VPN чоң өткөрүүлөрдө токтоп калат, кичинелерде эмес
Кичине сурамдарга жооп келет, чоң өткөрүүлөр тоңуп калат. Бекитилген MTU көчүрүүдөн мурун интерфейс чегин, жол чегин жана жарыяланган TCP жүгүн салыштырыңыз.
Барак жүктөлөт, 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
Биринчи команда фрагментацияны өчүрүп, 1372 байт жүк менен Linux сыноосун жөнөтөт, экинчиси ошону эле 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
Биринчи эреже өткөрүлүп берилүүчү TCP кол алышуулары үчүн жарыяланган MSSти жол MTUсуна чектейт, экинчиси туннелдин интерфейсинин өз MTUсун көрсөтөт, ошентип аны жол уруксат кылган менен салыштыра аласыз. Кол алышуудан кийин илинип калган TCP колдонмосу үчүн чектөө эң аз кийлигишүүчү түзөтүү.
UDP үчүн ал эч нерсе кылбайт. Чоң дейтаграммаларды жөнөткөн үн же оюн кардары MSS жөндөөсүн толугу менен этибарга албайт, анткени кайра жаза турган кол алышуу жок. Эгер ийгиликсиз колдонмо UDP болсо, анын ордуна кардардын өзүнүн пакет өлчөмү параметрлерин караңыз. Эки протокол ар башкача ийгиликсиз болот жана ар башка куралдар менен оңдолот, ошондуктан протокол билеттин биринчи сүйлөмүндө болушу керек.
OpenVPN tun-mtu, mssfix жана фрагментацияга байланыштуу жөндөөлөр сыяктуу параметрлерди сунуштайт, алардын жүрүм-туруму версияга жана маалымат каналынын AEAD болушуна байланыштуу. Колдонулуп жаткан версиянын колдонмосун окуңуз жана бир убакта бир параметрди өзгөртүңүз.
Бир колдоого алынган жөндөөнү өзгөртүп, эки аткарууну тең кайталаңыз
Баштапкы профилди сактап, бир колдоого алынган маанини өзгөртүңүз жана иштеген кичине сурамды да, ийгиликсиз болгон чоң өткөрүүнү да кайталаңыз. Эгер чоңу гана өзгөрсө, сиз өлчөмдүн артынан жүрдүңүз. Эгер экөө тең өзгөрсө, аны менен кошо дагы бир нерсе козголду.
Төмөн маани симптомду азайтышы мүмкүн, бирок кошумча чыгымды кошот, ошондуктан мүмкүн болгон эң кичине сан максат эмес. Максат — жолдун эң аз коротку менен ишенимдүү ташыган өлчөмү. Маанини, жолду жана кардардын версиясын билетке жазыңыз, анткени ошол санды башка жерде колдонуу — божомол.
Эгер ошол эле профил башка ишенимдүү тармактан иштесе, кардарды оңдолду деп жарыялоонун ордуна бул айырманы диагностикада калтырыңыз. Өзгөргөн өзгөрмө — жол, жана сыноо өлчөгөн да жол.