Miks kogu ICMP blokeerimine rikub töötava VPN-tee
Suuruse tagasisideteated ei ole pingi vastused. Kui need kunagi kohale ei jõua, õnnestuvad väikesed paketid, suured kaovad ja tunnel näib värelevat.
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.
| Teade | Eesmärk teel | Kui blokeeritud |
|---|---|---|
| ICMPv4 tüüp 3 kood 4 | Pakett oli järgmise lüli jaoks liiga suur | Saatja kordab katset ja jääb rippuma |
| ICMPv6 tüüp 2 | Packet Too Big, IPv6 vaste | Sama rippumine, ilma fragmenteerimise varuvariandita |
| ICMP tüüp 11 | Aeg ületatud, kasutab traceroute | Diagnostika kaotab hüppeid, liiklus voolab edasi |
| ICMP kaja päring ja vastus | Kättesaadavuse test | Ping 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.