Geneste VPN-tonnels: waarom die binneste een by groot pakkette vassteek
Elke tonnel spandeer 'n deel van die pad se pakketbegroting voordat die volgende begin. Tel die opkoppe bymekaar en die binnesessie misluk op groot pakkette.
DNS los dit op, die SSH-sessie bly staan, en dan vries 'n groot opdatering terwyl 'n ping na dieselfde gasheer steeds antwoord. Daardie skeiding dui op pakketgrootte eerder as op 'n stukkende tonnel. Geneste tonnels bereik dit by groottes wat geen van die tonnels alleen sou tref nie. Die binnesessie is reg; daar word pakkette aan hom gegee wat nie meer pas nie.
Waar die pad-MTU werklik heen gaan
Elke inkapseling spandeer grepe voordat die volgende laag 'n beurt kry. 'n Ethernet-pad bied 1500 grepe aan die buitenste pakket, en die buitenste tonnel neem sy deel voordat enigiets daarbinne geadresseer kan word. Een gegiste oorhoofse waarde sal verkeerd wees met presies die hoeveelheid wat saak maak.
Lys die lae in volgorde: toegangspad, buitenste vervoer, buitenste tonnel, binneste vervoer, binneste tonnel, toepassing. Tel elke opkop een keer, en hou UDP apart van die tonnel se eie opkop en etiket.
Twee WireGuard-lae, een keer getel
Neem 'n IPv4-toegangspad met een WireGuard-tonnel binne 'n ander. Die buitenste laag kos 20 grepe IPv4, 8 van UDP en 32 vir die WireGuard-dataopkop plus sy verifikasie-etiket. Daarbinne benodig die binneste tonnel sy eie 20-grepe IPv4-opkop en 8-grepe UDP-opkop voordat sy tweede 32 grepe WireGuard-oorhoofse ruimte kom. Wat oorbly, hou 'n IPv4-opkop, 'n TCP-opkop en die data. 'n IPv6-buitenpad kos 40 in plaas van 20 en laat 1320 oor.
| 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 |
Die rekenkunde beland op 1340 grepe. Een laag onder dieselfde reëls laat 1400 vir die TCP-nuttelading, wat 1500 minus 20, 8, 32, 20 en 20 is, en die verskil van 60 grepe is presies die binneste inkapseling wat die tweede tonnel byvoeg.
Pas 1400 op 'n geneste pad toe, en die binneste tonnel is 60 grepe te kort, onsigbaar totdat 'n pakket groot genoeg is om dit te nodig het. Opvulling en 'n protokol se eie fragmentasie-opsie skuif die syfers weer, so vertrou die tabel.
MTU, MSS en fragmentasie werk op verskillende plekke
Koppelvlak-MTU beperk wat die koppelvlak sal uitstuur, terwyl TCP-MSS-vaspenning verander wat 'n TCP-eweknie bereid is om te stuur. Vaspenning maak TCP-sessies reg en doen niks vir 'n groot UDP-datagram nie, dit is hoe 'n regstelling vir een toepassing suksesvol lyk en die volgende stilweg mis. 'n Protokol se eie fragmentasie-opsie is 'n derde hefboom met sy eie foute. Koppelvlak-MTU is die algemene eerste stap en die stompste een.
Gebrugde en gerouteerde tonnels dra verskillende rame, so syfers van 'n ander ontplooiing dra selde oor. Pad-MTU-ontdekking, beskryf in RFC 8201, help net terwyl die ICMP-boodskappe waarop dit staatmaak deurgelaat word.
Vind die laag wat te kort is
Verifieer elke tonnel alleen voordat jy hulle nest, as die vereistes 'n vergelyking toelaat. 'n Peiling van vaste grootte beslis dit: ping -M do -s 1472 -c 3 10.8.0.1 stuur 'n volle 1500-grepe IPv4-pakket binne daardie laag. Voeg die tweede laag by en herhaal dieselfde peiling, sodat enige mislukking aan 'n bekende verandering behoort.
Wanneer 'n oordrag vassteek, verander een gedokumenteerde parameter op 'n slag en teken die mislukkende grootte aan. Kyk ook na die terugpad, want geneste roete-rekursie kan 'n pakketgrootte-probleem naby genoeg namaak om 'n middag te kos. 'n Gefiltreerde ICMP-antwoord kan die werklike limiet versteek, so die peiling maak meer saak as die redenasie.
Skryf die begroting waar die volgende persoon dit sal vind
'n Tabel met een ry per laag oorleef 'n duimreël. Hou dit langs die tonneldiagram sodat niemand die rekenkunde onder druk weer doen nie.
Meer tonnels beteken meer afhanklikhede, so 'n terugrolplan verdien sy plek langs die begroting. As die syfers steeds nie klop nie, meet die pad eerder as om weer te raai. Die doel is 'n syfer wat jy kan verdedig, nie onthou nie.