Tunnel, mis autendib, kannab pingi ja jääb seejärel esimese suure ülekande juures rippuma, on klassikaline puuduva ICMP-teate, mitte katkise VPN-i tunnus. Saatja ei saa kunagi teada, et pakett oli liiga suur, kordab sama suurust ja rakendus ootab. Selle parandamine on tulemüüri poliitika otsus, mitte kliendi uuesti paigaldamine. Järjekord on oluline: mõõtke, kus suuruse piir asub, ja kitsendage seejärel reeglit, mis aruande alla neelas.

Mida ICMP sellel teel tegelikult kannab

IPv4 tee MTU avastamine toetub sellele, et ruuter teatab, et don't-fragment-bitiga paketti ei saanud edasi saata. See teade on ICMP Fragmentation Needed sõnum, ja ilma selleta ei ole saatjal põhjust oma segmendi suurust vähendada. IPv6 on rangem: ruuterid ei fragmenteeri transiidis, seega on ICMPv6 Packet Too Big teade ainus signaal, mis paneb saatja kahanema.

Mõlemad teated on juhtimistasandi tagasiside ja kumbki ei ole diagnostiline kaja. Pingi blokeeriv poliitika ja kogu ICMP-d blokeeriv poliitika näevad reeglite loendis sarnased välja, kuid käituvad võrgus väga erinevalt. Teine võib muuta õigesti mõõdetud tunneli ühesuunaliseks teeks kõige jaoks, mis on ahela väikseimast lülist suurem.

Mõned transpordid rakendavad oma avastust sondpakettidega, nagu RFC 4821 kirjeldab, ja need sõltuvad sellest tagasisidest vähem. See on argument kontrollida, millist transporti te kasutate, mitte eeldada, et iga tunnel on immuunne.

TeadeEesmärk teelKui blokeeritud
ICMPv4 tüüp 3 kood 4Pakett oli järgmise lüli jaoks liiga suurSaatja kordab katset ja jääb rippuma
ICMPv6 tüüp 2Packet Too Big, IPv6 vasteSama rippumine, ilma fragmenteerimise varuvariandita
ICMP tüüp 11Aeg ületatud, kasutab tracerouteDiagnostika kaotab hüppeid, liiklus voolab edasi
ICMP kaja päring ja vastusKättesaadavuse testPing ebaõnnestub, tee võib olla korras

Tõrge sõltub suurusest

Küsige, kas tõrge korreleerub paketi suurusega. Sisselogimisleht, DNS-päring ja lühike API-kutse õnnestuvad, samal ajal kui faili üleslaadimine, suur vastus või pildi allalaadimine jääb rippuma. See muster viitab suuruse piirile kuskil kahe otsa vahel, mitte autentimisele või marsruutimisele. Õnnestunud väike ping ei ütle peaaegu midagi selle kohta, kus see piir asub.

Tunneli sees tuleb arvestada kahte kihti: kasuliku koormuse pakett ja välimine kapseldatud pakett. Sisemine saatja võib käituda õigesti, samal ajal kui välimine tee on väiksem, kui tunnel eeldab, ja seetõttu on olulised nii tunneli enda MTU seade kui ka selle all olev füüsiline lüli.

Mõõtke enne reeglite muutmist

Sondige don't-fragment-biti ja teie valitud kasuliku koormuse suurusega, rikkis kliendist kaitstud aadressi suunas:

ping -M do -s 1472 10.20.5.7
ping -M do -s 1300 10.20.5.7

Kasulik koormus 1472 baiti pluss 28 baiti päiseid on 1500 baidine pakett. Kui suur sond ebaõnnestub fragmenteerimisveaga ja väiksem läbib, olete piiri leidnud; arvestage tunneli lisakulu ja korrake, kuni töötav suurus on stabiilne.

Seejärel kinnitage, et lünk on aruanne ise. Kui sond ebaõnnestub vaikselt, ilma vea ja vastuseta, siis teade tõenäoliselt visatakse ära, mitte ei toimetata kohale, ja kahtlane on reegel.

Kitsendage reeglit ja testige seejärel ülesannet uuesti

Parandus peaks lubama konkreetseid juhtimisteateid, mitte kogu protokolli. iptables-hostis on vorm tüübipõhine luba; kohandage süntaks sellega, mis teie platvormil tulemüüri haldab:

iptables -I INPUT -p icmp --icmp-type fragmentation-needed -j ACCEPT
ip6tables -I INPUT -p icmpv6 --icmpv6-type packet-too-big -j ACCEPT

Jätke kaja vastused blokeerituks, kui see on kohalik poliitika, sest tee ei vaja neid. Seejärel testige uuesti ülekannet, mis algselt ebaõnnestus, uuest ühendusest, ja kinnitage, et reegli loendurid näitavad teadete saabumist.

Kui suur ülekanne jääb pärast teadete lubamist ikka rippuma, on ülejäänud piir mujal: liiga kõrgeks seatud tunneli MTU, pakette ümber kirjutav puhverserver või vaheline seade, mis viskab ära, selle asemel et teatada. ICMP reegel oli vajalik, kuid mitte piisav.

Seotud artiklid