Бирөө сизге VPN "MTU себебинен пакет жоготуп жатат" дейт, сиз туннелди 1400гө коёсуз, жана өткөрүү кайра иштейт. Бул жыйынтык диагноз сыяктуу сезилет. Көбүнчө бул арифметикалык кокустук: сиз эч качан аныктабаган чектен төмөн батуу үчүн жетишерлик кичине санды тандадыңыз, жана кийинки тармакта башка бюджет менен ошол эле чекке кайра туш болосуз.

Мунун көбүн эки уламыш жаратат. Биринчиси — туннелдин интерфейсинин MTU-су жолдун MTU-су. Экинчиси — инкапсуляция "бир аталыш" турат, ал эми PPPoE эсептөөгө татыктуу эч нерсе турбайт. Экөө тең тандаган саныңыз эркин көрүнө тургандай, ал эми чындыгында аныкталган.

Биринчи уламыш: туннелдин MTU-су жолдун MTU-су

Туннел интерфейсинде коё турган маани эң чоң ички пакет жөнүндө жергиликтүү убада, аны ишке ашыруу төмөнкө берет. Жолдун чыныгы сыйымдуулугу сиз менен алыскы четиндин ортосундагы ар бир звенонун касиети, жана ал маршрут өзгөргөндө, уюлдук байланыш өткөрүлүп берилгенде же трафик башка peering алганда өзгөрүшү мүмкүн. Орнотулган 1500 сиздин хост эмнени кураарын айтат, тармак эмнени ташыйарын эмес.

Жол MTU-сун аныктоо ушул экөөнү шайкеш келтирүү үчүн бар жана кайтарым байланышка көз каранды. IPv4-тө толук өлчөмдөгү пакетти өткөрө албаган маршрутизатор ICMP "fragmentation needed" билдирүүсүн жөнөтүшү керек, ал эми жөнөтүүчү өз баасын төмөндөтөт. IPv6-да барабардыгы Packet Too Big билдирүүсү, ал эми маршрутизаторлор транзитте такыр фрагменттешпейт. Бул кайтарым байланыш чыпкаланса, жөнөтүүчү жол ташый албаган пакеттерди чыгара берет, жана эч нерсе ага себебин айтпайт.

Экинчи уламыш: инкапсуляция бир аталыш турат

Сырткы катмарларды ак ниет менен эсептеңиз. Сырткы IP аталышы IPv4-тө 20 байт же IPv6-да 40 байт. NAT аркылуу өтүү үчүн UDP инкапсуляциясы 8 кошот. Туннел протоколу өз аталышын, инициализация векторун же nonce, шифрдин блок же тегиздөө чегине чейин толтурууну, аяктоочу бөлүктү жана бүтүндүктү текшерүү маанисин кошот. Протокол менен шифрге жараша жыйынды ички пакет баштала электе эле ондогон байтка жетет.

Андан кийин ички пакеттин өз аталыштары үчүн кайра кемитиңиз. Туннелдин ичиндеги TCP сегменти өзүнүн 20 байттык IP аталышын жана 20 байттык TCP аталышын ташыйт, ал эми TCP-нын MSS MTU-дан келип чыгат, туннелдин номиналдык пайдалуу жүгүнөн эмес. Ошондуктан ping кичирээк жүк менен ийгиликтүү болушу мүмкүн, ал эми файл өткөрүү токтоп калат: куралдар ар башка нерселерди текшерет, жана алардын бирөө гана толук өлчөмдөгү TCP сегментин колдонот.

ip link show tun0
ping -M do -s 1472 192.0.2.10
ping -M do -s 1400 192.0.2.10

Биринчи буйрук орнотулган туннел MTU-сун билдирет. Эки сыноо 1472 байттык жүк жөнөтөт, ал IPv4 жана ICMP аталыштарынын 28 байты менен 1500 байттык пакет, андан кийин кичирээк. Эгер чоң сыноо толук ийгиликсиз болуп, кичинеси ийгиликтүү болсо, сизде өлчөмгө көз каранды бузулуу бар, жалпы маршруттоо маселеси эмес.

