Кірістірілген VPN туннельдері: үлкен пакеттерде ішкісі неге тұрып қалады
Әр туннель келесісі басталғанға дейін жолдың пакет бюджетінің бір бөлігін жұмсайды. Тақырыптарды қосыңыз, ішкі сессия үлкен пакеттерде сәтсіз болады.
DNS шешіледі, SSH сессиясы тұрады, содан кейін үлкен жүктеу қатып қалады, ал сол хостқа ping әлі жауап береді. Бұл бөліну бұзылған туннельге емес, пакет өлшеміне нұсқайды. Кірістірілген туннельдер мұған екі туннельдің ешқайсысы жалғыз жетпейтін өлшемдерде жетеді. Ішкі сессия дұрыс; оған енді сыймайтын пакеттер беріліп жатыр.
Жолдың MTU-ы шын мәнінде қайда кетеді
Әр инкапсуляция келесі қабат кезек алғанға дейін байт жұмсайды. Ethernet жолы сыртқы пакетке 1500 байт ұсынады, ал сыртқы туннель оның ішіндегі ештеңе мекенжайлануы мүмкін болмай тұрып өз үлесін алады. Бір болжамды үстеме шығын мәні дәл маңызды болатын мөлшерде қате болады.
Қабаттарды ретімен тізіңіз: қатынау жолы, сыртқы тасымалдау, сыртқы туннель, ішкі тасымалдау, ішкі туннель, қолданба. Әр тақырыпты бір рет санаңыз және UDP-ны туннельдің өз тақырыбы мен тегінен бөлек ұстаңыз.
Екі WireGuard қабаты, бір рет саналған
IPv4 қатынау жолын алыңыз, ішінде тағы бір WireGuard туннелі бар. Сыртқы қабат 20 байт IPv4, 8 байт UDP және WireGuard деректер тақырыбы мен оның аутентификация тегі үшін 32 байт жұмсайды. Соның ішінде ішкі туннельге өзінің 20 байттық IPv4 тақырыбы мен 8 байттық UDP тақырыбы екінші 32 байт WireGuard үстемесінің алдында қажет. Қалғаны IPv4 тақырыбын, TCP тақырыбын және деректерді сыйдырады. Сыртқы IPv6 жолы 20 орнына 40 жұмсайды және 1320 қалдырады.
| Layer | Bytes |
|---|---|
| Path MTU | 1500 |
| Outer IPv4 header | 20 |
| Outer UDP header | 8 |
| Outer WireGuard header and tag | 32 |
| Inner transport IPv4 header | 20 |
| Inner UDP header | 8 |
| Inner WireGuard header and tag | 32 |
| Innermost IPv4 header | 20 |
| TCP header | 20 |
| Payload that fits | 1340 |
Арифметика 1340 байтқа түседі. Сол ережелермен бір қабат TCP пайдалы жүктемесіне 1400 қалдырады, яғни 1500 минус 20, 8, 32, 20 және 20, ал 60 байт айырмашылық — екінші туннель қосатын дәл сол ішкі инкапсуляция.
1400-ді кірістірілген жолға қолданыңыз, ішкі туннельге 60 байт жетпейді, пакет оларды қажет ететіндей үлкен болғанша көрінбейді. Толтыру және протоколдың өзіндік фрагментация опциясы сандарды қайта жылжытады, сондықтан кестеге сеніңіз.
MTU, MSS және фрагментация әртүрлі жерлерде әрекет етеді
Интерфейс MTU интерфейс шығаратынды шектейді, ал TCP MSS қысуы TCP серіктесінің не жіберуге дайын екенін өзгертеді. Қысу TCP сессияларын түзетеді және үлкен UDP дейтаграммасы үшін ештеңе істемейді, осылайша түзету бір қолданба үшін сәтті көрініп, келесісін үнсіз өткізіп жібереді. Протоколдың өзіндік фрагментация опциясы өз сәтсіздіктері бар үшінші тұтқа. Интерфейс MTU — кәдімгі бірінші қадам және ең дөрекісі.
Көпірленген және маршрутталған туннельдер әртүрлі кадрларды тасымалдайды, сондықтан басқа орналасудың сандары сирек ауысады. Жолдың MTU анықталуы, ол сипатталған RFC 8201-де, тек оған тәуелді ICMP хабарлары өткізілген кезде ғана көмектеседі.
Жетпейтін қабатты табу
Талаптар салыстыруға мүмкіндік берсе, кірістіру алдында әр туннельді жеке тексеріңіз. Тұрақты өлшемді зонд мұны шешеді: ping -M do -s 1472 -c 3 10.8.0.1 сол қабаттың ішінде толық 1500 байттық IPv4 пакетін жібереді. Екінші қабатты қосып, сол зондты қайталаңыз, сонда кез келген сәтсіздік белгілі өзгеріске жатады.
Тасымалдау тұрып қалса, бір уақытта бір құжатталған параметрді өзгертіп, сәтсіз болатын өлшемді жазып алыңыз. Қайту жолын да тексеріңіз, өйткені кірістірілген маршрут рекурсиясы пакет өлшемі мәселесін бір түстен кейінгі уақытты кетіретіндей дәл көшіре алады. Сүзілген ICMP жауабы нақты шекті жасыра алады, сондықтан зонд пайымдаудан маңыздырақ.
Бюджетті келесі адам табатын жерге жазыңыз
Әр қабатқа бір жолдан кесте саусақ ережесінен ұзағырақ өмір сүреді. Оны туннель диаграммасының жанында ұстаңыз, сонда ешкім қысым кезінде арифметиканы қайта жасамайды.
Көбірек туннель көбірек тәуелділік дегенді білдіреді, сондықтан кері қайтару жоспары бюджеттің жанында өз орнын алады. Сандар әлі келмесе, қайта болжаудың орнына жолды өлшеңіз. Мақсат — қорғай алатын сан, жаттайтын сан емес.