Echo-antwoorden komen aan, het externe bureaublad werkt en de browser blijft op een lege pagina staan tot hij het opgeeft. Twee verklaringen passen bij dat patroon, en het zijn geen varianten van één probleem: een beleid dat de dienst nooit heeft toegestaan, of pakketten die niet meer passen zodra de overdracht groeit. Het echo-antwoord sluit geen van beide uit.

Ga van de kleinste vraag naar de grootste en noteer wat elke stap werkelijk bewees.

Een echo-antwoord beantwoordt een veel kleinere vraag

Een echo-antwoord zegt dat de IP-stack van de bestemming een ICMP-verzoek van uw bron heeft beantwoord. Het zegt niets over of er een TCP-listener op de poort staat die u nodig hebt, of een beleid die poort toestaat, of de bestemmingshost verkeer onafhankelijk van de gateway filtert. Een gateway die één dienst toestaat, kan een andere laten vallen terwijl beide doelen op ping antwoorden. Lees het antwoord als één feit over één pakket en één richting.

Bevestig de bestemming en de dienstpoort voordat u iets anders interpreteert. Het adres dat u testte en het adres dat de toepassing gebruikt, zijn soms verschillende records, en een naam die naar twee adressen verwijst, maakt dat waarschijnlijk.

Zoek uit of de verbinding begon

Een verbinding die onmiddellijk wordt geweigerd, is een antwoord van de listener of van het beleid: iets antwoordde en zei nee. Een verbinding die opent en dan blijft hangen wanneer gegevens beginnen te stromen, wijst op grootte. Een verbinding die de handshake helemaal niet voltooit, komt meestal door beleid of routering en ziet eruit als een time-out, niet als een weigering.

curl -v --max-time 10 https://internal.example/ -o /dev/null
ss -tn state established '( dport = :443 )'

Noteer welk van die drie u zag voordat u MTU-instellingen aanraakt. De grootte van een tunnel wijzigen om een geweigerde verbinding te repareren, verspilt de wijziging en verbergt de echte oorzaak een tijdje.

Meet de grootte met een genoemd getal

Wanneer het vastlopen onder belasting verschijnt, test dan één pakketgrootte met de don't-fragment-bit gezet en noem de rekensom zodat het resultaat iets betekent. Op Linux met iputils levert een payload van 1392 bytes plus de ICMP-header van 8 bytes en de IPv4-header van 20 bytes een binnenste pakket van precies 1420 bytes op. Noem die rekensom in het ticket, want een kale ping die de gateway bereikt, bewijst niets over een toepassing.

ping -4 -M do -s 1392 10.44.0.10
ping -4 -M do -s 1372 10.44.0.10

Beide probes zijn meetpunten, geen aanbevelingen voor een tunnelgrootte. Als ICMP ergens op het pad wordt gefilterd, zegt een time-out niets over de grootte, omdat filtering en een te groot pakket er vanaf de client hetzelfde uitzien. Een succes zegt ook niets over de tegenovergestelde richting of over een andere bestemming.

Reken met het buitenpad

Encapsulatie voegt zijn eigen headers toe, dus het pakket op de draad is groter dan het pakket dat u in de tunnel mat. Het verschil tussen beide maakt tegelijk een werkend klein verzoek en een falend groot verzoek mogelijk.

IPv4-pad-MTU-ontdekking hangt af van feedback over pakketten die niet zonder fragmentatie kunnen worden doorgestuurd, en IPv6 gebruikt Packet Too Big-berichten. De IPv4-specificatie beschrijft dat mechanisme. Het filteren van de feedback breekt het leervermogen van de afzender en laat hem pakketten opnieuw versturen die nooit zullen passen. Daarom kunnen een werkend klein verzoek en een falend groot verzoek zo comfortabel naast elkaar bestaan.

Wijzig één getal en test de toepassing opnieuw

Verlaag de MTU van de tunnel, of begrens de maximale segmentgrootte voor TCP, en herhaal daarna de oorspronkelijke toepassingstest in plaats van de probe. Een probe die na de wijziging slaagt en een toepassing die nog steeds hangt, zijn een ander probleem met een vergelijkbare vorm, en alleen de toepassingstest onderscheidt ze.

Houd de rekensom in het wijzigingsrecord: de gemeten grootte, de aangenomen overhead en de waarde die u instelde. Iedereen die dat later beoordeelt, kan de aanname controleren in plaats van haar opnieuw af te leiden uit een schermafbeelding van een ping.

Als de toepassing bij elke grootte werkt die u hebt geprobeerd, stop dan met het aanpassen van getallen en kijk naar het beleid dat de werkende dienst van de falende scheidt.

Gerelateerde artikelen