Binnenste en buitenste pakketten in een VPN-opname: waarom groottes verschillen
De ene opname ziet platte tekst op de tunnelinterface, de andere ziet versleutelde frames op de draad. Lees beide voordat je de MTU de schuld geeft.
Je vangt pakketten van 1400 bytes op de tunnelinterface, vangt opnieuw op de fysieke interface, en de getallen willen maar niet kloppen. De adressen verschillen, de groottes verschillen, en het tweede bestand lijkt een ander gesprek. Er is niets stuk. Twee verschillende pakketten zitten op twee verschillende lagen, en de kloof ertussen is wat de tunnel met je verkeer doet. Lees beide weergaven voordat je de MTU de schuld geeft.
Twee gezichtspunten, en het pakket dat elk toont
Een opname op de tunnelinterface toont het binnenste pakket: de payload van de applicatie met zijn oorspronkelijke bron en bestemming, voordat enige bescherming is toegepast. Een opname op de fysieke interface toont het buitenste pakket: een IP-header, een transportheader, de inkapseling, en dan het versleutelde binnenste pakket als payload. Hetzelfde gesprek, andere objecten. Zodra je benoemt welke van de twee in het bestand zit, is de mismatch geen raadsel meer.
Het verschil in grootte is overhead, het verschil in adres is ontwerp. Draai dat om en de verwarring wordt voorspelbaar: mensen vergelijken een binnenste pakket van 1400 bytes met een buitenste van 1450 bytes, concluderen dat er iets mis is, en gaan MTU-instellingen wijzigen die nooit de schuldige waren. Label het bestand met de interface en de laag, want dat label is het eerste dat een lezer nodig heeft en het eerste dat mensen weglaten.
Bepaal de laag voordat je de opname start
Bepaal welke laag je vraag beantwoordt voordat het eerste pakket wordt geschreven. Een MTU-vraag heeft meestal de buitenste weergave nodig, want daar stapelen headers zich op en daar wordt de limiet van het pad zichtbaar. Een applicatievraag heeft meestal de binnenste weergave nodig, want daar bestaat de payload die je interesseert nog. Beide opnemen zonder plan levert twee bestanden en geen conclusie op.
Gebruik een onschuldige, toegestane test en filter op de bron, bestemming en tijd die je belangrijk vindt. Lees de interface- en filteropties van het opnamegereedschap voordat je verzamelt, want metadata is meestal genoeg en veel makkelijker te delen dan payload. Behandel de binnenste opname standaard als gevoelig, want die bevat onversleutelde applicatiegegevens die pas verderop in het pad worden beschermd.
Wat het grootteverschil werkelijk bevat
Het buitenste pakket draagt extra headers en beschermingsmateriaal, en hoeveel het draagt hangt af van het protocol en zijn opties. Fragmenteren, aggregeren of herordenen langs het pad kan de schijnbare een-op-een-relatie tussen een binnenste pakket en de buitenste pakketten die het dragen verbreken, dus een vergelijking per grootte is niet altijd mogelijk. Zoek bij een vermoede MTU-storing naar groottefeedback en het punt waar verkeer stopt, en vergelijk dat met wat de applicatie meldt. Een patroon van hertransmissies zonder antwoord is een ander signaal dan een ICMP-fout die een next-hop-grootte meedraagt.
Eén pakket dat de host verlaat bewijst niets over de vraag of de verre kant het heeft ontvangen. Als je opname eindigt bij je eigen interface, heb je aangetoond dat de kernel iets heeft uitgezonden, en dat is het zwakste bewijs dat er over het pad bestaat. Combineer de opname met een herhaalbaar symptoom: dezelfde bestemming, dezelfde handeling, dezelfde grootte, twee keer uitgevoerd met één variabele gewijzigd.
Offload in de getallen lezen
Segmentatie aan de hostkant en andere vormen van offload voegen een tweede vertekening toe, en die zorgt ervoor dat lokale opnames van de draad afwijken. Een lokale opname kan buffers tonen die de adapter later opsplitst, dus de frames op de link zijn kleiner en talrijker dan het bestand suggereert. Daarom bewijst een grote buffer in het opnamebestand niet dat een te groot frame elke schakel heeft gepasseerd. Als de groottes van belang zijn voor je conclusie, leg dan vast waar de opname is gemaakt en of offload op die interface actief was.
Anders meet je het gemak van de host in plaats van het gedrag van het pad. Twee bestanden met hun interface en offload-status beslechten de meeste van deze discussies binnen een minuut.
Waar de opname ophoudt bewijs te zijn
Versleutelde buitenste pakketten zien betekent dat er onder deze testomstandigheden een beschermingsgrens bestaat, en het zegt niets over andere applicaties op het toestel, over de behandeling door de operator of over de toestand van het eindpunt zelf. Platte tekst binnen de tunnel zien betekent ook niet dat de tunnel stuk is; het betekent dat je boven het versleutelingspunt hebt opgenomen, en dat is een legitieme plek om te kijken. Een opname is bewijs over een plek, geen vonnis over een systeem, en de ticket hoort het zo te beschrijven. Houd de scope-zin in het rapport, want die voorkomt dat één waarneming een auditbewering wordt.
Noem elk bestand met zijn interface, filter en tijdstempel, en verwijder het wanneer het onderzoek eindigt. De tcpdump-handleiding documenteert de interface- en filterflags die hier worden gebruikt, inclusief de flags die een opname klein houden.
Als je bewijs moet delen, deel dan groottes, tijdstempels en flags in plaats van payload. De vraag ging over pakketgrootte, en het antwoord heeft zelden iemands gegevens nodig.