Viešbučių tinklai ir konferencijų užkardos dažnai rodo pasirinktą leidimo lauką, ir kas nors į jį įrašo 47 tikėdamasis, kad PPTP veiks. Taisyklė sukuriama, tunelis vis tiek nepavyksta, o kitas bandymas naudoja kitą numerį. Klaida yra pačiame pakete: IPv4 turi protokolo lauką, kuris įvardija, kas eina po IP antraštės, o TCP ir UDP turi prievado laukus, kurie egzistuoja tik tada, kai esi vienoje iš tų antraščių. Tai ne du to paties leidimo užrašymo būdai.

IPv4 antraštė įvardija kitą protokolą

Protokolo laukas yra vienas baitas IPv4 antraštėje, ir jame saugomas skaičius, apibūdinantis naudingąją apkrovą: 6 TCP, 17 UDP, 47 GRE, 50 ESP. Viskas, kas filtruoja paketus, perskaito tą reikšmę prieš žiūrėdamas giliau, nes gilesnė antraštė turi prasmę tik žinant tipą. Pakeisk prievadą vėliau pokalbyje, o šis laukas nepajudėjo.

Todėl taisyklė, parašyta prieš 47 protokolą, apibūdina IP sluoksnį. Joks prievadas iš viso nedalyvauja sprendime.

Prievadai egzistuoja TCP ir UDP viduje, niekur kitur

Prievadai yra šešiolikos bitų identifikatoriai TCP ir UDP antraščių viduje, o jų užduotis – atskirti pokalbius, kurie dalijasi vienu adresu. GRE antraštė neša protokolo tipo reikšmę, dažnai EtherType, ir pasirenkamus raktus multipleksavimui. Todėl frazė 47 prievadas neįvardija nieko, ką GRE paketas galėtų atitikti.

Užkardų sąsajos skiriasi tuo, kiek to jos rodo. Vienos priima protokolo numerį, kitos siūlo pavadintą sąrašą, o kelios priima tik TCP arba UDP su prievadais.

PPTP naudoja abu sluoksnius vienu metu

PPTP yra aiškiausias pavyzdys, nes jis sąmoningai paskirsto savo darbą dviem sluoksniams. Valdymo ryšys yra TCP sesija į 1723 prievadą, o duomenų kelias yra GRE, 47 protokolas, niekur nedalyvaujant jokiam prievadui. Užkarda, kuri leidžia 1723 ir nieko daugiau, leidžia deryboms prasidėti ir tada išmeta naudingąją apkrovą. Tunelis atrodo pakibęs po autentifikavimo, o ne nepavyksta prisijungti, todėl simptomas dažnai pranešamas kaip slaptažodžio problema.

PathOuter protocolPort
Control channelTCP, protocol 61723
Data channelGRE, protocol 47None

Rašydami taisyklę, skaitykite dvi eilutes atskirai ir kiekvieną patikrinkite pagal gamintojo sintaksę. Vienai eilutei reikia prievado, kitai reikia protokolo numerio, ir nė vienas įrašas neapima abiejų.

Kodėl prievadų peradresavimo puslapis negali išreikšti GRE

Peradresavimo forma, kuri priima tik TCP ir UDP, negali apibūdinti GRE, kad ir kaip ta forma būtų vadinama. Adresų vertimas prideda antrą sunkumą, nes GRE neturi prievadų ir vertėjas turi sekti iškvietimo identifikatorių. Kai kurie namų maršrutizatoriai turi pagalbinę priemonę, kuri tai tvarko; daugelis ne, ir joks papildomas TCP leidimo įrašas nesukurs tokio elgesio.

Kai tikrasis reikalavimas yra šiuolaikinis tunelis, rinkitės sprendimą, kuris sąmoningai naudoja TCP arba UDP, o ne tikėkitės, kad vertėjas atspės teisingai.

Inkapsuliavimas nulemia, ką mato filtras

Inkapsuliavimas pakeičia išorinį paketą, ir būtent išorinis paketas yra tai, ką atitinka taisyklė. Natyvusis ESP yra 50 protokolas, o NAT perėjimas įvynioja ESP į UDP 4500, kad jis išgyventų adresų vertimą. Filtras, leidžiantis UDP 4500, niekada nemato 50 protokolo, o 50 protokolui parašytas filtras niekada neatitinka įvyniotos formos.

Paklauskite, dėl kokio inkapsuliavimo susitarė klientas ir šliuzas, tada parašykite taisyklę būtent tai išorinei formai ir nieko daugiau.

Parašykite taisyklę taip, kad kas nors galėtų ją patikrinti

Kiekvieną taisyklę išreikškite kaip adresų šeimą, išorinį protokolą, transporto prievadus, jei jų yra, kryptį ir abu galinius taškus. Recenzentas gali palyginti tą sakinį su paketų įrašu ir priimti sprendimą. Nurodymo atidaryti 47 niekas negali patikrinti, ir todėl jis išlieka procedūrų knygose ištisus metus.

Pridėkite testą, kuris tai įrodo: prisijunkite tuo metu, kai išorinėje sąsajoje įrašote, ir patvirtinkite išorinį protokolą bei prievadą, kurie iš tikrųjų pasirodo pėdsake.

Susiję straipsniai