Protokol 47 proti vratom TCP 47: dve glavi, dve pravili
Številka protokola in vrata živita v različnih glavah, zato eno pravilo ne more nadomestiti drugega. PPTP loči oba, in polje za vrata ne more izraziti GRE.
Hotelska omrežja in požarni zidovi konferenc pogosto prikažejo polje za dovoljenje po meri, in nekdo vanj vpiše 47 v upanju, da bo PPTP deloval. Pravilo nastane, tunel še vedno ne deluje, in naslednji poskus uporabi drugo številko. Napaka je v samem paketu: IPv4 ima polje protokola, ki poimenuje, kaj sledi glavi IP, medtem ko imata TCP in UDP polji za vrata, ki obstajata le, ko si znotraj ene od teh glav. To nista dva zapisa istega dovoljenja.
Glava IPv4 poimenuje naslednji protokol
Polje protokola je v glavi IPv4 en bajt in vsebuje številko, ki opisuje tovor: 6 za TCP, 17 za UDP, 47 za GRE, 50 za ESP. Vse, kar filtrira pakete, prebere to vrednost, preden pogleda globlje, ker ima globlja glava smisel šele po znanem tipu. Pozneje v pogovoru spremenite vrata in to polje se ni premaknilo.
Pravilo, napisano proti protokolu 47, torej opisuje plast IP. Nobena vrata ne sodelujejo pri odločitvi.
Vrata obstajajo znotraj TCP in UDP, nikjer drugje
Vrata so šestnajstbitni identifikatorji znotraj glav TCP in UDP, njihova naloga pa je ločevati pogovore, ki si delijo en naslov. Glava GRE nosi vrednost tipa protokola, pogosto EtherType, plus neobvezne ključe za multipleksiranje. Zato izraz vrata 47 ne poimenuje ničesar, s čimer bi se paket GRE lahko ujemal.
Vmesniki požarnih zidov se razlikujejo po tem, koliko tega prikažejo. Nekateri sprejmejo številko protokola, drugi ponudijo imenovan seznam, in redki sprejmejo le TCP ali UDP z vrati.
PPTP uporablja obe plasti hkrati
PPTP je najjasnejši primer, ker svoje delo namerno deli med obe plasti. Krmilna povezava je seja TCP na vrata 1723, podatkovna pot pa je GRE, protokol 47, brez kakršnih koli vrat. Požarni zid, ki dovoli 1723 in nič drugega, pusti pogajanja, da se začnejo, nato pa zavrže tovor. Tunel se zdi, da po preverjanju visi, namesto da se ne bi povezal, in zato je simptom pogosto prijavljen kot težava z geslom.
| Path | Outer protocol | Port |
|---|---|---|
| Control channel | TCP, protocol 6 | 1723 |
| Data channel | GRE, protocol 47 | None |
Ko pišete pravilo, berite obe vrstici ločeno in vsako preverite glede na skladnjo proizvajalca. Ena vrstica potrebuje vrata, druga številko protokola, in noben posamezen vnos ne pokriva obojega.
Zakaj stran za posredovanje vrat ne more izraziti GRE
Obrazec za posredovanje, ki sprejme samo TCP in UDP, ne more opisati GRE, kakor koli se obrazec imenuje. Prevajanje naslovov doda drugo težavo, ker GRE nima vrat in mora prevajalnik namesto tega slediti identifikatorju klica. Nekateri domači usmerjevalniki imajo pomočnika, ki to obvlada; mnogi ne, in noben dodatni vnos dovoljenja TCP ne bo ustvaril takega vedenja.
Kjer je resnična zahteva sodoben tunel, izberite zasnovo, ki namerno uporablja TCP ali UDP, namesto da bi upali, da bo prevajalnik pravilno uganil.
Inkapsulacija odloča, kaj vidi filter
Inkapsulacija spremeni zunanji paket, in pravilo se ujema prav z zunanjim paketom. Izvorni ESP je protokol 50, medtem ko prehod NAT ovije ESP v UDP 4500, da preživi prevajanje naslovov. Filter, ki dovoli UDP 4500, nikoli ne vidi protokola 50, in filter, napisan za protokol 50, se nikoli ne ujema z ovito obliko.
Vprašajte, o kateri inkapsulaciji sta se dogovorila odjemalec in prehod, nato napišite pravilo za točno tisto zunanjo obliko in nič več.
Napišite pravilo tako, da ga lahko nekdo preveri
Vsako pravilo izrazite kot družino naslovov, zunanji protokol, transportna vrata, če obstajajo, smer in obe končni točki. Pregledovalec lahko to poved primerja s posnetkom paketov in pride do sodbe. Navodila za odpiranje 47 ne more preveriti nihče, in zato preživi leta v priročnikih postopkov.
Dodajte preizkus, ki to dokaže: povežite se, medtem ko zajemate na zunanjem vmesniku, in potrdite zunanji protokol in vrata, ki se resnično pojavita na sledi.