MTU of MSS? Wat 'n VPN-verandering werklik regmaak
MTU beperk wat 'n skakel dra; MSS beperk die TCP-lading daarbinne. Knyp die regte een vas en weet watter protokolle nie deur enige van die twee gedek word nie.
Ping-pakkette slaag, groot oordragte hang, en die tonnel rapporteer homself as gesond. Iemand verlaag die koppelvlak se MTU, iemand anders knyp MSS vas, en soms verdwyn die probleem om redes wat niemand neerskryf nie. Die twee getalle beskryf verskillende objekte, so om die verkeerde een te verander lewer 'n oplossing wat soos geluk lyk. Hier is die prosedure: identifiseer die laag, pas die ooreenstemmende aanpassing toe en toets dan op 'n nuwe verbinding.
Twee getalle, twee objekte
MTU behoort aan 'n skakel of 'n koppelvlak: dit is die grootste pakket wat oorgedra kan word sonder om verdeel te word. MSS behoort aan TCP: dit is die grootste hoeveelheid TCP-lading wat 'n segment mag dra, en dit sluit beide die TCP- en die IP-opskrifte uit. Op 'n gewone Ethernet-skakel wat IPv4 gebruik, lewer 'n MTU van 1500 grepe die bekende MSS van 1460 grepe. Daardie getalle beskryf verskillende lae en word deur verskillende meganismes uitgeruil. Om hulle te verwar is maklik, want albei word in grepe gemeet en albei lê naby 1500.
Die een kom as 'n koppelvlakinstelling. Die ander kom as 'n opsie binne 'n SYN-segment, beding tussen eindpunte wat jou koppelvlak nooit sien nie.
Waar die buitenste oorhoofse koste beland
’n VPN plaas die binneste pakket in 'n ander een, en die buitenste pakket moet in die fisiese pad pas. Enkapsuleringsopskrifte, die buitenste IP-opskrif, die vervoeropskrif en enige verifikasie-etiket verteer almal grepe wat die binneste pakket nie kan gebruik nie. Laat die tonnelkoppelvlak op 1500 en die buitenste pakket oorskry gereeld wat die pad kan dra. Met die 'nie-verdeel'-bis ingestel, laat die roeteerder dit val en behoort 'n ICMP-fout terug te stuur; as daardie fout gefiltreer word, kom die sender dit nooit te wete nie.
Dit is hoekom die faling selektief lyk. Klein versoeke voltooi en enigiets wat 'n segment vol maak, staak, want net die groot pakkette word weggegooi. 'n Tonnel wat 'n ping laat deurkom, is nie 'n tonnel wat data dra nie.
MSS vasdraai, en waar dit van toepassing is
MSS-vasdraai herskryf die waarde in die SYN-segment terwyl dit 'n gekose punt oorsteek, waardeur albei eindpunte 'n kleiner lading kies sonder dat enige van hulle weet hoekom. Op Linux is dit 'n mangle-tabel-teiken wat deur 'n eksplisiete reël toegepas word, en dit moet SYN-pakkette in die rigting wat jy bedoel, tref. Beperk dit tot die tonnelkoppelvlak en adresreeks, want 'n breë reël verander die gedrag van verkeer wat nooit die tonnel binnegaan nie.
Die effek is slegs TCP. 'n UDP-toepassing, 'n QUIC-sessie en enige protokol wat sy eie datagramme bou, word nie daardeur geraak nie.
Diagnoseer met 'n vaste pad
Hou een veranderlike op 'n slag. Toets met 'n pakket waarvan jy die grootte kies, en stel die 'nie-verdeel'-vlag sodat die kernel die resultaat rapporteer eerder as om dit te verberg.
Teken aan waar die faling begin: binne die tonnel, by die tonnelkoppelvlak, of op die fisiese pad na enkapsulering. Verander dan een getal en herhaal dieselfde toets eerder as 'n ander een. Bestaande verbindings behou die MSS wat hulle beding het, so 'n beleidsverandering is slegs op 'n nuwe verbinding sigbaar, en daarom bewys 'n gekasde bladsy niks in enige rigting nie. As een groot oplaai begin werk, het jy oor daardie pad geleer en nie oor elke protokol daarop nie.
Wat elke verandering nie regmaak nie
Om die koppelvlak se MTU te verlaag, verander nie die MSS van 'n sessie wat reeds gevestig is nie. Om MSS vas te draai help nie 'n UDP-stroom nie, en dit herstel nie 'n pad waar ICMP-foute slegs in een rigting gefiltreer word nie. Elke verandering maak een klas probleem reg en laat die res presies soos dit was.
Skryf neer watter aanpassing jy toegepas het, waar, en watter toets die verskil getoon het, want anders pas die volgende ingenieur albei toe en verloor die vermoë om te sê watter een saak gemaak het. As die beperking werklik en permanent is, verkies 'n tonnel-MTU wat dit weerspieël bo 'n vasdraai wat dit verberg. As jy moet vasdraai, laat die reël beperk en van 'n opmerking voorsien, want 'n onverklaarde mangle-reël word by verstek permanent.