Leht laaditakse, väike API-kutse naaseb ja siis ripub faili üleslaadimine seni, kuni klient alla annab. Serveri logis ei selgita seda miski, sest paketid visati tee keskel ära, ilma et oleks tagasi saadetud kasulikku vastust. See muster on MTU must auk: palju kitsam lüli, kui saatja eeldab, pluss vaikiv keeldumine sellest rääkida. Tõrkuv suurus on korratav, ja just see teeb selle diagnoositavaks.

Mis teeb augu mustaks

Igal lülil on maksimaalne edastusühik, ja järgmise hüppe piirist suurem pakett tuleb kas fragmentida või tagasi lükata ICMP-teatega, mis seda ütleb. Tee MTU avastamine sõltub sellest, kas see teade kohale jõuab ja seda austatakse. Selle filtreerimine või eiramine jätab saatja kordama paketti, mis ei mahu kunagi.

Kapseldamine muudab selle VPN-ide ümber tavaliseks, sest tunnel lisab välise päise paketile, mis oli juba füüsilise lüli jaoks dimensioneeritud. Sisemine pakett on seaduslik 1500 baidi juures ja kapseldatud ei ole, nii et see sureb piiril, samal ajal kui väikesed paketid libisevad läbi. Lõpetatud kätlus ja töötav sisselogimisleht tõestavad ainult seda, et väikesed paketid töötavad. Suurim pakett, mida rakendus üritab saata, on see, mis loeb.

Leidke suurus, kus see katkeb

Otsige binaarselt lasti suurust fragmentimisvaba testiga, tunnelist ühel pool asuvast hostist teisel pool asuvasse hosti. Suurim last, mis läbib, on teie kasutatav tee MTU miinus päise ülekulu.

ping -M do -s 1400 -c 2 192.0.2.20
ping -M do -s 1200 -c 2 192.0.2.20
ping -f -l 1372 192.0.2.20

1472 baidi suurune last läbib puhtal 1500 baidi Ethernet-teel, kui lisada 28 baiti IPv4 ja ICMP päiseid. Kui sama test õnnestub pärast tunneli püstitamist ainult väiksema lasti juures, on erinevus kapseldamise ülekulu, ja tunneli piir on koht, kus tagasilükkamisteade oleks pidanud tekkima. Pange kirja mõlemad numbrid, enne ja pärast ühendamist, sest see paar on tõestus. Korrake testi IPv6 jaoks, kui rakendus seda kasutab, kuna päis on suurem ja ebaõnnestumise lävi nihkub.

Lugege tõendeid enne, kui süüdistate tunnelit

Kaugrakenduste vead, ummikud ja tavaline kadu peatavad samuti üleslaadimisi, nii et üks ebaõnnestunud ülekanne ei tuvasta musta auku. Neid eristab suuruse suhe: korratav edu 1200 baidi juures ja korratav tõrge 1400 baidi juures, samas suunas, sama lõpp-punkti kaudu.

Mõlemas otsas tehtud püük näitab suuri pakette lahkuvat ja kunagi kohale jõudmata, ilma nende vahelise tagasilükkamiseta. See on hetk vaadata piiriseadet, mitte serverit, mis vastab igale päringule, mille ta tegelikult saab. Ummik peatab samuti, kuid see peatab eri suurusi eri aegadel, mis on teistsugune allkiri.

Kontrollige parandust mõlemal transpordil

Toetatud parandus on lasta piiril teatada tegelikust piirist või kinnitada sinna TCP maksimaalne segmendi suurus, et ühtegi ülemõõdulist segmenti ei üritataks. Iga MTU langetamine võrgus või tulemüüri väljalülitamine peidab sümptomi ja jätab konfiguratsiooni, mille üle ei suuda hiljem keegi arutleda.

ip link show dev tun0
sudo nft list ruleset | grep -i -E 'mtu|mss'
sysctl net.ipv4.tcp_mtu_probing
ping -M do -s 1400 -c 2 192.0.2.20

Kontrollige sama suurustestiga, seejärel rakendusega, mis ebaõnnestus, ja kontrollige teist protokolli, sest UDP-rakendused ei saa kunagi TCP segmendi suuruse parandust. Hoidke algväärtused piletil, sest parandus, mida ei saa tagasi pöörata, on teine probleem, mis ootab juhtumist. Kui suurustest läbib ja üleslaadimine jääb ikkagi kinni, ei olnud must auk põhjus, ja uurimine peaks edasi liikuma, mitte muudatust laiendama.

Seotud artiklid