Үчүнчү уламыш: PPPoE дагы эле таза 1500 берет

Кадимки PPPoE кирүү звеносу 1500 байттык IP пакетин ташый албайт. PPPoE аталышы жана PPP протокол талаасы Ethernet кадрынын ичинде 8 байт алат, бул IP пакетине 1492 калтырат. Бул RFC 2516-да сүрөттөлгөн салттуу чек. Эгер ушундай звононун үстүндө VPN жүргүзсөңүз, туннелдин кошумча чыгымы 1500дөн эмес, ошол 1492ден чыгат.

RFC 4638 чоңураак PPP жүгү жөнүндө сүйлөшүү жолун аныктайт, эгер кирүү концентратору да, кардар жабдуусу да колдосо, ошондуктан "бул байланыш PPPoE колдонот" деген сөз өзү белгилүү бир санды далилдебейт. Жергиликтүү параметр ортодогу түзмөктү ал үчүн эч качан конфигурацияланбаган пакетти кабыл алууга мажбурлай албайт, ошондуктан пайдалуу суроо — белги эмне дейт эмес, звоно чындыгында эмнени сүйлөштү.

Эмнеге бузулуу тандамал көрүнөт

Кичине суроо-талаптардын ийгиликтүү болушу жана чоң өткөрүүлөрдүн токтоп калышы жол MTU-сундагы кара көңдөйдүн классикалык белгиси. Кол алышуу, DNS суроосу жана API чакыруу баары батат; жапырт өткөрүү бир звенодо өлүп калган толук өлчөмдөгү сегменттерди жаратат, ал эми маселени билдириши керек болгон ICMP билдирүүсү эч качан жетпейт. Байланыш жакшы көрүнөт, жүктөө илинип калат, бул адамдарды жолго эмес серверге кароого жөнөтөт.

Экинчи, байланыштуу ката — үч санды аралаштыруу: интерфейстин MTU-су, TCP-нын MSS-и жана протоколдун өзүнүн фрагментация же толтуруу параметри. Маршрутизатордогу MSS кысуу жарыяланган MSS-ти кайра жазат, ошондо жөнөтүүчү кичирээк сегменттерди курат; ал туннел MTU-сун өзгөртпөйт жана UDP трафигине жардам бербейт. Үчөөнө тең бирдей сан берүү, анткени алар байланыштуу көрүнөт, — жакшы ниеттүү өзгөртүү иштеп жаткан конфигурацияны бузуу жолу.

Эмнени жана кандай тартипте өзгөртүү керек

Далилден баштаңыз. Жогорудагы сыноолор менен бузулуунун өлчөмгө көз каранды экенин ырастаңыз, анан өткөн эң кичине өлчөмдү жана ийгиликсиз болгон эң чоң өлчөмдү табыңыз. Туннелди күнөөлөөдөн мурун кирүү звеносунун чыныгы MTU-сун текшериңиз; PPPoE звеносу VPN ага тийе электе бюджетти чектейт. Өзгөртүүнү кайтаруу үчүн баштапкы маанилерди жазып алыңыз.

Анан кардар документтеген эң кичине оңдоону колдонуңуз. Көп кардарлар туннел MTU-сун жана MSS оңдоо опциясын сунуштайт, ал эми MSS опциясы TCP үчүн көбүнчө жакшы тутка, анткени ар бир пакетти кичиретпей жөнөтүүчүгө жетет. Ошол эле максатты жана ошол эле өткөрүүнү кайра текшериңиз жана токтогон сандарыңызды жазыңыз. Бир кирүү тармагында иштеген туннел мааниси универсалдуу туруктуу эмес, кийинки жайдын өз бюджети болот.

Тектеш макалалар